/// <summary> /// Restituisce un DataObject con tutte le proprietà di un oggetto DCTM e /// l'insieme dei folder a cui è linkato (quest'ultimi solo come identity però) /// </summary> /// <param name="objSrvc"></param> /// <param name="documentIdentity"></param> /// <param name="propertyNames">null == TUTTE; altrimenti quelle indicate. OKKIO: in nessun caso restituisce r_object_id !!</param> /// <returns></returns> public static DataObject getAllPropsAndFolders(IObjectService objSrvc, ObjectIdentity objectIdentity, List <string> propertyNames, bool includeFolders) { DataPackage pkg = new DataPackage(); ObjectIdentitySet objectIdSet = new ObjectIdentitySet(objectIdentity); PropertyProfile propertyProfile = null; //propertyProfile.filterModeSpecified = true; if (propertyNames == null) { propertyProfile = new PropertyProfile(PropertyFilterMode.ALL); } else { propertyProfile = new PropertyProfile(PropertyFilterMode.SPECIFIED_BY_INCLUDE); propertyProfile.IncludeProperties = propertyNames; } RelationshipProfile relationProfile = new RelationshipProfile(); if (includeFolders) { //TODO: bug di DFS60sp1: // se specifico che voglio solo le relazioni parent non funziona // devo chiedere tutte le relazioni //relationProfile.ResultDataMode = ResultDataMode.REFERENCE; //relationProfile.TargetRoleFilter = TargetRoleFilter.ANY; //relationProfile.NameFilter = RelationshipNameFilter.ANY; //relationProfile.DepthFilter = DepthFilter.UNLIMITED; // proposta di Azzalini per velocizzare eliminazione documento in Fascicolo con DCTM 6.7 relationProfile.ResultDataMode = ResultDataMode.REFERENCE; relationProfile.TargetRoleFilter = TargetRoleFilter.SPECIFIED; relationProfile.TargetRole = Relationship.ROLE_PARENT; relationProfile.NameFilter = RelationshipNameFilter.SPECIFIED; relationProfile.RelationName = Relationship.RELATIONSHIP_FOLDER; relationProfile.DepthFilter = DepthFilter.SPECIFIED; relationProfile.Depth = 1; } OperationOptions operationOptions = new OperationOptions(); //operationOptions.Profiles = new Profile[profilesCount]; operationOptions.PropertyProfile = propertyProfile; if (includeFolders) { operationOptions.RelationshipProfile = relationProfile; } pkg = objSrvc.Get(objectIdSet, operationOptions); return(pkg.DataObjects[0]); }
public DataPackage CreateFolderAndLinkedDoc() { // create a folder data object String folderName = "a-test-folder-" + System.DateTime.Now.Ticks; DataObject folderDataObj = new DataObject(new ObjectIdentity(DefaultRepository), "dm_folder"); PropertySet folderDataObjProperties = new PropertySet(); folderDataObjProperties.Set("object_name", folderName); folderDataObj.Properties = folderDataObjProperties; // create a contentless document DataObject String doc1Name = "a-test-doc-" + System.DateTime.Now.Ticks; DataObject docDataObj = new DataObject(new ObjectIdentity(DefaultRepository), "dm_document"); PropertySet properties = new PropertySet(); properties.Set("object_name", doc1Name); docDataObj.Properties = properties; // add the folder as a parent of the folder ObjectRelationship objRelationship = new ObjectRelationship(); objRelationship.Target = folderDataObj; objRelationship.Name = Relationship.RELATIONSHIP_FOLDER; objRelationship.TargetRole = Relationship.ROLE_PARENT; docDataObj.Relationships.Add(new ObjectRelationship(objRelationship)); // set up the relationship filter to return the doc and folder RelationshipProfile relationProfile = new RelationshipProfile(); relationProfile.ResultDataMode = ResultDataMode.REFERENCE; relationProfile.TargetRoleFilter = TargetRoleFilter.ANY; relationProfile.NameFilter = RelationshipNameFilter.ANY; relationProfile.DepthFilter = DepthFilter.SPECIFIED; relationProfile.Depth = 2; OperationOptions operationOptions = new OperationOptions(); operationOptions.RelationshipProfile = relationProfile; // create the folder and linked document DataPackage dataPackage = new DataPackage(); dataPackage.AddDataObject(docDataObj); return(objectService.Create(dataPackage, operationOptions)); }
public DataObject GetObjectFilterRelationsParentOnly(ObjectIdentity objIdentity) { // set up relation profile to return only immediate parent RelationshipProfile relationProfile = new RelationshipProfile(); relationProfile.ResultDataMode = ResultDataMode.REFERENCE; relationProfile.TargetRoleFilter = TargetRoleFilter.SPECIFIED; relationProfile.TargetRole = Relationship.ROLE_PARENT; relationProfile.NameFilter = RelationshipNameFilter.ANY; relationProfile.DepthFilter = DepthFilter.SPECIFIED; relationProfile.Depth = 1; OperationOptions operationOptions = new OperationOptions(); operationOptions.RelationshipProfile = relationProfile; ObjectIdentitySet objectIdSet = new ObjectIdentitySet(objIdentity); DataPackage dataPackage = objectService.Get(objectIdSet, operationOptions); return(dataPackage.DataObjects[0]); }
/// <summary> /// Restituisce i folders ai quali l'oggetto è linkato (direttamente). /// In realtà sembra che DFS60sp1 abbia un bug: non posso imporre nessuna limitazione /// nella query per le relationship, quindi per il momento vengono resituite tutte /// TODO: cercare solo le relazioni dirette e di tipo "folder" /// </summary> /// <param name="objSrvc"></param> /// <param name="documentIdentity"></param> /// <returns></returns> public static DataObject getParentFolders(IObjectService objSrvc, ObjectIdentity documentIdentity) { //TODO: bug di DFS60sp1: // se specifico che voglio solo le relazioni parent non funziona // devo chiedere tutte le relazioni RelationshipProfile relationProfile = new RelationshipProfile(); relationProfile.ResultDataMode = ResultDataMode.REFERENCE; relationProfile.TargetRoleFilter = TargetRoleFilter.ANY; relationProfile.NameFilter = RelationshipNameFilter.ANY; relationProfile.DepthFilter = DepthFilter.UNLIMITED; OperationOptions operationOptions = new OperationOptions(); operationOptions.RelationshipProfile = relationProfile; ObjectIdentitySet objectIdSet = new ObjectIdentitySet(documentIdentity); DataPackage pkg = objSrvc.Get(objectIdSet, operationOptions); return(pkg.DataObjects[0]); }
public DataObject GetObjectFilterRelationsParentOnly(ObjectIdentity objIdentity) { // set up relation profile to return only immediate parent RelationshipProfile relationProfile = new RelationshipProfile(); relationProfile.ResultDataMode = ResultDataMode.REFERENCE; relationProfile.TargetRoleFilter = TargetRoleFilter.SPECIFIED; relationProfile.TargetRole = Relationship.ROLE_PARENT; relationProfile.NameFilter = RelationshipNameFilter.ANY; relationProfile.DepthFilter = DepthFilter.SPECIFIED; relationProfile.Depth = 1; OperationOptions operationOptions = new OperationOptions(); operationOptions.RelationshipProfile = relationProfile; ObjectIdentitySet objectIdSet = new ObjectIdentitySet(objIdentity); DataPackage dataPackage = objectService.Get(objectIdSet, operationOptions); return dataPackage.DataObjects[0]; }
public DataPackage CreateFolderAndLinkedDoc() { // create a folder data object String folderName = "a-test-folder-" + System.DateTime.Now.Ticks; DataObject folderDataObj = new DataObject(new ObjectIdentity(DefaultRepository), "dm_folder"); PropertySet folderDataObjProperties = new PropertySet(); folderDataObjProperties.Set("object_name", folderName); folderDataObj.Properties = folderDataObjProperties; // create a contentless document DataObject String doc1Name = "a-test-doc-" + System.DateTime.Now.Ticks; DataObject docDataObj = new DataObject(new ObjectIdentity(DefaultRepository), "dm_document"); PropertySet properties = new PropertySet(); properties.Set("object_name", doc1Name); docDataObj.Properties = properties; // add the folder as a parent of the folder ObjectRelationship objRelationship = new ObjectRelationship(); objRelationship.Target = folderDataObj; objRelationship.Name = Relationship.RELATIONSHIP_FOLDER; objRelationship.TargetRole = Relationship.ROLE_PARENT; docDataObj.Relationships.Add(new ObjectRelationship(objRelationship)); // set up the relationship filter to return the doc and folder RelationshipProfile relationProfile = new RelationshipProfile(); relationProfile.ResultDataMode = ResultDataMode.REFERENCE; relationProfile.TargetRoleFilter = TargetRoleFilter.ANY; relationProfile.NameFilter = RelationshipNameFilter.ANY; relationProfile.DepthFilter = DepthFilter.SPECIFIED; relationProfile.Depth = 2; OperationOptions operationOptions = new OperationOptions(); operationOptions.RelationshipProfile = relationProfile; // create the folder and linked document DataPackage dataPackage = new DataPackage(); dataPackage.AddDataObject(docDataObj); return objectService.Create(dataPackage, operationOptions); }