예제 #1
0
        /// <summary>
        /// 保存流程数据
        /// </summary>
        /// <param name="flowEngine">流程</param>
        /// <param name="category">分类</param>
        /// <param name="owner">具体业务数据对应的PK</param>
        public void FlowSave(Eastday.WorkFlowEngine.FlowEngine flowEngine)
        {
            using (WorkFlowBLL workFlowBLL = new WorkFlowBLL())
            {
                workFlowBLL.DbContext = workFlowBLL.CreateDbContext(true);
                WorkFlowEntity workFlowEntity = workFlowBLL.Usp_Flow_ByOwner(flowEngine.Attachment.Owner);
                if (workFlowEntity == null) workFlowEntity = new WorkFlowEntity();
                workFlowEntity.I_Owner = flowEngine.Attachment.Owner;
                workFlowEntity.I_State = (int)flowEngine.FlowState; 
                workFlowEntity.I_Flag = 1;

                //ParticipantEntity
                var aCurrent = flowEngine.GetCurrent();
                var steps = from step in flowEngine.FlowSteps where !(step is StepEnd) select step;
                List<ParticipantEntity> participants = new List<ParticipantEntity>();
                foreach (var step in steps)
                {
                    foreach (var node in step.Nodes)
                    {
                        ParticipantEntity participantEntity = new ParticipantEntity();
                        participantEntity.I_Reference = node.Participant.Reference;
                        participantEntity.I_WorkFlow = workFlowEntity.Id;
                        participantEntity.C_Step = step.Identification;
                        participantEntity.C_Node = node.Identification;
                        participantEntity.I_Auditer = node.Conclusion.Auditer;
                        participantEntity.D_Audit = node.Conclusion.AuditDate;
                        participantEntity.I_Bind = node.Participant.Category;
                        participantEntity.I_Current = step == aCurrent && node.AuditType == AuditType.UnAudit ? 1 : (int)node.Conclusion.AuditType;

                        participants.Add(participantEntity);
                    }
                }

                if (workFlowBLL.Usp_Flow_Insert(workFlowEntity, participants) > 0)
                {
                    workFlowBLL.DbContext.CommitTransaction();
                    this.Save(flowEngine);
                }
            }
        }
예제 #2
0
 public void Delete(int I_Owner)
 {
     using (WorkFlowBLL workFlowBLL = new WorkFlowBLL())
     {
         workFlowBLL.Usp_Workflow_Delete(I_Owner);
     }
 }