コード例 #1
0
ファイル: ECMService.cs プロジェクト: war-man/TimeCard
        public static EcmResult CreateFolder(DocumentModel doc, string folderName, string parentFolder, string folderClass)
        {
            EcmResult ret = new EcmResult();

            if (doc.IsUseCert == 1)
            {
                Addcert(doc.EcmUrl);
            }

            CEWSI.ChangeRequestType objChange  = new CEWSI.ChangeRequestType();
            CEWSI.CreateAction      createVerb = new CEWSI.CreateAction();
            createVerb.classId                     = folderClass;
            objChange.Action                       = new CEWSI.ActionType[1];
            objChange.Action[0]                    = (CEWSI.ActionType)createVerb;
            objChange.TargetSpecification          = new CEWSI.ObjectReference();
            objChange.TargetSpecification.classId  = "ObjectStore";
            objChange.TargetSpecification.objectId = doc.ObjectStore;
            objChange.id = "1";

            CEWSI.ModifiablePropertyType[] objInputProps = new CEWSI.ModifiablePropertyType[2];
            objChange.ActionProperties = objInputProps;

            // Build a list of properties to set in the new folder (just the folder name and parent for now)
            //    -Folder name property
            CEWSI.SingletonString objString = new CEWSI.SingletonString();
            objString.Value      = folderName;
            objString.propertyId = "FolderName";
            objInputProps[0]     = objString;

            //    -Parent property
            CEWSI.ObjectSpecification objSpec   = new CEWSI.ObjectSpecification();
            CEWSI.SingletonObject     objObject = new CEWSI.SingletonObject();
            objSpec.classId      = "Folder";
            objSpec.path         = parentFolder;
            objSpec.objectStore  = doc.ObjectStore;
            objObject.propertyId = "Parent";
            objObject.Value      = (CEWSI.ObjectEntryType)objSpec;
            objInputProps[1]     = objObject;

            // Fill in the security headers...
            CEWSI.FNCEWS40PortTypeClient objBinding = WSIUtil.ConfigureBinding(doc.EcmUser, doc.EcmDomain, doc.EcmPassword, doc.EcmUrl);

            // Send off the request
            CEWSI.ChangeResponseType[]  objResponseArray = null;
            CEWSI.ExecuteChangesRequest objRequest       = new CEWSI.ExecuteChangesRequest();
            objRequest.refresh          = true;
            objRequest.refreshSpecified = true;
            objRequest.ChangeRequest    = new CEWSI.ChangeRequestType[1];
            objRequest.ChangeRequest[0] = objChange;
            try
            {
                objResponseArray = objBinding.ExecuteChanges(WSIUtil.GetLocalization(), objRequest);
            }
            catch (System.Net.WebException ex)
            {
                ret.ErrorCode = -1;
                ret.ErrorMsg  = ex.ToString();
                return(ret);
            }
            catch (Exception allEx)
            {
                ret.ErrorCode = -1;
                ret.ErrorMsg  = allEx.ToString();
                return(ret);
            }

            // Created a folder!  Sanity check the results
            string strObjectId = "";
            bool   bFound      = false;

            if (objResponseArray == null || objResponseArray.Length < 1)
            {
                ret.ErrorCode = 0;
                ret.ErrorMsg  = "The change request was executed, but a valid object was not returned";
                return(ret);
            }
            CEWSI.ChangeResponseType objResponse = objResponseArray[0];
            foreach (CEWSI.PropertyType objProp in objResponse.Property)
            {
                if (objProp.propertyId.CompareTo("Id") == 0)
                {
                    strObjectId = IdmObjectType.getPropertyValue(objProp);
                    bFound      = true;
                    break;
                }
            }
            if (!bFound)
            {
                ret.ErrorCode = 0;
                ret.ErrorMsg  = "The folder was created, but the results do not contain a folder ID";
                return(ret);
            }
            ret.ErrorCode = 1;
            ret.ErrorMsg  = "Successfully created a folder";
            ret.DocId     = strObjectId;
            return(ret);
        }
