public static WfClientProcess GetClientProcess(IWfClientSearchParameters parameters) { IWfProcess process = null; if (parameters.ActivityID.IsNotEmpty()) { process = WfRuntime.GetProcessByActivityID(parameters.ActivityID); } else { if (parameters.ProcessID.IsNotEmpty()) { process = WfRuntime.GetProcessByProcessID(parameters.ProcessID); } else { if (parameters.ResourceID.IsNotEmpty()) { process = WfRuntime.GetProcessByResourceID(parameters.ResourceID).FirstOrDefault(); } } } return(GetClientProcess(process)); }
public void SimpleProcessPersistRepeatTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); //process.DefaultTaskTitle = "测试保存的流程"; WfRuntime.PersistWorkflows(); IWfProcess loadedProcess = WfRuntime.GetProcessByProcessID(process.ID); IWfProcess loadedProcess2 = WfRuntime.GetProcessByActivityID(process.Activities[0].ID); Assert.AreEqual(loadedProcess, loadedProcess2); int n = loadedProcess.Activities.Count; for (int i = 0; i < n; i++) { if (loadedProcess.Activities[i].Descriptor != loadedProcess.Descriptor.InitialActivity) { WfTransferParams transferPara = new WfTransferParams(loadedProcess.Activities[i].Descriptor); loadedProcess.MoveTo(transferPara); WfRuntime.PersistWorkflows(); } loadedProcess = WfRuntime.GetProcessByActivityID(loadedProcess.Activities[i].ID); } IWfProcess OnceAgainloadedProcess = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(OnceAgainloadedProcess.ID, process.ID); }
protected override void AfterCreateProcessInstance(SysTaskProcess sysTaskProcess) { sysTaskProcess.Name = string.Format("创建活动{0}的分支流程", this.OwnerActivityID); //这一步可能是很长时间的操作 OguDataCollection <IUser> users = this.Template.Resources.ToUsers(); int index = 0; if (this.Template.ExecuteSequence == WfBranchProcessExecuteSequence.SerialInSameProcess) { sysTaskProcess.Activities.Add(CreateUserActivity(sysTaskProcess, index++, users)); SysTaskProcessRuntime.Persist(); } else { foreach (IUser user in users) { sysTaskProcess.Activities.Add(CreateUserActivity(sysTaskProcess, index++, new IUser[] { user })); SysTaskProcessRuntime.Persist(); } } if (this.AutoAddExitMaintainingStatusTask) { IWfProcess process = WfRuntime.GetProcessByActivityID(this.OwnerActivityID); sysTaskProcess.Activities.Add(sysTaskProcess.CreateExitMaintainingActivity(process.ID, index++)); SysTaskProcessRuntime.Persist(); } }
private void InitOriginalActivityByActivityID(string resourceID, string activityID, string originalCurrentActivityID) { if (activityID.IsNotEmpty()) { IWfProcess process = WfRuntime.GetProcessByActivityID(activityID); //取得OriginalActivity this._OriginalCurrentActivity = process.Activities[originalCurrentActivityID]; OriginalActivity = process.Activities[activityID]; } }
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 string[] StartBranchProcesses(string ownerActivityID, WfBranchProcessTransferParams branchTransferParams) { ownerActivityID.CheckStringIsNullOrEmpty("ownerActivityID"); branchTransferParams.NullCheck("branchTransferParams"); IWfProcess process = WfRuntime.GetProcessByActivityID(ownerActivityID); IWfActivity ownerActivity = process.Activities[ownerActivityID]; WfStartBranchProcessExecutor executor = new WfStartBranchProcessExecutor(ownerActivity, ownerActivity, branchTransferParams); executor.Execute(); List <string> startedProcessIDs = new List <string>(); executor.StartedProcesses.ForEach(p => startedProcessIDs.Add(p.ID)); return(startedProcessIDs.ToArray()); }
public static void ExecuteReplace(ReplaceAssigneeHelperData rahd) { rahd.NullCheck("错误:传入参数为空"); //取原始待办人 IUser originalUser = (IUser)OguBase.CreateWrapperObject(rahd.OriginalUserID, SchemaType.Users); //取目的待办人 List <IUser> targetUsers = new List <IUser>(); foreach (string userID in rahd.TargetUsersID) { IUser targetUser = (IUser)OguBase.CreateWrapperObject(userID, SchemaType.Users); targetUsers.Add(targetUser); } //获取用户任务 UserTaskCollection tasks = UserTaskAdapter.Instance.LoadUserTasks( build => build.AppendItem("TASK_GUID", rahd.TaskID, "=")); (tasks.Count > 0).FalseThrow("指定的任务ID'{0}'不存在!", rahd.TaskID); //取出Activity string activityID = tasks[0].ActivityID; //待办人替换处理 try { IWfProcess process = WfRuntime.GetProcessByActivityID(activityID); IWfActivity activity = process.Activities[activityID]; //创建Executor并执行 WfReplaceAssigneesExecutor replaceExec = new WfReplaceAssigneesExecutor(activity, activity, originalUser, targetUsers); replaceExec.Execute(); } catch { } }
public void LoadProcessByActivityIDTest() { string actId = string.Empty; IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); ((WfProcess)process).ResourceID = "resource2"; actId = process.CurrentActivity.ID; ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.approver2, process); process = WfRuntime.GetProcessByProcessID(process.ID); ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.requestor, process); process = WfRuntime.GetProcessByProcessID(process.ID); ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.approver2, process); process = WfRuntime.GetProcessByProcessID(process.ID); IWfProcess proc = WfRuntime.GetProcessByActivityID(actId); Assert.AreEqual(process.ID, proc.ID); Assert.AreEqual(process.CurrentActivity.ID, proc.CurrentActivity.ID); }
public string ChangeActivityAssignee(string userJsonStr, string activityID) { if (activityID.IsNullOrEmpty()) { return(Translator.Translate(Define.DefaultCulture, "请先选择相应的活动!")); } WfConverterHelper.RegisterConverters(); try { var userList = JSONSerializerExecute.Deserialize <List <OguUser> >(userJsonStr); var process = WfRuntime.GetProcessByActivityID(activityID); var activityInstance = process.Activities[activityID]; if (activityInstance == null) { return(Translator.Translate(Define.DefaultCulture, "未找到活动ID为{0}的流程!", activityID)); } WfReplaceAssigneesExecutor executor = new WfReplaceAssigneesExecutor( WfClientContext.Current.CurrentActivity, activityInstance, null, userList); WfClientContext.Current.Execute(executor); return(string.Empty); } catch (Exception ex) { ex = ExceptionHelper.GetRealException(ex); return(Translator.Translate(Define.DefaultCulture, "修改当前活动点操作人失败!失败原因:{0}", ex.Message)); } }
public WfClientProcess GetProcessByActivityID(string activityID, WfClientUser user, WfClientProcessInfoFilter filter) { activityID.CheckStringIsNullOrEmpty("activityID"); OperationContext.Current.FillContextToOguServiceContext(); IWfProcess process = WfRuntime.GetProcessByActivityID(activityID); WfClientProcess client = null; new WfClientProcessConverter(filter).ServerToClient(process, ref client); IWfActivity originalActivity = process.Activities[activityID]; client.AuthorizationInfo = WfClientProcessInfoBaseConverter.Instance.GetAuthorizationInfo(process, originalActivity, user); if ((filter & WfClientProcessInfoFilter.CurrentOpinion) == WfClientProcessInfoFilter.CurrentOpinion) { client.FillCurrentOpinion(originalActivity, user); } return(client); }
public static WfClientProcess DynamicProcessMoveto(WfClientDynamicProcessMovetoParameters parameters) { IWfProcess process = WfRuntime.GetProcessByActivityID(parameters.ActivityID); IWfActivity activity = process.CurrentActivity; if (parameters.MovetoActivityDescriptor != null) { WfActivityDescriptorCreateParams createParams = new WfActivityDescriptorCreateParams(); createParams = new WfActivityDescriptorCreateParams(); createParams.Users = new OguDataCollection <IUser>(); createParams.Name = parameters.MovetoActivityDescriptor.ActivityName; foreach (WfClientUserResourceDescriptorParameters userResource in parameters.MovetoActivityDescriptor.UserResourceList) { createParams.Users.Add(userResource.User); } WfAddActivityExecutor executor = new WfAddActivityExecutor(activity, activity, createParams); executor.Execute(); } //工作流流向下一个节点 WfClientMovetoParameters movetoParameters = new WfClientMovetoParameters() { ProcessID = process.ID, ActivityID = activity.ID, ResourceID = process.ResourceID, Comment = parameters.Comment }; WfClientProcess clientProcess = WfClientProxy.Moveto(movetoParameters); return(clientProcess); }
public static WfClientProcess GetClientProcessByActivityID(string activityID) { IWfProcess process = WfRuntime.GetProcessByActivityID(activityID); return(GetClientProcess(process)); }
private IWfActivity GetAssociatedActivity(string ownerActivityId) { IWfProcess proc1 = WfRuntime.GetProcessByActivityID(ownerActivityId); return(proc1.Activities[ownerActivityId]); }