예제 #1
0
        /// <summary>
        /// 驳回流程,将流程状态置为驳回
        /// </summary>
        /// <param name="processInsUid"></param>
        internal void Revoke(string processInsUid)
        {
            var processIns = _dataAccessor.Get <WfProcessInstance>(processInsUid, false);

            if (processIns.ProcessState == WfProcessInstanceState.Running)
            {
                processIns.ProcessState  = WfProcessInstanceState.Revoked;
                processIns.ApproveResult = WfApproveState.Disagree;
                //processIns.IsHandling = 0;
                _dataAccessor.Update <WfProcessInstance>(processIns);

                MessageManager msgManager = new MessageManager(_dataAccessor, _loggerFactory);
                msgManager.SendMessageWhenProcessCompleted(processIns, "驳回");

                IWriteBackRule bwb = new BillWriteBack(_dataAccessor);
                //改变单据状态为驳回
                bwb.Rejected(processIns.BillTable, processIns.BillUid);
            }
            else
            {
                throw new ProcessInstanceException("流程不在运行状态,不能被驳回!");
            }
        }