private static void RecursiveSubProcessMoveTo(IWfActivity ownerActivity, WfSimulationContext simulationContext) { foreach (IWfBranchProcessGroup group in ownerActivity.BranchProcessGroups) { foreach (IWfProcess process in group.Branches) { InnerMoveToSimulation(process, simulationContext); } } }
private static void InnerMoveToSimulation(IWfProcess process, WfSimulationContext simulationContext) { if (process.Status == WfProcessStatus.Running) { if (process.CurrentActivity.Status == WfActivityStatus.Running || process.CurrentActivity.Status == WfActivityStatus.Pending) { WfTransferParams transferParams = PrepareTransferParams(process, process.CurrentActivity.Assignees.FirstOrDefault(), simulationContext); if (transferParams != null) { WfMoveToExecutor executor = new WfMoveToExecutor(process.CurrentActivity, process.CurrentActivity, transferParams); executor.Execute(); } } } }
private void WriteMoveToInfo(IWfProcess process, WfSimulationContext context) { IWfActivity currentActivity = WfRuntime.ProcessContext.CurrentActivity; StringBuilder strB = new StringBuilder(); if (currentActivity != null) { strB.AppendFormat("流转到{0}({1})", currentActivity.Descriptor.Key, currentActivity.Descriptor.Name); } context.Writer.WriteFullBeginTag("div"); WriteStrongText(context.Writer, strB.ToString()); context.Writer.WriteEndTag("div"); WriteAssignees(currentActivity, context); }
private void WriteAssignees(IWfActivity activity, WfSimulationContext context) { StringBuilder strB = new StringBuilder(); foreach (WfAssignee assignee in activity.Assignees) { if (assignee.User != null) { if (strB.Length > 0) { strB.AppendFormat(", "); } strB.AppendFormat("{0}({1})", assignee.User.DisplayName, assignee.User.ID); } } if (strB.Length > 0) { WriteTextInTag(context.Writer, "div", "流转给: {0}", strB.ToString()); } }
private static WfTransferParams PrepareTransferParams(IWfProcess process, WfAssignee assignee, WfSimulationContext simulationContext) { IWfActivity originalActivity = process.CurrentActivity; IWfTransitionDescriptor transition = FindNextTransitionDescriptor(process); WfTransferParams transferParams = null; if (transition != null) { transferParams = new WfTransferParams(transition.ToActivity); transferParams.Assignees.CopyFrom(transition.ToActivity.Instance.Candidates); transferParams.FromTransitionDescriptor = transition; if (assignee != null) { transferParams.Operator = assignee.User; } } return(transferParams); }
private static WfProcessStartupParams PrepareStartWorkflowParams(IWfProcessDescriptor processDesp, WfSimulationContext simulationContext) { WfProcessStartupParams startupParams = new WfProcessStartupParams(); startupParams.ProcessDescriptor = processDesp; startupParams.DefaultTaskTitle = startupParams.ProcessDescriptor.DefaultTaskTitle; if (OguUser.IsNotNullOrEmpty(simulationContext.SimulationParameters.Creator)) { startupParams.Creator = simulationContext.SimulationParameters.Creator; } else { if (DeluxePrincipal.IsAuthenticated) { startupParams.Creator = DeluxeIdentity.CurrentUser; } } startupParams.Assignees.Add(startupParams.Creator); startupParams.ResourceID = UuidHelper.NewUuidString(); MergeVariablesToApplicationRuntimeParameters(startupParams.ApplicationRuntimeParameters, simulationContext.SimulationParameters.Variables); return(startupParams); }
private void WriteStartupProcessInfo(IWfProcess process, WfSimulationContext context) { context.Writer.WriteFullBeginTag("div"); WriteStrongText(context.Writer, "启动流程{0}({1}), ID:{2}", process.Descriptor.Key, process.Descriptor.Name, process.ID); context.Writer.WriteEndTag("div"); }
public void Write(IWfProcess process, WfSimulationOperationType operationType, WfSimulationContext context) { switch (operationType) { case WfSimulationOperationType.Startup: WriteStartupProcessInfo(process, context); break; case WfSimulationOperationType.MoveTo: WriteMoveToInfo(process, context); break; } }