Example #1
0
 public ActionModel ContinueWork(SNSession session, T_FLOW beginFlow, T_STEP beginStep, decimal prevWorkAnyNodeId)
 {
     return BeginWork(session, beginFlow, beginStep, prevWorkAnyNodeId);
 }
Example #2
0
        public ActionModel BeginWork(SNSession session, T_FLOW beginFlow, T_STEP beginStep, decimal prevWorkAnyNodeId = 0)
        {
            #region 创建事项流程简述

            //TODO:自动生成
            // 1.确定事项的入口:确定入口步骤 done
            // 2.1.根据入口步骤生曾第一节点(即产生了主线路) done
            // 2.2.根据第一节点产生事项 done
            // 2.3.生成节点授权信息(steptouser) done
            // 3.根据入口步骤所属的流程,生成相关阶段 done
            // 4.1.创建表单--根据步骤ID获取要默认创建的文笺列表 done
            // 4.2.默认打开排序号第一的表单 todo
            // 4.3.获取可输入项--根据文笺ID获取当前步骤文笺的输入项列表 done
            //-----------------
            //TODO:输入数据
            // 1.1.输入事项相关属性,生成事项标签
            // 2.1.输入项输入值
            // 3.1.设置表单属性(序号、是否带纸质等)
            //-----------------
            //TODO:完成,保存数据
            // 1.1.保存节点
            // 1.2.保存节点授权
            // 2.1.保存表单
            // 2.2.保存输入项
            // 3.1.保存阶段
            // 4.1.保存事项
            //-----------------
            //TODO:保存下步信息(事项第一步不可接新流程)
            // 1.1.产生下步节点
            // 1.2.产生下步授权(stepToUser)
            //throw new NotImplementedException();

            #endregion
            // 构建控制工厂
            var fact = new CtrlFactory();

            // 构建动作ActionModel
            var vm = new ActionModel();

            // 生成节点新ID
            var nodeId = this.BuildID();

            // 生成事项第一节点
            var nodeCtrl = fact.NodeCtrl();
            vm.CurrentNode = nodeCtrl.BuildTo(beginStep.STEP_ID, beginStep.STEP_NAME, nodeId, prevWorkAnyNodeId);

            // 生成事项第一节点域
            vm.CurrentNodeDomain = nodeCtrl.CreateNodeDomain(vm.CurrentNode.NODE_ID, session.DeptId, session.UserId,
                session.DelegateUserId);

            // 生成事项
            var workCtrl = fact.WorkCtrl();
            vm.CurrentWork = workCtrl.CreateWork(vm.CurrentNode.NODE_ID, session.OrgId);

            // 生成第一阶段
            var stageCtrl = fact.StageCtrl();
            vm.CurrentStage = stageCtrl.CreateStage(vm.CurrentNode.NODE_ID, beginStep.FLOW_ID, beginFlow.FLOW_NAME);

            // 生成需自动创建的实体文笺
            var entityCtrl = fact.EntityCtrl();
            vm.EntityList = entityCtrl.CreateEntityForNode(vm.CurrentNode.STEP_ID, vm.CurrentWork.WORK_ID,
                vm.CurrentNode.NODE_ID, vm.CurrentNodeDomain.DEPT_ID, vm.CurrentNodeDomain.USER_ID);

            //TODO:验证AM下各个对象的完备性
            return vm;
        }