public List <WfClientProcess> GetProcessesByResourceID(string resourceID, WfClientUser user, WfClientProcessInfoFilter filter) { resourceID.CheckStringIsNullOrEmpty("resourceID"); OperationContext.Current.FillContextToOguServiceContext(); WfProcessCollection processes = WfRuntime.GetProcessByResourceID(resourceID).SortByUserRelativity((IUser)user.ToOguObject()); WfClientProcessConverter converter = new WfClientProcessConverter(filter); List <WfClientProcess> result = new List <WfClientProcess>(); foreach (IWfProcess process in processes) { WfClientProcess client = null; converter.ServerToClient(process, ref client); client.AuthorizationInfo = WfClientProcessInfoBaseConverter.Instance.GetAuthorizationInfo(process, process.CurrentActivity, user); if ((filter & WfClientProcessInfoFilter.CurrentOpinion) == WfClientProcessInfoFilter.CurrentOpinion) { client.FillCurrentOpinion(process.CurrentActivity, user); } result.Add(client); } return(result); }
public void SimpleProcessWithMainStreamSerializationTest() { WfClientJsonConverterHelper.Instance.RegisterConverters(); WfClientUser[] users = new WfClientUser[] { Consts.Users["Requestor"] }; IWfProcess process = ProcessHelper.CreateFreeStepsProcessInstance(users.ToOguObjects <WfClientUser, IUser>().ToArray()); WfClientProcess client = null; WfClientProcessConverter.InstanceAllInfo.ServerToClient(process, ref client); Assert.IsNotNull(client.InitialActivity); Assert.IsNotNull(client.CompletedActivity); Assert.IsNotNull(client.MainStream); Assert.IsTrue(client.ApplicationRuntimeParameters.Count > 0); string data = JSONSerializerExecute.Serialize(client); Console.WriteLine(data); WfClientProcess deserializedProcess = JSONSerializerExecute.Deserialize <WfClientProcess>(data); Assert.IsNotNull(deserializedProcess.InitialActivity); Assert.IsNotNull(deserializedProcess.CompletedActivity); Assert.IsNotNull(deserializedProcess.MainStream); Assert.IsTrue(deserializedProcess.ApplicationRuntimeParameters.Count > 0); Assert.AreEqual(deserializedProcess.InitialActivity.ID, deserializedProcess.CurrentActivity.ID); }
public override object Deserialize(IDictionary <string, object> dictionary, Type type, JavaScriptSerializer serializer) { WfClientUserResourceDescriptor userResourceDesp = (WfClientUserResourceDescriptor)base.Deserialize(dictionary, type, serializer); WfClientUser user = JSONSerializerExecute.Deserialize <WfClientUser>(dictionary.GetValue("user", (object)null)); userResourceDesp.User = user; return(userResourceDesp); }
public WfClientProcessCollection GetProcessByResourceID(string resourceID, WfClientUser user, WfClientProcessInfoFilter filter) { List <WfClientProcess> processes = this.SingleCall(action => action.GetProcessesByResourceID(resourceID, user, filter)); WfClientProcessCollection result = new WfClientProcessCollection(); result.CopyFrom(processes); return(result); }
public WfClientProcessInfo GetProcessInfoByID(string processID, WfClientUser user) { processID.CheckStringIsNullOrEmpty("processID"); OperationContext.Current.FillContextToOguServiceContext(); IWfProcess process = WfRuntime.GetProcessByProcessID(processID); return(process.ToClientProcessInfo(user).FillCurrentOpinion(process.CurrentActivity, user)); }
/// <summary> /// 替换某个活动中的办理人,无论该活动的状态。如果这个人有待办,待办也会被替换。 /// </summary> /// <param name="activityID">需要替换的活动的ID</param> /// <param name="originalUser">被替换的人。如果这个属性为null,则替换掉这个活动中所有的指派人和候选人</param> /// <param name="targetUsers">替换成的人,如果为null,则不完成替换</param> /// <param name="runtimeContext">流转上下文信息</param> /// <returns></returns> public WfClientProcessInfo ReplaceAssignees(string activityID, WfClientUser originalUser, IEnumerable <WfClientUser> targetUsers, WfClientRuntimeContext runtimeContext) { List <WfClientUser> targetUsersList = _EmptyClientUserList; if (targetUsers != null) { targetUsersList = new List <WfClientUser>(targetUsers); } return(this.SingleCall(action => action.ReplaceAssignees(activityID, originalUser, targetUsersList, runtimeContext))); }
public bool IsSameUser(WfClientUser user) { bool result = false; if (this.User != null && user != null) { result = string.Compare(this.User.ID, user.ID, true) == 0; } return(result); }
public WfClientProcessInfo GetProcessInfoByActivityID(string activityID, WfClientUser user) { activityID.CheckStringIsNullOrEmpty("activityID"); OperationContext.Current.FillContextToOguServiceContext(); IWfProcess process = WfRuntime.GetProcessByActivityID(activityID); IWfActivity activity = process.Activities[activityID]; return(process.ToClientProcessInfo(activity, user).FillCurrentOpinion(activity, user)); }
public WfClientProcessInfo ReplaceAssignees(string activityID, WfClientUser originalUser, List <WfClientUser> targetUsers, WfClientRuntimeContext runtimeContext) { OperationContext.Current.FillContextToOguServiceContext(); IWfProcess process = WfRuntime.GetProcessByActivityID(activityID); IWfActivity targetActivity = process.Activities[activityID]; ExecuteExecutor(process, runtimeContext, (p) => new WfReplaceAssigneesExecutor(targetActivity, targetActivity, (IUser)originalUser.ToOguObject(), targetUsers.ToOguObjects <WfClientUser, IUser>())); return(process.ToClientProcessInfo(runtimeContext.Operator).FillCurrentOpinion(process.CurrentActivity, runtimeContext.Operator)); }
public static void Output(this WfClientUser user, string title) { if (user != null) { if (title.IsNotEmpty()) { Console.Write("{0}: ", title); } Console.WriteLine("User ID = {1}, User Name = {2}", title, user.ID, user.Name); } }
private static WfProcessDescriptorInfo PrepareServerData() { WfClientUser[] users = new WfClientUser[] { Consts.Users["Requestor"] }; IWfProcessDescriptor processDesp = ProcessHelper.CreateFreeStepsProcess(users.ToOguObjects <WfClientUser, IUser>().ToArray()); WfSqlProcessDescriptorManager manager = new WfSqlProcessDescriptorManager(); manager.SaveDescriptor(processDesp); WfProcessDescriptorInfo server = WfProcessDescriptorInfoAdapter.Instance.Load(processDesp.Key); return(server); }
private static IWfProcess PrepareProcess() { WfClientUser[] users = new WfClientUser[] { Consts.Users["Requestor"] }; IWfProcessDescriptor processDesp = ProcessHelper.CreateFreeStepsProcess(users.ToOguObjects <WfClientUser, IUser>().ToArray()); WfProcessStartupParams startupParams = ProcessHelper.GetInstanceOfWfProcessStartupParams(processDesp); IWfProcess process = WfRuntime.StartWorkflow(startupParams); WfRuntime.PersistWorkflows(); return(process); }
private static void FillPersonInfo(WfClientOpinion opinion, WfClientUser user, WfClientUser delegateUser) { if (delegateUser == null) { delegateUser = user; } if (user != null) { opinion.IssuePersonID = user.ID; opinion.IssuePersonName = user.DisplayName; opinion.AppendPersonID = delegateUser.ID; opinion.AppendPersonName = delegateUser.DisplayName; } }
/// <summary> /// 查找某个用户的委托人,如果没有找到,则返回自己 /// </summary> /// <param name="user"></param> /// <returns></returns> public WfClientUser FindDelegator(WfClientUser user) { user.NullCheck("user"); WfClientUser result = user; foreach (WfClientAssignee assignee in this) { if (assignee.User != null && string.Compare(user.ID, assignee.User.ID, true) == 0) { if (assignee.Delegator != null) { result = assignee.Delegator; } } } return(result); }
/// <summary> /// 得到在当前活动的意见信息 /// </summary> /// <param name="originalActivity"></param> /// <param name="user"></param> /// <returns></returns> public WfClientOpinion GetUserActivityOpinion(IWfActivity originalActivity, WfClientUser user) { WfClientOpinion opinion = null; if (originalActivity != null && user != null) { WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("ACTIVITY_ID", originalActivity.ID); builder.AppendItem("ISSUE_PERSON_ID", user.ID); GenericOpinion serverOpinion = GenericOpinionAdapter.Instance.LoadByBuilder(builder).FirstOrDefault(); if (serverOpinion != null) { WfClientOpinionConverter.Instance.ServerToClient(serverOpinion, ref opinion); } } return(opinion); }
public WfClientProcess GetProcessByID(string processID, WfClientUser user, WfClientProcessInfoFilter filter) { processID.CheckStringIsNullOrEmpty("processID"); OperationContext.Current.FillContextToOguServiceContext(); IWfProcess process = WfRuntime.GetProcessByProcessID(processID); WfClientProcess client = null; new WfClientProcessConverter(filter).ServerToClient(process, ref client); client.AuthorizationInfo = WfClientProcessInfoBaseConverter.Instance.GetAuthorizationInfo(process, process.CurrentActivity, user); if ((filter & WfClientProcessInfoFilter.CurrentOpinion) == WfClientProcessInfoFilter.CurrentOpinion) { client.FillCurrentOpinion(process.CurrentActivity, user); } return(client); }
public void SimpleProcessServerInstanceToClientTest() { WfClientUser[] users = new WfClientUser[] { Consts.Users["Requestor"] }; IWfProcessDescriptor processDesp = ProcessHelper.CreateFreeStepsProcess(users.ToOguObjects <WfClientUser, IUser>().ToArray()); WfProcessStartupParams startupParams = ProcessHelper.GetInstanceOfWfProcessStartupParams(processDesp); IWfProcess process = WfRuntime.StartWorkflow(startupParams); process.Context["Context"] = "This is a context"; WfClientProcess client = null; WfClientProcessConverter.Instance.ServerToClient(process, ref client); Console.WriteLine(client.InitialActivity.ID); Console.WriteLine(client.CompletedActivity.ID); Console.WriteLine(client.Descriptor.Url); Assert.AreEqual(startupParams.DefaultUrl, client.Descriptor.Url); Assert.AreEqual(process.Context["Context"], client.ProcessContext["Context"]); }
public WfClientProcessCollection GetProcessByResourceID(string resourceID, WfClientUser user) { return(this.GetProcessByResourceID(resourceID, user, WfClientProcessInfoFilter.Default)); }
public WfClientProcessInfo GetProcessInfoByActivityID(string activityID, WfClientUser user) { return(this.SingleCall(action => action.GetProcessInfoByActivityID(activityID, user))); }
public WfClientProcess GetProcessByActivityID(string activityID, WfClientUser user) { return(this.GetProcessByActivityID(activityID, user, WfClientProcessInfoFilter.Default)); }
public WfClientProcess GetProcessByID(string processID, WfClientUser user, WfClientProcessInfoFilter filter) { return(this.SingleCall(action => action.GetProcessByID(processID, user, filter))); }
public WfClientRuntimeContext(WfClientUser opUser) { this.Operator = opUser; }
public WfClientAuthorizationInfo GetAuthorizationInfo(IWfProcess process, IWfActivity originalActivity, WfClientUser user) { string userID = user.IsNotNullOrEmpty() ? user.ID : string.Empty; string originalActivityID = originalActivity != null ? originalActivity.ID : string.Empty; return(GetAuthorizationInfo(process, originalActivityID, userID)); }
public static WfClientProcessInfo ToClientProcessInfo(this IWfProcess process, IWfActivity originalActivity, WfClientUser clientUser) { process.NullCheck("process"); WfClientProcessInfo clientProcessInfo = null; PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration("ToClientProcessInfo", () => { WfClientProcessInfoConverter.Instance.ServerToClient(process, ref clientProcessInfo); clientProcessInfo.AuthorizationInfo = WfClientProcessInfoBaseConverter.Instance.GetAuthorizationInfo(process, originalActivity, clientUser); }); return(clientProcessInfo); }
public static void Output(this WfClientUser user) { Output(user, string.Empty); }
public List <WfClientProcessInfo> GetProcessesInfoByResourceID(string resourceID, WfClientUser user) { resourceID.CheckStringIsNullOrEmpty("resourceID"); OperationContext.Current.FillContextToOguServiceContext(); WfProcessCollection processes = WfRuntime.GetProcessByResourceID(resourceID).SortByUserRelativity((IUser)user.ToOguObject()); List <WfClientProcessInfo> result = new List <WfClientProcessInfo>(); processes.ForEach(process => result.Add(process.ToClientProcessInfo(user).FillCurrentOpinion(process.CurrentActivity, user))); return(result); }
public WfClientUserResourceDescriptor(WfClientUser user) { this.User = user; }
public static T FillCurrentOpinion <T>(this T processInfo, IWfActivity originalActivity, WfClientUser user) where T : WfClientProcessInfoBase { if (processInfo != null) { processInfo.CurrentOpinion = WfClientProcessInfoBaseConverter.Instance.GetUserActivityOpinion(originalActivity, user); } return(processInfo); }
public static WfClientProcessInfo ToClientProcessInfo(this IWfProcess process, WfClientUser clientUser) { return(ToClientProcessInfo(process, process.CurrentActivity, clientUser)); }
/// <summary> /// 把当前环节的信息填充到意见当中 /// </summary> /// <param name="opinion"></param> /// <param name="originalActivity"></param> /// <param name="user"></param> /// <param name="delegatedUser"></param> public void FillOpinionInfoByProcessByActivity(WfClientOpinion opinion, IWfActivity originalActivity, WfClientUser user, WfClientUser delegatedUser) { if (opinion != null && originalActivity != null) { if (opinion.ID.IsNullOrEmpty()) { opinion.ID = UuidHelper.NewUuidString(); } opinion.ResourceID = originalActivity.Process.ResourceID; opinion.ProcessID = originalActivity.Process.ID; opinion.ActivityID = originalActivity.ID; IWfActivity rootActivity = originalActivity.OpinionRootActivity; if (rootActivity.Process.MainStream != null && rootActivity.MainStreamActivityKey.IsNotEmpty()) { opinion.LevelName = rootActivity.MainStreamActivityKey; } else { if (string.IsNullOrEmpty(rootActivity.Descriptor.AssociatedActivityKey)) { opinion.LevelName = rootActivity.Descriptor.Key; } else { opinion.LevelName = rootActivity.Descriptor.AssociatedActivityKey; } } if (rootActivity.Process.MainStream != null) { opinion.LevelDesp = rootActivity.Process.MainStream.Activities[opinion.LevelName].Name; } else { opinion.LevelDesp = rootActivity.Descriptor.Process.Activities[opinion.LevelName].Name; } if (user != null) { opinion.IssuePersonID = user.ID; opinion.IssuePersonName = user.DisplayName; if (originalActivity != null) { IUser delegator = originalActivity.Assignees.FindDelegator((IUser)user.ToOguObject()); opinion.IssuePersonID = delegator.ID; opinion.IssuePersonName = delegator.DisplayName; } if (delegatedUser == null) { delegatedUser = user; } opinion.AppendPersonID = delegatedUser.ID; opinion.AppendPersonName = delegatedUser.DisplayName; } } }