示例#1
0
        public void ServerToClient(IWfProcess process, WfClientProcessInfoBase client)
        {
            client.ID = process.ID;
            client.ProcessDescriptorKey = process.Descriptor.Key;

            if (process.CurrentActivity != null)
            {
                client.CurrentActivityKey = process.CurrentActivity.Descriptor.Key;
            }

            client.CanWithdraw        = process.CanWithdraw;
            client.CanCancel          = process.CanCancel;
            client.CanPause           = process.CanPause;
            client.CanResume          = process.CanResume;
            client.CanRestore         = process.CanRestore;
            client.RelativeID         = process.RelativeID;
            client.RelativeUrl        = process.RelativeURL;
            client.ResourceID         = process.ResourceID;
            client.SearchID           = process.SearchID;
            client.StartTime          = process.StartTime;
            client.EndTime            = process.EndTime;
            client.Creator            = (WfClientUser)process.Creator.ToClientOguObject();
            client.OwnerDepartment    = (WfClientOrganization)process.OwnerDepartment.ToClientOguObject();
            client.Status             = process.Status.ToClientProcessStatus();
            client.Committed          = process.Committed;
            client.RuntimeProcessName = process.RuntimeProcessName;
            client.UpdateTag          = process.UpdateTag;

            if (process.HasParentProcess)
            {
                client.OwnerActivityID  = process.EntryInfo.OwnerActivity.ID;
                client.OwnerTemplateKey = process.EntryInfo.ProcessTemplate.Key;
            }

            if ((this.Filter & WfClientProcessInfoFilter.ProcessContext) != WfClientProcessInfoFilter.InstanceOnly)
            {
                Dictionary <string, object> processContext = client.ProcessContext;

                process.Context.ForEach(kp => processContext[kp.Key] = kp.Value);
            }

            if ((this.Filter & WfClientProcessInfoFilter.ApplicationRuntimeParameters) != WfClientProcessInfoFilter.InstanceOnly)
            {
                WfClientDictionaryConverter.Instance.ServerToClient(process.ApplicationRuntimeParameters, client.ApplicationRuntimeParameters);
            }

            //增加主线活动信息
            WfClientMainStreamActivityDescriptorCollectionConverter.Instance.ServerToClient(process.GetMainStreamActivities(false), client.MainStreamActivityDescriptors);
        }
示例#2
0
        public override IDictionary <string, object> Serialize(object obj, JavaScriptSerializer serializer)
        {
            WfClientProcessInfoBase     processInfo = (WfClientProcessInfoBase)obj;
            Dictionary <string, object> dictionary  = new Dictionary <string, object>();

            dictionary.AddNonDefaultValue("id", processInfo.ID);
            dictionary.AddNonDefaultValue("processDescriptorKey", processInfo.ProcessDescriptorKey);
            dictionary.AddNonDefaultValue("currentActivityKey", processInfo.CurrentActivityKey);
            dictionary.AddNonDefaultValue("runtimeProcessName", processInfo.RuntimeProcessName);
            dictionary.AddNonDefaultValue("committed", processInfo.Committed);
            dictionary.AddNonDefaultValue("creator", processInfo.Creator);
            dictionary.AddNonDefaultValue("ownerDepartment", processInfo.OwnerDepartment);
            dictionary.AddNonDefaultValue("relativeID", processInfo.RelativeID);
            dictionary.AddNonDefaultValue("resourceID", processInfo.ResourceID);
            dictionary.AddNonDefaultValue("relativeUrl", processInfo.RelativeUrl);
            dictionary.AddNonDefaultValue("searchID", processInfo.SearchID);
            dictionary.AddNonDefaultValue("ownerActivityID", processInfo.OwnerActivityID);
            dictionary.AddNonDefaultValue("ownerTemplateKey", processInfo.OwnerTemplateKey);
            dictionary.AddNonDefaultValue("startTime", processInfo.StartTime);
            dictionary.AddNonDefaultValue("endTime", processInfo.EndTime);
            dictionary.AddNonDefaultValue("status", processInfo.Status);
            dictionary.AddNonDefaultValue("authorizationInfo", processInfo.AuthorizationInfo);
            dictionary.AddNonDefaultValue("processContext", processInfo.ProcessContext);
            dictionary.AddNonDefaultValue("applicationRuntimeParameters", processInfo.ApplicationRuntimeParameters);
            dictionary.AddNonDefaultValue("canWithdraw", processInfo.CanWithdraw);
            dictionary.AddNonDefaultValue("canCancel", processInfo.CanCancel);
            dictionary.AddNonDefaultValue("canPause", processInfo.CanPause);
            dictionary.AddNonDefaultValue("canResume", processInfo.CanResume);
            dictionary.AddNonDefaultValue("canRestore", processInfo.CanRestore);

            dictionary.AddNonDefaultValue("currentOpinion", processInfo.CurrentOpinion);
            dictionary.AddNonDefaultValue("mainStreamActivityDescriptors", processInfo.MainStreamActivityDescriptors);
            dictionary.AddNonDefaultValue("updateTag", processInfo.UpdateTag);

            return(dictionary);
        }
