示例#1
0
 private static void RecursiveSubProcessMoveTo(IWfActivity ownerActivity, WfSimulationContext simulationContext)
 {
     foreach (IWfBranchProcessGroup group in ownerActivity.BranchProcessGroups)
     {
         foreach (IWfProcess process in group.Branches)
         {
             InnerMoveToSimulation(process, simulationContext);
         }
     }
 }
示例#2
0
        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());
            }
        }
示例#5
0
        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);
        }
示例#6
0
        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;
            }
        }