コード例 #2
0
ファイル: ECMService.cs プロジェクト: war-man/TimeCard
        private static EcmResult FileDoc(EcmInfo info)
        {
            EcmResult ret = new EcmResult();

            // Create a Create verb, populate it to create a new RCR
            CEWSI.CreateAction createVerb = new CEWSI.CreateAction();
            createVerb.autoUniqueContainmentName          = true;
            createVerb.autoUniqueContainmentNameSpecified = true;
            createVerb.classId = "DynamicReferentialContainmentRelationship";

            CEWSI.ChangeRequestType objChange = new CEWSI.ChangeRequestType();
            objChange.Action                       = new CEWSI.ActionType[1];
            objChange.Action[0]                    = (CEWSI.ActionType)createVerb;
            objChange.TargetSpecification          = new CEWSI.ObjectReference();
            objChange.TargetSpecification.classId  = "ObjectStore";
            objChange.TargetSpecification.objectId = info.ObjectStore;
            objChange.id = "1";

            // Create the properties of the new RCR
            CEWSI.ObjectReference objHeadRef = new CEWSI.ObjectReference();
            objHeadRef.classId     = info.DocClass;
            objHeadRef.objectId    = info.DocId;
            objHeadRef.objectStore = info.ObjectStore;
            CEWSI.SingletonObject propHead = new CEWSI.SingletonObject();
            propHead.propertyId = "Head";
            propHead.Value      = (CEWSI.ObjectEntryType)objHeadRef;

            CEWSI.ObjectReference objTailRef = new CEWSI.ObjectReference();
            objTailRef.classId     = "Folder";
            objTailRef.objectId    = info.FolderPath;
            objTailRef.objectStore = info.ObjectStore;
            CEWSI.SingletonObject propTail = new CEWSI.SingletonObject();
            propTail.propertyId = "Tail";
            propTail.Value      = (CEWSI.ObjectEntryType)objTailRef;

            CEWSI.SingletonString propContainmentName = new CEWSI.SingletonString();
            propContainmentName.propertyId = "ContainmentName";
            propContainmentName.Value      = info.DocTitle;

            CEWSI.ModifiablePropertyType[] objProps = new CEWSI.ModifiablePropertyType[3];
            objProps[0] = propTail;
            objProps[1] = propHead;
            objProps[2] = propContainmentName;
            objChange.ActionProperties = objProps;

            // Fill in the security headers...
            CEWSI.FNCEWS40PortTypeClient objBinding = WSIUtil.ConfigureBinding(info.User, info.Domain, info.Password, info.Url);

            // Send off the request
            CEWSI.ChangeResponseType[]  objResponseArray = null;
            CEWSI.ExecuteChangesRequest objRequest       = new CEWSI.ExecuteChangesRequest();
            objRequest.refresh          = false;
            objRequest.refreshSpecified = true;
            objRequest.ChangeRequest    = new CEWSI.ChangeRequestType[1];
            objRequest.ChangeRequest[0] = objChange;
            try
            {
                objResponseArray = objBinding.ExecuteChanges(WSIUtil.GetLocalization(), objRequest);
            }
            catch (System.Net.WebException ex)
            {
                //Console.WriteLine("An exception occurred while filing a document: [" + ex.Message + "]");
                //Console.ReadLine();
                ret.ErrorCode = -1;
                ret.ErrorMsg  = ex.ToString();
                return(ret);
            }
            //catch (Exception allEx)
            //{
            //    //Console.WriteLine("An exception occurred: [" + allEx.Message + "]");
            //    //Console.ReadLine();
            //    return false;
            //}

            //Console.WriteLine("Successfully filed a document!");
            //Console.ReadLine();
            ret.ErrorCode = 1;
            ret.ErrorMsg  = "Successfully filed a document!";
            return(ret);
        }
