2012-10-03 5 views
0

야외에서 알파 레스코 페이지에 표시 할 수있는 모든 파일의 번호를 알고 싶다면 어떻게해야합니까?alfresco 데이터베이스에서 데이터를 표시하는 방법?

이제 데이터베이스에 대한 API 액세스가 없으므로 API를 찾으면 어떻게해야합니까?

+3

데이터베이스와 직접 대화하고 싶지는 않습니다. 원하는 작업에 따라 SearchService, NodeService 또는 FileFolderService와 같은 것을 사용하려고합니다. "모든 파일의 수"라고 말하면, cm : 콘텐츠 노드의 수를 의미합니까? 총 노드 수는 얼마입니까? 사이트의 cm : number 노드 수? 등 – Gagravarr

+0

덕분에 많이 @ Gagravarr, 이제 FileFolderService에서 FileFolderService를 사용해야한다는 것을 알고 있습니다. [link] (http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/service/) cmr/model/FileFolderService.html), listFiles 메소드를 사용해야합니까? 확실하지 않습니다. 어떻게하면 저장소 alfresco의 모든 파일을 볼 수있는 메서드를 시도합니까? – Mark

+0

"저장소의 모든 파일"은 무엇을 의미합니까? 이전에 말한 것처럼, cm : 콘텐츠 노드의 수를 의미합니까? 총 노드 수는 얼마입니까? 사이트의 cm : number 노드 수? – Gagravarr

답변

1

쉬운 방법, 당신은 API에 의해 데이터베이스의 모든 유형을 조회 할 수 있습니다 localhost:8080/alfresco/service/cmis/query?q={q}
q는 야외에 대한 CMIS 쿼리 언어입니다. 예제는 모든 문서

에 대한 모든 속성이 내 경험에 따르면 CMIS Query Language

3

는이 같은 SearchService에 쿼리를 만들 수 있습니다

SearchParameters params = new SearchParameters(); 
params.getStores().add(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE); 
params.setLanguage(SearchService.LANGUAGE_FTS_ALFRESCO); 
params.setQuery("TYPE:cm\\:content AND PATH:\"/app\\:company_home/st\\:sites/cm\\:test/cm\\:documentLibrary//*\""); 
ResultSet result = searchService.query(params); 
System.out.println(result.length()); 

그러나 나는 그것이 성능을위한 최적화 된 방법을 모르겠어요.

1

더 때때로 데이터베이스에서 같은 정보를 얻기 위해 더보고 선택 SELECT * FROM cmis:document.

정보 : 내 현재 프로젝트에서 우리는 50000 개 이상의 문서를 가지고 있으며 모니터링을 위해 정확한 번호를 얻어야합니다.

여기 어떤 경우에서 DB 쿼리를 사용하는 몇 가지 포인트입니다 :

  1. CMIS가 (많이) 느린 (내 경우에 쿼리 당 ~ 1~2초했다). @ lightsoze가 SearchService을 사용할 수 있다고 제안 했으므로 ResultSet의 문서를 얻을 수 있으므로 length 메서드를 호출해야합니다. 그 수는 SQL 호출보다 시간이 많이 걸리는 것으로 생각됩니다. 그리고 제 경우에는 5 분마다 전화를합니다.

  2. 일부 쿼리의 결과를 1000 개 워드로 제한하는 5.0.c에는 bug이 있습니다.

Here 당신은 데이터베이스와 here에 환매 특약 문서의 총 수를 포함하여 몇 가지 흥미로운 쿼리를 연결하는 방법을 찾을 수 있습니다.

관련 문제