示例#3
0
        public override object Deserialize(IDictionary <string, object> dictionary, Type type, JavaScriptSerializer serializer)
        {
            WfClientProcessInfoBase processInfo = this.CreateInstance(dictionary, type, serializer);

            processInfo.ID = dictionary.GetValue("id", string.Empty);
            processInfo.ProcessDescriptorKey = dictionary.GetValue("processDescriptorKey", string.Empty);
            processInfo.CurrentActivityKey   = dictionary.GetValue("currentActivityKey", string.Empty);
            processInfo.RuntimeProcessName   = dictionary.GetValue("runtimeProcessName", string.Empty);
            processInfo.Committed            = dictionary.GetValue("committed", true);
            processInfo.ProcessDescriptorKey = dictionary.GetValue("processDescriptorKey", string.Empty);
            processInfo.Creator           = JSONSerializerExecute.Deserialize <WfClientUser>(dictionary.GetValue("creator", (object)null));
            processInfo.OwnerDepartment   = JSONSerializerExecute.Deserialize <WfClientOrganization>(dictionary.GetValue("ownerDepartment", (object)null));
            processInfo.RelativeID        = dictionary.GetValue("relativeID", string.Empty);
            processInfo.ResourceID        = dictionary.GetValue("resourceID", string.Empty);
            processInfo.RelativeUrl       = dictionary.GetValue("relativeUrl", string.Empty);
            processInfo.SearchID          = dictionary.GetValue("searchID", string.Empty);
            processInfo.OwnerActivityID   = dictionary.GetValue("ownerActivityID", string.Empty);
            processInfo.OwnerTemplateKey  = dictionary.GetValue("ownerTemplateKey", string.Empty);
            processInfo.StartTime         = dictionary.GetValue("startTime", DateTime.MinValue);
            processInfo.EndTime           = dictionary.GetValue("endTime", DateTime.MinValue);
            processInfo.Status            = dictionary.GetValue("status", WfClientProcessStatus.NotRunning);
            processInfo.AuthorizationInfo = dictionary.GetValue("authorizationInfo", processInfo.AuthorizationInfo);
            processInfo.CanWithdraw       = dictionary.GetValue("canWithdraw", false);
            processInfo.CanCancel         = dictionary.GetValue("canCancel", false);
            processInfo.CanPause          = dictionary.GetValue("canPause", false);
            processInfo.CanResume         = dictionary.GetValue("canResume", false);
            processInfo.CanRestore        = dictionary.GetValue("canRestore", false);
            processInfo.CurrentOpinion    = JSONSerializerExecute.Deserialize <WfClientOpinion>(dictionary.GetValue("currentOpinion", (object)null));
            processInfo.UpdateTag         = dictionary.GetValue("updateTag", -1);

            JSONSerializerExecute.FillDeserializedDictionary(dictionary, "processContext", processInfo.ProcessContext);
            JSONSerializerExecute.FillDeserializedDictionary(dictionary, "applicationRuntimeParameters", processInfo.ApplicationRuntimeParameters);
            JSONSerializerExecute.FillDeserializedCollection(dictionary.GetValue("mainStreamActivityDescriptors", (object)null), processInfo.MainStreamActivityDescriptors);

            return(processInfo);
        }
        public void ServerToClient(IWfProcess process, WfClientProcessInfoBase client)
        {
            client.ID = process.ID;
            client.ProcessDescriptorKey = process.Descriptor.Key;

            if (process.CurrentActivity != null)
                client.CurrentActivityKey = process.CurrentActivity.Descriptor.Key;

            client.CanWithdraw = process.CanWithdraw;
            client.CanCancel = process.CanCancel;
            client.CanPause = process.CanPause;
            client.CanResume = process.CanResume;
            client.CanRestore = process.CanRestore;
            client.RelativeID = process.RelativeID;
            client.RelativeUrl = process.RelativeURL;
            client.ResourceID = process.ResourceID;
            client.SearchID = process.SearchID;
            client.StartTime = process.StartTime;
            client.EndTime = process.EndTime;
            client.Creator = (WfClientUser)process.Creator.ToClientOguObject();
            client.OwnerDepartment = (WfClientOrganization)process.OwnerDepartment.ToClientOguObject();
            client.Status = process.Status.ToClientProcessStatus();
            client.Committed = process.Committed;
            client.RuntimeProcessName = process.RuntimeProcessName;
            client.UpdateTag = process.UpdateTag;

            if (process.HasParentProcess)
            {
                client.OwnerActivityID = process.EntryInfo.OwnerActivity.ID;
                client.OwnerTemplateKey = process.EntryInfo.ProcessTemplate.Key;
            }

            if ((this.Filter & WfClientProcessInfoFilter.ProcessContext) != WfClientProcessInfoFilter.InstanceOnly)
            {
                Dictionary<string, object> processContext = client.ProcessContext;

                process.Context.ForEach(kp => processContext[kp.Key] = kp.Value);
            }

            if ((this.Filter & WfClientProcessInfoFilter.ApplicationRuntimeParameters) != WfClientProcessInfoFilter.InstanceOnly)
            {
                WfClientDictionaryConverter.Instance.ServerToClient(process.ApplicationRuntimeParameters, client.ApplicationRuntimeParameters);
            }

            //增加主线活动信息
            WfClientMainStreamActivityDescriptorCollectionConverter.Instance.ServerToClient(process.GetMainStreamActivities(false), client.MainStreamActivityDescriptors);
        }