コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        protected void InitStepMember()
        {
            //流程定义的GUID
            string flowGuid = Request.QueryString["ProcessGUID"] == null ? "" : Request.QueryString["ProcessGUID"].ToString();
            string Step     = Request.QueryString["Step"] == null ? "" : Request.QueryString["Step"].ToString();

            if (string.IsNullOrEmpty(flowGuid) || string.IsNullOrEmpty(Step))
            {
                base.RegisterStartupScript("", "<script>alert('流程GUID为空');</script>");
            }
            else
            {
                String           processGUID = flowGuid;
                IWorkflowService service     = new WorkflowService();
                switch (Step)
                {
                case "start":    //流程第一步选择
                    ActivityEntity firstActivity     = service.GetFirstActivity(processGUID);
                    String         firstActivityGUID = firstActivity.ActivityGUID;

                    string conditions = Request.QueryString["condition"] == null ? "" : Request.QueryString["condition"].ToString();

                    IList <NodeView> nextNodes = service.GetNextActivity(processGUID, firstActivityGUID, GetCondition(conditions));
                    if (nextNodes != null)
                    {
                        Repeater1.DataSource = nextNodes;
                        Repeater1.DataBind();
                    }
                    else
                    {
                        LiteralMSG.Text = "当前没有需要您办理的步骤";
                    }
                    break;

                case "task":
                    try
                    {
                        if (LoginUserID > 0)
                        {
                            string      condition  = Request.QueryString["condition"] == null ? "" : Request.QueryString["condition"].ToString();
                            string      instanceId = Request.QueryString["instanceId"] == null ? string.Empty : Request.QueryString["instanceId"].ToString();
                            WfAppRunner runner     = new WfAppRunner();
                            runner.AppInstanceID       = instanceId;
                            runner.ProcessGUID         = processGUID;
                            runner.UserID              = this.LoginUserID.ToString();
                            hiddenIsSelectMember.Value = "true";
                            IList <NodeView> NodeViewList = service.GetNextActivityTree(runner, GetCondition(condition));
                            if (NodeViewList != null)
                            {
                                Repeater1.DataSource = NodeViewList;
                                Repeater1.DataBind();
                                if (NodeViewList.Count == 1)
                                {
                                    string nextActivityGuid = NodeViewList[0].ActivityGUID;

                                    /*
                                     * ActivityEntity activityEntity = service.GetActivityInstance(processGUID, nextActivityGuid);
                                     * if (activityEntity.ActivityType == ActivityTypeEnum.EndNode)
                                     * {
                                     *  hiddenIsSelectMember.Value = "false";
                                     * }*/
                                }
                            }
                            else
                            {
                                LiteralMSG.Text = "当前没有需要您办理的步骤";
                            }
                        }
                    }
                    catch (Exception ex)
                    { }
                    break;
                }
            }
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        protected void InitStepMember()
        {
            string strNodes = string.Empty;

            //流程定义的GUID
            string flowGuid = Request.QueryString["ProcessGUID"] == null ? "" : Request.QueryString["ProcessGUID"].ToString();
            string Step     = Request.QueryString["Step"] == null ? "" : Request.QueryString["Step"].ToString();

            if (string.IsNullOrEmpty(flowGuid) || string.IsNullOrEmpty(Step))
            {
                base.RegisterStartupScript("", "<script>alert('流程GUID为空');</script>");
            }
            else
            {
                List <ZTreeEntity> zTreeEntityList = new List <ZTreeEntity>();

                String           processGUID = flowGuid;
                IWorkflowService service     = new WorkflowService();
                switch (Step)
                {
                case "start":    //流程第一步选择
                    ActivityEntity   firstActivity     = service.GetFirstActivity(processGUID, string.Empty);
                    String           firstActivityGUID = firstActivity.ActivityGUID;
                    string           conditions        = Request.QueryString["condition"] == null ? "" : Request.QueryString["condition"].ToString();
                    IList <NodeView> nextNodes         = service.GetNextActivity(processGUID, string.Empty, firstActivityGUID, GetCondition(conditions));
                    if (nextNodes != null)
                    {
                        if (nextNodes != null)
                        {
                            ZTreeEntity zTreeEntity = null;
                            foreach (NodeView item in nextNodes)
                            {
                                zTreeEntity         = new ZTreeEntity();
                                zTreeEntity.id      = string.Format("step[{0}]", item.ActivityGUID);
                                zTreeEntity.pId     = "0";
                                zTreeEntity.name    = item.ActivityName;
                                zTreeEntity.nocheck = false;
                                zTreeEntityList.Add(zTreeEntity);


                                DataTable dt = GetUsers(item.Roles);
                                foreach (DataRow dr in dt.Rows)
                                {
                                    zTreeEntity         = new ZTreeEntity();
                                    zTreeEntity.id      = string.Format("step[{0}]member[{1}]", item.ActivityGUID, dr["ID"].ToString());
                                    zTreeEntity.pId     = string.Format("step[{0}]", item.ActivityGUID);
                                    zTreeEntity.name    = dr["UserName"].ToString();
                                    zTreeEntity.nocheck = false;
                                    zTreeEntityList.Add(zTreeEntity);
                                }
                            }
                        }
                    }
                    else
                    {
                        LiteralMSG.Text = "当前没有需要您办理的步骤";
                    }
                    break;

                case "task":
                    try
                    {
                        if (LoginUserID > 0)
                        {
                            string      condition  = Request.QueryString["condition"] == null ? "" : Request.QueryString["condition"].ToString();
                            string      instanceId = Request.QueryString["instanceId"] == null ? string.Empty : Request.QueryString["instanceId"].ToString();
                            WfAppRunner runner     = new WfAppRunner();
                            runner.AppInstanceID       = instanceId;
                            runner.ProcessGUID         = processGUID;
                            runner.UserID              = this.LoginUserID.ToString();
                            hiddenIsSelectMember.Value = "true";
                            IList <NodeView> NodeViewList = service.GetNextActivityTree(runner, GetCondition(condition));


                            if (NodeViewList != null)
                            {
                                ZTreeEntity zTreeEntity = null;
                                foreach (NodeView item in NodeViewList)
                                {
                                    zTreeEntity      = new ZTreeEntity();
                                    zTreeEntity.id   = string.Format("step[{0}]", item.ActivityGUID);
                                    zTreeEntity.pId  = "0";
                                    zTreeEntity.name = item.ActivityName;
                                    zTreeEntityList.Add(zTreeEntity);

                                    DataTable dt = GetUsers(item.Roles);
                                    foreach (DataRow dr in dt.Rows)
                                    {
                                        zTreeEntity         = new ZTreeEntity();
                                        zTreeEntity.id      = string.Format("step[{0}]member[{1}]", item.ActivityGUID, dr["ID"].ToString());
                                        zTreeEntity.pId     = string.Format("step[{0}]", item.ActivityGUID);
                                        zTreeEntity.name    = dr["UserName"].ToString();
                                        zTreeEntity.nocheck = false;
                                        zTreeEntityList.Add(zTreeEntity);
                                    }
                                }
                            }
                            else
                            {
                                LiteralMSG.Text = "当前没有需要您办理的步骤";
                            }
                        }
                    }
                    catch (Exception ex)
                    { }
                    break;
                }
                strNodes = JsonHelper.ObjectToJson(zTreeEntityList);
            }

            Response.Write(strNodes);
            Response.End();
        }
コード例 #3
0
        public async Task <ActionResult> Add(LeaveViewModel leave)
        {
            string processGUID = leave.ProcessGUID;

            //验证不通过,重新填写表单
            if (!ModelState.IsValid)
            {
                return(View());
            }
            IWorkflowService service = new WorkflowService();
            //流程开始第一步
            ActivityEntity firstActivity = service.GetFirstActivity(leave.ProcessGUID);

            //该处较上一版本有变化,上一版本为GUID类型
            string           firstActivityGUID = firstActivity.ActivityGUID;
            IList <NodeView> nextActivity      = service.GetNextActivity(leave.ProcessGUID, firstActivityGUID, GetCondition("days-" + leave.Days));

            //表示有下一位审批者
            if (nextActivity.Count() > 0)
            {
                //下一步角色ID审批者
                string outerId = nextActivity[0].Roles[0].ID.ToString();
                //这里只取第一个审批者,WebDemo 是弹窗形式选择
                //审批用户id
                IEnumerable <int> userId = RoleManager.FindById(Convert.ToInt32(outerId)).Users.Select(t => t.UserId);
                ApplicationUser   user   = await UserManager.FindByIdAsync(Convert.ToInt32(userId.ToList()[0]));

                //提交请假信息
                LeaveEntity leaveE = new LeaveEntity()
                {
                    FromDate            = leave.BeginTime,
                    ToDate              = leave.EndTime,
                    Days                = leave.Days,
                    LeaveType           = leave.LeaveType,
                    CurrentActivityText = "",
                    Status              = 0,
                    CreatedUserID       = Convert.ToInt32(User.Identity.GetUserId()),
                    CreatedUserName     = User.Identity.Name,
                    CreatedDate         = DateTime.Now
                };
                HrsLeaveResult result = new WorkFlowManager().Insert(leaveE);
                if (result.Successed)
                {
                    WfAppRunner initiator = new WfAppRunner();
                    initiator.AppName       = "请假流程";
                    initiator.AppInstanceID = result.ResultIdentities.ToString();
                    initiator.ProcessGUID   = processGUID;
                    initiator.UserID        = User.Identity.GetUserId();
                    initiator.UserName      = User.Identity.Name;
                    initiator.Conditions    = GetCondition(string.Format("days-{0}", leave.Days));
                    WfExecutedResult startedResult = service.StartProcess(initiator);
                    if (startedResult.Status != WfExecutedStatus.Success)
                    {
                        //给出提示
                    }
                    //送往下一步
                    PerformerList pList = new PerformerList();
                    //这里使用真实姓名代替
                    pList.Add(new Performer(user.Id.ToString(), user.RealName));
                    initiator.NextActivityPerformers = new Dictionary <String, PerformerList>();
                    initiator.NextActivityPerformers.Add(nextActivity[0].ActivityGUID, pList);
                    WfExecutedResult runAppResult = service.RunProcessApp(initiator);
                    if (runAppResult.Status != WfExecutedStatus.Success)
                    {
                        this.Content("<script>alert('" + runAppResult.Message + "');</script>");
                    }
                    //保存业务数据
                    BizAppFlowEntity AppFlowEntity = new BizAppFlowEntity();
                    AppFlowEntity.AppName         = "流程发起";
                    AppFlowEntity.AppInstanceID   = result.ResultIdentities.ToString();
                    AppFlowEntity.ActivityName    = "流程发起";
                    AppFlowEntity.Remark          = string.Format("申请人:{0}-{1}", User.Identity.GetUserId(), User.Identity.Name);
                    AppFlowEntity.ChangedTime     = DateTime.Now;
                    AppFlowEntity.ChangedUserID   = User.Identity.GetUserId();
                    AppFlowEntity.ChangedUserName = User.Identity.Name;
                    HrsLeaveResult resultBiz = new WorkFlowManager().Insert(AppFlowEntity);
                    if (resultBiz.Successed)
                    {
                        //给出前台提示
                        this.Content("", "<script>alert('流程发起成功');</script>");
                    }
                }
            }
            else
            {
                //显示前台错误,人事人员审批失败
                ModelState.AddModelError("Human", "该用户暂时不可提交审批,未查询到该用户的下一位审批者");
                return(View());
            }
            return(RedirectToAction("MySlickflow", "Slickflow"));
        }