Beispiel #1
0
        /// <summary>
        /// 构建审批日志
        /// </summary>
        /// <param name="nodeInstance"></param>
        /// <param name="instanceName"></param>
        /// <param name="approvalNote"></param>
        /// <returns></returns>
        public static ApprovalLog BuildApprovalLog(ProcessNodeInstance nodeInstance, string instanceName, string approvalNote)
        {
            ApprovalLog log = new ApprovalLog();

            log.NodeType               = nodeInstance.NodeType;
            log.ApprovalNote           = approvalNote;
            log.BizProcessID           = nodeInstance.BizProcessID;
            log.CompletedTime          = nodeInstance.LastUpdatedTime;
            log.CreatedTime            = nodeInstance.CreatedTime;
            log.InstanceName           = instanceName;
            log.NodeInstanceID         = nodeInstance.ID; //TODO:huwz
            log.NodeName               = nodeInstance.NodeName + ObjectHelper.EnumDescription((CommonConsts.NodeType)log.NodeType);
            log.OperationType          = nodeInstance.OperationType;
            log.ProcessID              = nodeInstance.ProcessID;
            log.ProcessInstanceID      = nodeInstance.ProcessInstanceID;
            log.PreviousNodeInstanceID = nodeInstance.PreviousNodeInstanceID;
            log.Status   = 0;//保留字段
            log.UserID   = nodeInstance.UserID;
            log.UserName = nodeInstance.UserName;
            //add czq
            log.CreateTime   = WebHelper.DateTimeNow;
            log.CreatorName  = WebHelper.GetCurrentUser().LoginName;
            log.IsDeleted    = false;
            log.ModifyTime   = WebHelper.DateTimeNow;
            log.ModifierName = WebHelper.GetCurrentUser().LoginName;
            return(log);
        }
        public void ApprovalLogAdapterInsertTest()
        {
            ApprovalLogAdapter adp = new ApprovalLogAdapter();
            ApprovalLog        al  = new ApprovalLog()
            {
                ApprovalNote           = "unit_test",
                BizProcessID           = "unit_test",
                CompletedTime          = DateTime.Now,
                CreatedTime            = DateTime.Now.AddHours(-1),
                CreateTime             = DateTime.Now.AddHours(-1),
                CreatorName            = "unit_test",
                ID                     = Guid.NewGuid().ToString(),
                InstanceName           = "UINT_TEST_INSTANCE",
                IsDeleted              = false,
                NodeInstanceID         = "201B8623-C22B-4339-9E3B-97C1B214680A",
                NodeName               = "test_add",
                NodeType               = 1,
                OperationType          = 2,
                PreviousNodeInstanceID = "8AE10C4B-F27B-4566-89DD-FF3ACC4A9EFF",
                ProcessID              = "71173453-63e0-4b56-9d0d-4314d05326d6",
                ProcessInstanceID      = "DD03D6D7-817E-4AEA-9B28-E0A732E98Add",
                Status                 = 0,
                UserID                 = 1,
                UserName               = "******"
            };

            adp.Insert(al);
        }
        public void ApprovalLogAdapterUpdateTest()
        {
            ApprovalLogAdapter adp = new ApprovalLogAdapter();
            ApprovalLog        al  = adp.Load("16BEB142-1067-44FA-9BE6-D52B214AD37E");

            al.UserName  = "******";
            al.NodeName  = "UPDATE";
            al.IsDeleted = true;
            adp.Update(al);
        }
