Exemple #1
0
        private async Task SendProgress(string nextStepId,
                                        string assignToUserIds,
                                        string assignToUserNames,
                                        JsonModel jsonModel,
                                        WfProcessInstance processInstance,
                                        WfProcess process,
                                        WfActivityInstance currActIns)
        {
            var nextAct = process.GetActivity(nextStepId);

            if (nextAct == null)
            {
                jsonModel.statusCode = 300;
                jsonModel.message    = $"流程 {process.Name}的节点 {nextStepId} 找不到!";
                return;
            }

            var nextActInstance = CreateActivityInstance(process,
                                                         processInstance,
                                                         nextAct,
                                                         WfActivityState.Running,
                                                         assignToUserIds,
                                                         assignToUserNames);

            nextActInstance.PreActInstanceId = currActIns.Id;
            processInstance.CurrActivityName = nextActInstance.ActivityName;
            await WfActivityInstanceRepository.SaveAsync(nextActInstance);
        }
Exemple #2
0
        /// <summary>
        /// 生成回退节点
        /// </summary>
        /// <param name="processInstance"></param>
        /// <param name="process"></param>
        /// <param name="currActIns"></param>
        /// <returns></returns>
        private async Task FallBackProgress(WfProcessInstance processInstance,
                                            WfProcess process,
                                            WfActivityInstance currActIns,
                                            string backStepId)
        {
            var preActInstance = await WfActivityInstanceRepository.GetLatestActivityAsync(processInstance.Id, backStepId);

            var backActivity    = process.GetActivity(backStepId);
            var backActInstance = CreateActivityInstance(process,
                                                         processInstance,
                                                         backActivity,
                                                         WfActivityState.Running,
                                                         preActInstance.AssignToUserIds,
                                                         preActInstance.AssignToUserNames);

            backActInstance.PreActInstanceId       = preActInstance.PreActInstanceId;
            backActInstance.BackActivityInstanceId = currActIns.Id;
            processInstance.CurrActivityName       = backActInstance.ActivityName;
            currActIns.ActivityState = WfActivityState.Sendbacked;
            await WfActivityInstanceRepository.SaveAsync(backActInstance);
        }