2014-01-20 17 views
1

오늘을 사용하여 프레스코의 특정 속성을 포함 모든 문서를 가져옵니다. 문서를 캡처dotcmis에게 내가 dotcmis를 사용하여 야외에서 특정 속성을 포함 모든 문서를 얻기위한 좋은 방법을 찾고 있었다

  • 사용 Ephesoft (http://www.ephesoft.com/) : 나는에 생각

    .

  • cmhe 통합을 사용하여 Alfresco와 Ephesoft를 연결하십시오.
  • 야외 모델 (메타 데이터 문서)과 일치하도록 문서 속성 구성
  • 특정 속성 (메타 데이터)이있는 모든 문서를 검색하려면 webapplication (asp.net)의 모듈을 개발하십시오. 사용 dotcmis (http://chemistry.apache.org/dotnet/dotcmis.html)

나는 finded :

  • 를 세션을 생성하는 방법.
  • 방법 목록 트리 폴더를 제외

... 특정 속성 (메타 데이터) 잘 살고 있다면 어떻게 모든 문서를 확인?

어떻게 알 수 있습니까?


감사합니다. pablochan! 이 순간에 , 난이 :

public ISession Connect(string user, string password, string servicesUrl, string repositoryId) 
    { 
     IDictionary<string, string> parameter = new Dictionary<string, string>(); 

     parameter.Add(DotCMIS.SessionParameter.User, user); 
     parameter.Add(DotCMIS.SessionParameter.Password, password); 
     parameter.Add(DotCMIS.SessionParameter.BindingType, DotCMIS.BindingType.WebServices); 
     parameter.Add(DotCMIS.SessionParameter.WebServicesAclService, (servicesUrl + "ACLService?wsdl").ToString()); 
     parameter.Add(DotCMIS.SessionParameter.WebServicesDiscoveryService, (servicesUrl + "DiscoveryService?wsdl").ToString()); 
     parameter.Add(DotCMIS.SessionParameter.WebServicesMultifilingService, (servicesUrl + "MultiFilingService?wsdl").ToString()); 
     parameter.Add(DotCMIS.SessionParameter.WebServicesNavigationService, (servicesUrl + "NavigationService?wsdl").ToString()); 
     parameter.Add(DotCMIS.SessionParameter.WebServicesObjectService, (servicesUrl + "ObjectService?wsdl").ToString()); 
     parameter.Add(DotCMIS.SessionParameter.WebServicesPolicyService, (servicesUrl + "PolicyService?wsdl").ToString()); 
     parameter.Add(DotCMIS.SessionParameter.WebServicesRelationshipService, (servicesUrl + "RelationshipService?wsdl").ToString()); 
     parameter.Add(DotCMIS.SessionParameter.WebServicesRepositoryService, (servicesUrl + "RepositoryService?wsdl").ToString()); 
     parameter.Add(DotCMIS.SessionParameter.WebServicesVersioningService, (servicesUrl + "VersioningService?wsdl").ToString()); 
     parameter.Add(DotCMIS.SessionParameter.RepositoryId, (repositoryId)); 

     ISessionFactory factory = DotCMIS.Client.Impl.SessionFactory.NewInstance(); 
     return factory.CreateSession(parameter); 
    } 

    public List<CMISIntegrationResponse> GetFiles(CMISIntegrationRequest request) 
    { 
     List<CMISIntegrationResponse> cmisIntegrationResponseList = new List<CMISIntegrationResponse>(); 

     ISession session = Connect(request.UserName, request.Password, request.ServicesUrl, request.RepositoryId); 

     IItemEnumerable<IQueryResult> result = session.Query(@"SELECT 
                   cmis:name, cmis:objectId, cmis:baseTypeId, cmis:objectTypeId, cmis:createdBy, 
                   cmis:lastModifiedBy, cmis:lastModificationDate,cmis:contentStreamMimeType, 
                   cmis:contentStreamFileName,cmis:contentStreamId,cmis:contentStreamLength 
                   FROM cmis:document 
                   ORDER BY 
                   cmis:name, cmis:createdBy", false); 

     foreach(QueryResult item in result) 
     { 
      if (item.AllowableActions.Actions.Contains(DotCMIS.Actions.CanGetContentStream)) 
      { 
       foreach (DotCMIS.Data.IPropertyData property in item.Properties) 
       { 

        /*AccountNumber will be a property/metadata of any document 
         In this point i can not see any property/metadata called "AccountNumber" 
        */ 

        if (property.DisplayName.Equals("AccountNumber")) 
        { 
         CMISIntegrationResponse response = new CMISIntegrationResponse(); 
         response.Name = item.GetPropertyValueByQueryName("cmis:name").ToString(); 
         response.ObjectId = item.GetPropertyValueByQueryName("cmis:objectId").ToString(); 
         response.BaseTypeId = item.GetPropertyValueByQueryName("cmis:baseTypeId").ToString(); 
         response.ObjectTypeId = item.GetPropertyValueByQueryName("cmis:objectTypeId").ToString(); 
         response.CreatedBy = item.GetPropertyValueByQueryName("cmis:createdBy").ToString(); 
         response.LastModifiedBy = item.GetPropertyValueByQueryName("cmis:lastModifiedBy").ToString(); 
         response.LastModificationDate = item.GetPropertyValueByQueryName("cmis:lastModificationDate").ToString(); 
         response.ContentStreamMimeType = item.GetPropertyValueByQueryName("cmis:contentStreamMimeType").ToString(); 
         response.ContentStreamFileName = item.GetPropertyValueByQueryName("cmis:contentStreamFileName").ToString(); 
         response.ContentStreamId = item.GetPropertyValueByQueryName("cmis:contentStreamId").ToString(); 
         response.ContentStreamLength = item.GetPropertyValueByQueryName("cmis:contentStreamLength").ToString(); 

         cmisIntegrationResponseList.Add(response); 
        } 
       } 
      } 
     } 

     session.Clear(); 
     return cmisIntegrationResponseList; 
    } 

는 어디에서 가상 테이블과 CMIS 프레스코 자신의 열 목록을 볼 수 있습니까?

감사합니다.

답변

1

당신은 프레스코로 CMIS 쿼리를 보낼 수 있습니다. 나는 reading about CMIS Query Language first을 추천한다. 그 후 read the dotCMIS guide.

의 당신이 예를 들면, 당신의 분야로 정의 된 유형 또는 측면을 가지고 있다고 가정 해 봅시다 my : aspect와 my : 필드.

쿼리는 다음과 같이 수 :

SELECT * FROM my:aspect WHERE my:field = "some value" 

이 코드는 다음과 같습니다

session.Query("SELECT * FROM my:aspect WHERE my:field = 'some value'", false); 

편집 :

좋아, 난 당신의 코드를 읽고 I didn를 한 가지 더있다 언급하지 마라. 필드 (계정 번호)가 표시되지 않는 이유는 쿼리 결과에 쿼리 유형/특성 (이 경우 cmis : 개체)에 대해 정의 된 필드 만 포함되어 있기 때문입니다. "AccountNumber"에 대해 쿼리하려면 해당 유형/애스펙트를 알아야합니다.

"AccountNumber"유형이 "custom : myType"유형으로 정의되어 있다고 가정 해 봅시다. 쿼리는 다음과 같습니다.

SELECT * from custom:myType 

결과에 "AccountNumber"가 포함됩니다.

필드가 측면에 정의되어있는 경우, 당신이 쿼리를 할 수있는 가입 : http://wiki.alfresco.com/wiki/CMIS#Aspect_Query

도움이 되었기를 바랍니다.

+0

내가 보겠습니다 ... 감사합니다 !!! –

+0

감사합니다 !!!!!!!!! –

1

여기서 가상 테이블 목록과 CMIS Alfresco의 열을 볼 수 있습니까?

가장 좋은 방법은 Apache Chemistry에서 OpenCMIS Workbench를 다운로드하는 것입니다. 시작하여 Alfresco에 연결 한 다음 유형을 클릭하십시오. 그러면 Workbench는 저장소가 알고있는 유형의 계층 적 목록을 표시합니다.

그런 다음 워크 벤치에 관심이있는 특정 유형을 누르면 해당 유형의 특성이 표시됩니다. 스크롤하면 '검색어 가능한'항목이 표시됩니다. 해당 열이 true이면 해당 속성의 값을 테스트하는 쿼리를 작성할 수 있습니다. 쿼리에서 속성의 "쿼리 이름"을 사용하십시오.