コード例 #3
0
ファイル: ECMService.cs プロジェクト: war-man/TimeCard
        public static bool Deletedoc(DocumentModel doc, string docId, int taskId, string userName)
        {
            EcmResult ret = new EcmResult();

            //string mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
            //bool isCheckin = false;
            if (doc.IsUseCert == 1)
            {
                Addcert(doc.EcmUrl);
            }

            CEWSI.FNCEWS40PortTypeClient objBinding = WSIUtil.ConfigureBinding(doc.EcmUser, doc.EcmDomain, doc.EcmPassword, doc.EcmUrl);

            CEWSI.ObjectStoreScope objObjectStoreScope = new CEWSI.ObjectStoreScope();
            objObjectStoreScope.objectStore = doc.ObjectStore;

            // Create RepositorySearch
            CEWSI.RepositorySearch objRepositorySearch = new CEWSI.RepositorySearch();
            objRepositorySearch.repositorySearchMode          = CEWSI.RepositorySearchModeType.Rows;
            objRepositorySearch.repositorySearchModeSpecified = true;
            objRepositorySearch.SearchScope = objObjectStoreScope;

            objRepositorySearch.SearchSQL = "SELECT [DocumentTitle],[Id],[DateLastModified],bpmCodeLarge FROM " + doc.DocumentClass + " WHERE Id='" + docId + "' AND bpmCode='" + taskId.ToString() + "' AND NguoiTao='" + userName + "' ORDER BY [DateLastModified]";


            // Invoke the ExecuteSearch operation
            CEWSI.ObjectSetType objObjectSet = objBinding.ExecuteSearch(WSIUtil.GetLocalization(), objRepositorySearch);

            // Display the Document Titles
            int hitCount = (objObjectSet.Object == null) ? 0 : objObjectSet.Object.Length;

            if (hitCount == 0)
            {
                return(true);
            }

            CEWSI.DeleteAction docUnfile = new CEWSI.DeleteAction();

            // Assign the action to the ChangeRequestType element
            CEWSI.ChangeRequestType[] objChangeRequestTypeArray = new CEWSI.ChangeRequestType[1];
            CEWSI.ChangeRequestType   objChangeRequestType      = new CEWSI.ChangeRequestType();
            objChangeRequestTypeArray[0] = objChangeRequestType;

            // Create ChangeResponseType element array
            CEWSI.ChangeResponseType[] objChangeResponseTypeArray;

            // Build ExecuteChangesRequest element and assign ChangeRequestType element array to it
            CEWSI.ExecuteChangesRequest objExecuteChangesRequest = new CEWSI.ExecuteChangesRequest();
            objExecuteChangesRequest.ChangeRequest    = objChangeRequestTypeArray;
            objExecuteChangesRequest.refresh          = true; // return a refreshed object
            objExecuteChangesRequest.refreshSpecified = true;

            objChangeRequestType.Action    = new CEWSI.ActionType[1];
            objChangeRequestType.Action[0] = (CEWSI.ActionType)docUnfile;

            // Specify the target object (Reservation object) for the actions
            objChangeRequestType.TargetSpecification             = new CEWSI.ObjectReference();
            objChangeRequestType.TargetSpecification.classId     = doc.DocumentClass;
            objChangeRequestType.TargetSpecification.objectId    = docId;
            objChangeRequestType.TargetSpecification.objectStore = doc.ObjectStore;
            objChangeRequestType.id = "1";

            // Assign ChangeRequestType element
            objChangeRequestTypeArray[0] = objChangeRequestType;

            // Build ExecuteChangesRequest element and assign ChangeRequestType element array to it
            objExecuteChangesRequest.ChangeRequest    = objChangeRequestTypeArray;
            objExecuteChangesRequest.refresh          = true; // return a refreshed object
            objExecuteChangesRequest.refreshSpecified = true;

            try
            {
                // Call ExecuteChanges operation to implement the Delete object
                objChangeResponseTypeArray = objBinding.ExecuteChanges(WSIUtil.GetLocalization(), objExecuteChangesRequest);
            }
            catch (System.Net.WebException ex)
            {
                Console.WriteLine("An exception occurred while checking out a document: [" + ex.Message + "]");
                return(false);
            }
            catch (Exception ex)
            {
                Console.WriteLine("An exception : [" + ex.Message + "]");
                return(false);
            }

            // The new document object will be returned, unless there is an error
            if (objChangeResponseTypeArray == null || objChangeResponseTypeArray.Length < 1)
            {
                Console.WriteLine("A valid object was not returned from the ExecuteChanges operation");
                return(false);
            }

            return(true);
        }