Beispiel #4
0
        /// <summary>
        /// 更新节点使用
        /// </summary>
        /// <param name="bizID">BizProcessID</param>
        /// <param name="nodeID">NodeInstanceID</param>
        /// <param name="uid">UserID</param>
        /// <param name="userName">UserName</param>
        /// <returns></returns>
        public int UpdateNodeInstance(int bizID, int nodeID, int uid, string userName)
        {
            WorkflowInstance           instance         = WorkflowEngine.WorkflowService.GetWorkflowInstance(bizID);
            List <ProcessNodeInstance> nodeInstanceList = ProcessNodeInstanceAdapter.Instance.LoadList(instance.ProcessInstance.ID);
            ProcessNodeInstance        nodeInstance     = nodeInstanceList.Find(p => p.ID == nodeID);
            TodoWork todo   = null;
            int      result = 0;

            foreach (var item in instance.TodoWorks)
            {
                if (item.TodoType == (int)Wanda.Lib.LightWorkflow.CommonConsts.TodoType.TODO)
                {
                    todo = item;
                    using (TransactionScope trans = TransactionScopeFactory.Create())
                    {
                        //待办的处理方式:
                        //删除待办
                        WorkflowEngine.WorkflowService.CloseWorkflowTodo(todo);
                        //生成已办日志
                        ApprovalLog log = new ApprovalLog();
                        log.NodeType               = todo.NodeType;
                        log.ApprovalNote           = string.Format("{0}将节点更新至{1}", userName, nodeInstance.UserName);
                        log.BizProcessID           = todo.BizProcessID;
                        log.CompletedTime          = WebHelper.DateTimeNow;
                        log.CreatedTime            = todo.CreatedTime;
                        log.InstanceName           = todo.InstanceName;
                        log.NodeInstanceID         = todo.NodeInstanceID;//TODO:huwz
                        log.NodeName               = todo.NodeName;
                        log.OperationType          = (int)Wanda.Lib.LightWorkflow.CommonConsts.NodeOperationType.ChangeNode;
                        log.ProcessID              = todo.ProcessID;
                        log.ProcessInstanceID      = todo.ProcessInstanceID;
                        log.PreviousNodeInstanceID = todo.PreviousNodeInstanceID;
                        log.Status = 0;//保留字段
                        //log.cUserID = todo.cUserID;
                        //log.UserCode = todo.UserCode;
                        log.CreateTime  = WebHelper.DateTimeNow;
                        log.CreatorName = userName;
                        log.UserID      = todo.UserID;
                        log.UserName    = todo.UserName;
                        log.ID          = 0;

                        log.ModifyTime   = WebHelper.DateTimeNow;
                        log.ModifierName = userName;

                        ApprovalLogAdapter.Instance.Insert(log);

                        //计算下个节点,生成待办
                        TodoWork todoNew = WorkflowEngine.BuildTodo(Wanda.Lib.LightWorkflow.CommonConsts.TodoType.TODO, instance.ProcessInstance, nodeInstance);
                        WorkflowEngine.WorkflowService.CreateWorkflowTodo(todoNew);

                        //更新流程节点
                        int curSqu = -1;
                        foreach (var temp in nodeInstanceList)
                        {
                            if (temp.NodeSeq > nodeInstance.NodeSeq)
                            {
                                temp.Status = (int)Wanda.Lib.LightWorkflow.CommonConsts.NodeStatus.NotExecute;
                                ProcessNodeInstanceAdapter.Instance.Update(temp);
                                continue;
                            }

                            if (temp.NodeSeq < nodeInstance.NodeSeq)
                            {
                                temp.Status = (int)Wanda.Lib.LightWorkflow.CommonConsts.NodeStatus.Executed;
                                if (temp.ID == todo.NodeInstanceID)
                                {
                                    curSqu = temp.NodeSeq;
                                }
                                if (curSqu != -1 && temp.NodeSeq >= curSqu)
                                {
                                    temp.OperationType = (int)Wanda.Lib.LightWorkflow.CommonConsts.NodeOperationType.ChangeNode;
                                    ProcessNodeInstanceAdapter.Instance.Update(temp);
                                }
                            }
                            else
                            {
                                temp.Status        = (int)Wanda.Lib.LightWorkflow.CommonConsts.NodeStatus.Executing;
                                temp.OperationType = (int)Wanda.Lib.LightWorkflow.CommonConsts.NodeOperationType.ChangeNode;
                                ProcessNodeInstanceAdapter.Instance.Update(temp);
                            }
                        }
                        if (nodeInstance.NodeType == (int)CommonConsts.NodeType.Archive)
                        {
                            ProcessInstance p = instance.ProcessInstance;
                            p.Status = (int)CommonConsts.ProcessInstanceStatus.Archiving;
                            ProcessInstanceAdapter.Instance.Update(p);
                        }
                        //添加StakeHolder人员
                        StakeHolder holder = WorkflowEngine.BuildStakeHolder(nodeInstance);

                        StakeHolderAdapter.Instance.Insert(holder);
                        result = nodeID;
                        trans.Complete();
                    }
                    break;
                }
            }
            return(result);
        }
