コード例 #1
0
        public WfTransferParams ClientToServer(WfClientTransferParams client, IWfProcess process, ref WfTransferParams server)
        {
            client.NullCheck("client");

            if (server == null)
                server = new WfTransferParams();

            server.Context["NextActivityDescriptorKey"] = client.NextActivityDescriptorKey;
            server.Context["FromTransitionDescriptorKey"] = client.FromTransitionDescriptorKey;

            if (process != null)
            {
                if (client.NextActivityDescriptorKey.IsNotEmpty())
                {
                    IWfActivity nextActivity = process.Activities.FindActivityByDescriptorKey(client.NextActivityDescriptorKey);

                    if (nextActivity != null)
                        server.NextActivityDescriptor = nextActivity.Descriptor;
                }

                if (client.FromTransitionDescriptorKey.IsNotEmpty())
                {
                    IWfTransitionDescriptor fromTransition = process.Descriptor.FindTransitionByKey(client.FromTransitionDescriptorKey);

                    server.FromTransitionDescriptor = fromTransition;
                }
            }

            server.Operator = (IUser)client.Operator.ToOguObject();
            WfClientBranchProcessTransferParamsCollectionConverter.Instance.ClientToServer(client.BranchTransferParams, server.BranchTransferParams);
            WfClientAssigneeCollectionConverter.Instance.ClientToServer(client.Assignees, server.Assignees);

            return server;
        }
コード例 #2
0
        public WfClientProcessInfo MoveTo(string processID, WfClientTransferParams clientTransferParams, WfClientRuntimeContext runtimeContext)
        {
            processID.CheckStringIsNullOrEmpty("processID");
            clientTransferParams.NullCheck("clientTransferParams");

            OperationContext.Current.FillContextToOguServiceContext();

            IWfProcess process = GetProcessByProcessID(processID, runtimeContext);

            MeregeRuntimeContext(process, runtimeContext);

            WfTransferParams transferParams = null;

            WfClientTransferParamsConverter.Instance.ClientToServer(clientTransferParams, process, ref transferParams);

            MergeTransferParams(transferParams, runtimeContext);

            IWfActivity originalActivity = process.CurrentActivity;

            ExecuteExecutor(process, runtimeContext, (p) =>
            {
                WfMoveToExecutor executor = new WfMoveToExecutor(p.CurrentActivity, p.CurrentActivity, transferParams);

                executor.SaveApplicationData += (dataContext) => SaveOpinion(runtimeContext.Opinion, originalActivity, transferParams);
                executor.PrepareMoveToTasks += (dataContext, tasks) =>
                    tasks.ForEach(task => task.Purpose = p.CurrentActivity.Descriptor.Name);

                return executor;
            });

            return process.ToClientProcessInfo(transferParams.Operator).FillCurrentOpinion(process.CurrentActivity, runtimeContext.Operator);
        }