コード例 #4
0
ファイル: ECMService.cs プロジェクト: war-man/TimeCard
        public static EcmResult CreateDoc(DocumentModel doc)
        {
            EcmResult ret = new EcmResult();

            //string mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
            bool isCheckin = false;

            if (doc.IsUseCert == 1)
            {
                Addcert(doc.EcmUrl);
            }

            CEWSI.FNCEWS40PortTypeClient objBinding = WSIUtil.ConfigureBinding(doc.EcmUser, doc.EcmDomain, doc.EcmPassword, doc.EcmUrl);

            CEWSI.CreateAction createVerb = new CEWSI.CreateAction();
            createVerb.classId = doc.DocumentClass;

            CEWSI.CheckinAction checkinVerb = new CEWSI.CheckinAction();
            if (isCheckin)
            {
                checkinVerb.checkinMinorVersion          = true;
                checkinVerb.checkinMinorVersionSpecified = true;
            }

            CEWSI.ChangeRequestType objChange = new CEWSI.ChangeRequestType();
            objChange.Action    = new CEWSI.ActionType[2];
            objChange.Action[0] = (CEWSI.ActionType)createVerb;
            objChange.Action[1] = (CEWSI.ActionType)checkinVerb;

            objChange.TargetSpecification          = new CEWSI.ObjectReference();
            objChange.TargetSpecification.classId  = "ObjectStore";
            objChange.TargetSpecification.objectId = doc.ObjectStore;
            objChange.id = "1";

            int propLength = doc.Properties != null && doc.Properties.Count > 0 ? doc.Properties.Count + 1 : 1;

            CEWSI.ModifiablePropertyType[] objInputProps = new CEWSI.ModifiablePropertyType[propLength];

            #region properties have the must
            CEWSI.PropertyType[] ctProps = new CEWSI.PropertyType[3];

            CEWSI.SingletonString typeProp = new CEWSI.SingletonString();
            typeProp.propertyId = "ContentType";
            typeProp.Value      = doc.MimeTypeSource;
            ctProps[0]          = typeProp;

            CEWSI.DependentObjectType ct = new CEWSI.DependentObjectType();
            ct.dependentAction          = CEWSI.DependentObjectTypeDependentAction.Insert;
            ct.dependentActionSpecified = true;

            CEWSI.SingletonString nameProp = new CEWSI.SingletonString();
            nameProp.propertyId = "RetrievalName";
            nameProp.Value      = doc.FileName;
            ctProps[1]          = nameProp;

            CEWSI.ContentData contData = new CEWSI.ContentData();
            contData.propertyId = "Content";

            CEWSI.InlineContent ic = new CEWSI.InlineContent();
            ic.Binary = doc.BinaryFile;

            contData.Value = ic;
            ctProps[2]     = contData;

            ct.classId = "ContentTransfer";

            //	create content object list
            ct.Property = ctProps;
            CEWSI.DependentObjectType[] contentObjects = new CEWSI.DependentObjectType[1];
            contentObjects[0] = ct;

            //	Create the content element list and set it into the document's properties
            CEWSI.ListOfObject objContentList = new CEWSI.ListOfObject();
            objContentList.propertyId = "ContentElements";
            objContentList.Value      = contentObjects;
            objInputProps[0]          = objContentList;
            #endregion

            if (doc.Properties != null && doc.Properties.Count > 0)
            {
                int i = 1;
                foreach (var p in doc.Properties)
                {
                    CEWSI.SingletonString objProp = new CEWSI.SingletonString();
                    objProp.propertyId = p.Key;
                    objProp.Value      = p.Value;
                    objInputProps[i++] = objProp;
                }
            }

            objChange.ActionProperties = objInputProps;

            // Send off the request
            CEWSI.ChangeResponseType[]  objResponseArray = null;
            CEWSI.ExecuteChangesRequest objRequest       = new CEWSI.ExecuteChangesRequest();
            objRequest.refresh          = true;
            objRequest.refreshSpecified = true;
            objRequest.ChangeRequest    = new CEWSI.ChangeRequestType[1];
            objRequest.ChangeRequest[0] = objChange;
            try
            {
                objResponseArray = objBinding.ExecuteChanges(WSIUtil.GetLocalization(), objRequest);
            }
            catch (System.Net.WebException ex)
            {
                //Console.WriteLine("An exception occurred while creating a document: [" + ex.Message + "]");
                ret.ErrorCode = -1;
                ret.ErrorMsg  = ex.ToString();
                return(ret);
            }
            catch (Exception allEx)
            {
                //Console.WriteLine("An exception occurred: [" + allEx.Message + "]");
                ret.ErrorCode = -1;
                ret.ErrorMsg  = allEx.ToString();
                return(ret);
            }

            // Created a document!  Sanity check the results
            string strObjectId = "";
            bool   bFound      = false;

            if (objResponseArray == null || objResponseArray.Length < 1)
            {
                ret.ErrorCode = 0;
                ret.ErrorMsg  = "The change request was executed, but a valid object was not returned";
                return(ret);
            }
            CEWSI.ChangeResponseType objResponse = objResponseArray[0];
            foreach (CEWSI.PropertyType objProp in objResponse.Property)
            {
                if (objProp.propertyId.CompareTo("Id") == 0)
                {
                    strObjectId = IdmObjectType.getPropertyValue(objProp);
                    bFound      = true;
                    break;
                }
            }
            if (!bFound)
            {
                ret.ErrorCode = 0;
                ret.ErrorMsg  = "The document was created, but the results do not contain a document ID";
                return(ret);
            }

            //Console.WriteLine("Successfully created a document!  ID = [" + strObjectId + "].  Now filing.");

            ret = FileDoc(new EcmInfo
            {
                DocId       = strObjectId,
                DocClass    = doc.DocumentClass,
                DocTitle    = doc.FileName,
                FolderPath  = doc.DestinationFolder,
                ObjectStore = doc.ObjectStore,
                User        = doc.EcmUser,
                Domain      = doc.EcmDomain,
                Password    = doc.EcmPassword,
                Url         = doc.EcmUrl
            });
            ret.DocId    = strObjectId;
            ret.FileName = doc.FileName;
            ret.Mime     = doc.MimeTypeSource;

            return(ret);
        }