Beispiel #5
0
        private string Request_Process_Message(ApprovalLog one_rqt, string applicaton)
        {
            //Basheer canged SOME PARTS on 17-01-2020 to show role

            string msg = "";

            if (one_rqt.Status == "NEW")
            {
                msg = msg = applicaton + "-" + one_rqt.RequestId + " was Saved by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ".";
                //msg = applicaton + "-" + one_rqt.RequestId + " was Submited from " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ". ";
            }
            else if (one_rqt.Status == "SUB")
            {
                msg = applicaton + "-" + one_rqt.RequestId + " was Submited by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ". ";
            }
            else if (one_rqt.Status == "INT" || one_rqt.Status == "QIM" || one_rqt.Status == "PIM")
            {
                msg = applicaton + "-" + one_rqt.RequestId + " was Approved by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ".";
            }
            else if (one_rqt.Status == "APC")
            {
                msg = applicaton + "-" + one_rqt.RequestId + " Approval Cycle completed by " + one_rqt.RoleId + ' ' + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ". ";
            }
            else if (one_rqt.Status == "PYD" && one_rqt.SequenceNo != 0) //Basheer on 28-05-2020
            {
                msg = applicaton + "-" + one_rqt.RequestId + " was Paid and Closed by " + one_rqt.RoleId + ' ' + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ". ";
            }
            else if (one_rqt.Status == "REJ")
            {
                if (one_rqt.Reason == null)
                {
                    msg = applicaton + "-" + one_rqt.RequestId + " was Rejected by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ". ";
                }
                else
                {
                    msg = applicaton + "-" + one_rqt.RequestId + " was Rejected by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ", Remark : " + one_rqt.Reason + ". ";
                }
            }
            else if (one_rqt.Status == "CLS")
            {
                msg = applicaton + "-" + one_rqt.RequestId + " was Closed by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ". ";
            }
            else if (one_rqt.Status == "HLD")
            {
                if (one_rqt.Reason == null)
                {
                    msg = applicaton + "-" + one_rqt.RequestId + " was Hold by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ". ";
                }
                else
                {
                    msg = applicaton + "-" + one_rqt.RequestId + " was Hold by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ", Remark : " + one_rqt.Reason + ". ";
                }
            }
            else if (one_rqt.Status == "FWD")
            {
                if (one_rqt.Reason == null)
                {
                    msg = applicaton + "-" + one_rqt.RequestId + " was eforwarded by " + one_rqt.From_Name() + " to " + one_rqt.To_Name() + " on " + one_rqt.TimeStamp + ".";
                }
                else
                {
                    msg = applicaton + "-" + one_rqt.RequestId + " was eforwarded by " + one_rqt.From_Name() + " to " + one_rqt.To_Name() + " on " + one_rqt.TimeStamp + ", Remark : " + one_rqt.Reason + ".";
                }
            }
            else if (one_rqt.Status == "ESC")
            {
                //Basheer canged on 17-01-2020 to show role
                //msg = applicaton + "-" + one_rqt.RequestId + " was escalated by " + one_rqt.From_Name() + " to " + one_rqt.To_Name() + " on " + one_rqt.TimeStamp + ".";
                if (one_rqt.Reason == null)
                {
                    msg = applicaton + "-" + one_rqt.RequestId + " was escalated by " + one_rqt.RoleId + ' ' + one_rqt.From_Name() + " to " + one_rqt.RoleId_To + ' ' + one_rqt.To_Name() + " on " + one_rqt.TimeStamp + ".";
                }
                else
                {
                    msg = applicaton + "-" + one_rqt.RequestId + " was escalated by " + one_rqt.RoleId + ' ' + one_rqt.From_Name() + " to " + one_rqt.RoleId_To + ' ' + one_rqt.To_Name() + " on " + one_rqt.TimeStamp + ", Remark : " + one_rqt.Reason + ".";
                }
            }
            else if (one_rqt.Status == "BKP")
            {
                if (one_rqt.Reason == null)
                {
                    msg = applicaton + "-" + one_rqt.RequestId + " was send back to previous approver  by " + one_rqt.RoleId + ' ' + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ".";// 24-02-2020 ARCHANA SRISHTI
                }
                else
                {
                    msg = applicaton + "-" + one_rqt.RequestId + " was send back to previous approver by " + one_rqt.RoleId + ' ' + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ", Remark : " + one_rqt.Reason + ".";// 24-02-2020 ARCHANA SRISHTI
                }
            }
            else if (one_rqt.Status == "BKI")
            {
                if (one_rqt.Reason == null)
                {
                    msg = applicaton + "-" + one_rqt.RequestId + " was send back to " + one_rqt.To_Name() + " by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ".";
                }
                else
                {
                    msg = applicaton + "-" + one_rqt.RequestId + " was send back to " + one_rqt.To_Name() + " by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ", Remark : " + one_rqt.Reason + ".";
                }
            }
            else if (one_rqt.Status == "CNL")
            {
                if (one_rqt.Reason == null || one_rqt.Reason == "")                                                                                                    //Basheer on 04-02-2020
                {
                    msg = applicaton + "-" + one_rqt.RequestId + " was cancelled by " + one_rqt.RoleId + ' ' + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + "."; //21-02-2020 ARCHANA SRISHI UPDATED WITH ROLE ID
                }
                else
                {
                    msg = applicaton + "-" + one_rqt.RequestId + " was cancelled by " + one_rqt.RoleId + ' ' + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ", Remark : " + one_rqt.Reason + ".";//21-02-2020 ARCHANA SRISHI UPDATED WITH ROLE ID
                }
            }
            else if (one_rqt.Status == "EDT")
            {
                msg = applicaton + "-" + one_rqt.RequestId + " was edited by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ".";
            }
            else if (one_rqt.Status == "UPC")
            {
                msg = applicaton + "-" + one_rqt.RequestId + " is currently being processed by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ".";//28-02-2020 ARCHANA K V SRISHTI
            }
            else if (one_rqt.Status == "RRT")
            {
                if (one_rqt.Reason == null)
                {
                    msg = applicaton + "-" + one_rqt.RequestId + " was rerouted by " + one_rqt.From_Name() + " to " + one_rqt.To_Name() + " on " + one_rqt.TimeStamp + ".";
                }
                else
                {
                    msg = applicaton + "-" + one_rqt.RequestId + " was rerouted by " + one_rqt.From_Name() + " to " + one_rqt.To_Name() + " on " + one_rqt.TimeStamp + ", Remark : " + one_rqt.Reason + ".";
                }
            }
            else if (one_rqt.Status == "DST")
            {
                msg = one_rqt.RoleId_To + " " + one_rqt.To_Name() + " on " + one_rqt.TimeStamp + ".";
            }
            else if (one_rqt.Status == "EDIT") //Basheer on 06-02-2020
            {
                msg = msg = applicaton + "-" + one_rqt.RequestId + " was Edited by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ".";
                //msg = applicaton + "-" + one_rqt.RequestId + " was Submited from " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp + ". ";
            }
            //Basheer on 28-05-2020 for TA requests
            else if (one_rqt.Status == "TAP")// CASH ADVANCE NOT READY
            {
                msg = applicaton + "-" + one_rqt.RequestId + " Cash advance (Cash Paid) is Processed by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp;
            }
            else if (one_rqt.Status == "NTP")// CASH ADVANCE NOT READY
            {
                msg = applicaton + "-" + one_rqt.RequestId + " Cash advance (Cash not Paid) is Processed by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp;
            }
            else if (one_rqt.Status == "TRD")// TICKET READY
            {
                msg = applicaton + "-" + one_rqt.RequestId + " Travel Ticket Booking (Ticket Ready) is Processed by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp;
            }
            else if (one_rqt.Status == "TNR") // TICKET NOT READY
            {
                msg = applicaton + "-" + one_rqt.RequestId + " Travel Ticket Booking (Ticket not Ready) is Processed by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp;
            }
            else if (one_rqt.Status == "CRD") //RENT CAR READY
            {
                msg = applicaton + "-" + one_rqt.RequestId + " Rent a car Booking (Car Ready) is Processed by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp;
            }
            else if (one_rqt.Status == "CNR") // RENT CAR NOT READY
            {
                msg = applicaton + "-" + one_rqt.RequestId + " Rent a car Booking (Car not Ready) is  Processed by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp;
            }
            else if (one_rqt.Status == "HBD") // HOTEL BOOKING READY
            {
                msg = applicaton + "-" + one_rqt.RequestId + " Hotel Booking (Hotel Ready) is Processed by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp;
            }
            else if (one_rqt.Status == "HNR") // HOTEL BOOKING NOT READY
            {
                msg = applicaton + "-" + one_rqt.RequestId + " Hotel Booking (Hotel not Ready) not Processed by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp;
            }
            else if (one_rqt.Status == "VRD") // EXIT ENTRY VISA READY
            {
                msg = applicaton + "-" + one_rqt.RequestId + " Exit Entry Visa (Visa Ready) is Processed by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp;
            }
            else if (one_rqt.Status == "VNR") // EXIT ENTRY VISA NOT READY
            {
                msg = applicaton + "-" + one_rqt.RequestId + " Exit Entry Visa (Visa not Ready) is  Processed by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp;
            }
            else if (one_rqt.Status == "FRD") // FOREIGN VISA READY
            {
                msg = applicaton + "-" + one_rqt.RequestId + " Foreign Visa (Visa Ready) is Processed by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp;
            }
            else if (one_rqt.Status == "FNR") // FOREIGN VISA NOT READY
            {
                msg = applicaton + "-" + one_rqt.RequestId + " Foreign Visa (Visa not Ready) is  Processed by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp;
            }
            else if (one_rqt.Status == "IRD") // TRAVEL INSURANCE READY
            {
                msg = applicaton + "-" + one_rqt.RequestId + " Travel Insurance (Insurance Ready) is Processed by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp;
            }
            else if (one_rqt.Status == "INR") // TRAVEL INSURANCE NOT READY
            {
                msg = applicaton + "-" + one_rqt.RequestId + " Travel Insurance (Insurance not Ready) is Processed by " + one_rqt.From_Name() + " on " + one_rqt.TimeStamp;
            }
            else if (one_rqt.Status == "PRSEMAIL") //07-07-2020 Basheer
            {
                msg = one_rqt.RoleId_To + " " + one_rqt.To_Name() + " on " + one_rqt.TimeStamp + ".";
            }
            return(msg);
        }