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); }
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); }
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); }