Esempio n. 1
0
        public JsonResult SyncDefToInsDef(string defID)
        {
            FlowFO flowFO = new FlowFO();

            flowFO.SyncDefToInsDef(defID);
            return(Json(""));
        }
Esempio n. 2
0
        public JsonResult CopyInsDefFlowTo(string InsDefFlowID)
        {
            var flowFO = new FlowFO();

            flowFO.CopyInsDefFlowTo(InsDefFlowID);
            return(Json(new { InsDefFlowID = InsDefFlowID }));
        }
Esempio n. 3
0
        //克隆流程
        public JsonResult Clone(string id)
        {
            FlowFO flowFO = FormulaHelper.CreateFO <FlowFO>();

            return(Json(new { ID = flowFO.CloneDefFlow(id) }));
            //return flowFO.CloneDefFlow(id);
        }
Esempio n. 4
0
        public JsonResult CloneInsDefFlow(string insDefId, string flowIds)
        {
            var flowFO          = new FlowFO();
            var newInsDefFlowID = flowFO.CloneInsDefFlow(insDefId, flowIds);

            return(Json(new { NewInsDefFlowId = newInsDefFlowID }));
        }
Esempio n. 5
0
        public JsonResult Delete(string tmplCode, string listIDs)
        {
            var listDef = entities.Set <S_UI_Layout>().SingleOrDefault(c => c.Code == tmplCode);

            if (listDef.DenyDeleteFlow == "1" || listDef.DenyDeleteFlow == "true")
            {
                SQLHelper flowHelper = SQLHelper.CreateSqlHelper(ConnEnum.WorkFlow);
                string    flowSql    = string.Format("select count(1) from S_WF_InsFlow where FormInstanceID in('{0}')", listIDs.Replace(",", "','"));
                var       obj        = flowHelper.ExecuteScalar(flowSql);
                if (obj.ToString() != "0")
                {
                    throw new BusinessException("已经启动流程的表单不能删除!");
                }
            }

            SQLHelper sqlHeler = SQLHelper.CreateSqlHelper(listDef.ConnName);
            string    sql      = string.Format("delete from {0} where ID in('{1}')", listDef.TableNames.Split(',')[0], listIDs.Replace(",", "','"));

            sqlHeler.ExecuteNonQuery(sql);

            FlowFO flowFO = FormulaHelper.CreateFO <FlowFO>();

            foreach (string id in listIDs.Split(','))
            {
                flowFO.DeleteFlowByFormInstanceID(id);
            }

            return(Json(""));
        }
Esempio n. 6
0
        public FileResult ExportSql(string defID, string fileCode)
        {
            FlowFO       flowFO = FormulaHelper.CreateFO <FlowFO>();
            string       sql    = flowFO.exportSql(defID);
            MemoryStream ms     = new MemoryStream(System.Text.Encoding.Default.GetBytes(sql));

            ms.Position = 0;
            return(File(ms, "application/octet-stream ; Charset=UTF8", fileCode + ".sql"));
        }
Esempio n. 7
0
        public virtual bool ExecTaskExec(S_WF_InsTaskExec taskExec, S_WF_InsDefRouting routing, string nextExecUserIDs, string nextExecUserNames, string nextExecUserIDsGroup, string nextExecRoleIDs, string nextExecOrgIDs, string execComment)
        {
            FlowFO flowFO = new FlowFO();

            //流程表单定义的流程逻辑
            ExecFlowLogic(routing.Code, taskExec.S_WF_InsFlow.FormInstanceID);

            return(flowFO.ExecTask(taskExec.ID, routing.ID, nextExecUserIDs, nextExecUserNames, nextExecUserIDsGroup, nextExecRoleIDs, nextExecOrgIDs, execComment, Request["RoutingID"]));
        }
Esempio n. 8
0
        public FileResult ExportSqls(string defIDs)
        {
            FlowFO flowFO = FormulaHelper.CreateFO <FlowFO>();

            StringBuilder sb = new StringBuilder();

            foreach (string defID in defIDs.Split(','))
            {
                sb.AppendLine();
                sb.Append(flowFO.exportSql(defID));
            }

            MemoryStream ms = new MemoryStream(System.Text.Encoding.Default.GetBytes(sb.ToString()));

            ms.Position = 0;
            return(File(ms, "application/octet-stream ; Charset=UTF8", "Workflow.sql"));
        }
Esempio n. 9
0
        public virtual bool ExecTaskExec(S_WF_InsTaskExec taskExec, S_WF_InsDefRouting routing, string nextExecUserIDs, string nextExecUserNames, string nextExecUserIDsGroup, string nextExecRoleIDs, string nextExecOrgIDs, string execComment)
        {
            FlowFO flowFO = new FlowFO();

            return(flowFO.ExecTask(taskExec.ID, routing.ID, nextExecUserIDs, nextExecUserNames, nextExecUserIDsGroup, nextExecRoleIDs, nextExecOrgIDs, execComment, Request["RoutingID"]));//Request["RoutingID"] 当分支路由时,其值为逗号隔开的全部分支ID
        }
Esempio n. 10
0
        public virtual void UnExecTaskExec(string taskExecID)
        {
            FlowFO flowFO = new FlowFO();

            flowFO.UnExecTask(taskExecID);
        }
Esempio n. 11
0
        public bool ExecTaskExec(Logic.Domain.S_WF_InsTaskExec taskExec, Logic.Domain.S_WF_InsDefRouting routing, string nextExecUserIDs, string nextExecUserNames, string nextExecUserIDsGroup, string nextExecRoleIDs, string nextExecOrgIDs, string execComment, string code)
        {
            FlowFO flowFO = new FlowFO();

            return(flowFO.ExecTask(taskExec.ID, routing.ID, nextExecUserIDs, nextExecUserNames, nextExecUserIDsGroup, nextExecRoleIDs, nextExecOrgIDs, execComment, routing.ID));//原参数为Request["RoutingID"],前台传入参数, 当分支路由时,其值为逗号隔开的全部分支ID;改为routing.ID潜在问题,不支持分支。
        }
Esempio n. 12
0
        public string FlowChart(string formInstanceID, string tmplCode)
        {
            FlowFO flowFO = new FlowFO();

            return(flowFO.FlowChart(formInstanceID, tmplCode));
        }
Esempio n. 13
0
        public void Execute(IJobExecutionContext context)
        {
            var flowEntities = FormulaHelper.GetEntities <WorkflowEntities>();

            #region 设定自动发送时间

            var taskExecList = flowEntities.S_WF_InsTaskExec.Where(c => c.ExecTime == null && c.TimeoutAutoPass == null).ToList();
            foreach (var taskExec in taskExecList)
            {
                int timeout = 0;
                var step    = taskExec.S_WF_InsTask.S_WF_InsDefStep;
                if (step.TimeoutAutoPass != null)
                {
                    timeout = (int)step.TimeoutAutoPass;
                }
                //TimeoutAutoPass 为负数时 轮巡直接自动通过
                if (timeout == 0)
                {
                    taskExec.TimeoutAutoPass       = DateTime.MaxValue;
                    taskExec.TimeoutAutoPassResult = "无设定";
                    continue;
                }
                var calendarService = FormulaHelper.GetService <ICalendarService>();
                taskExec.TimeoutAutoPass = calendarService.GetTimeoutTime((DateTime)taskExec.CreateTime, timeout);
            }
            flowEntities.SaveChanges();

            #endregion

            #region 超时自动执行任务

            taskExecList = flowEntities.S_WF_InsTaskExec.Where(c => c.ExecTime == null && string.IsNullOrEmpty(c.TimeoutAutoPassResult) && DateTime.Now > c.TimeoutAutoPass).ToList();
            string FlowApiUrl = System.Configuration.ConfigurationManager.AppSettings["FlowApiUrl"];
            if (FlowApiUrl.EndsWith("/"))
            {
                FlowApiUrl = FlowApiUrl.TrimEnd('/');
            }

            foreach (var taskExec in taskExecList)
            {
                try
                {
                    var    agentUser = FormulaHelper.GetUserInfoByID(taskExec.ExecUserID);
                    FlowFO flowFO    = new FlowFO();
                    //flowFO.AutoExecTask(taskExec.ID, "自动通过");

                    var routingList = flowFO.AutoExecGetRoutingList(taskExec.ID);
                    if (routingList.Count == 0)
                    {
                        continue;
                    }
                    var routing = routingList[0];
                    if (routing.Type == Workflow.Logic.RoutingType.Branch.ToString())
                    {
                        continue;
                    }

                    var    formInstanceID = taskExec.S_WF_InsFlow.FormInstanceID;
                    var    param          = flowFO.GetRoutingParams(routing, taskExec, formInstanceID);
                    string nextUserIDs    = param.userIDs;

                    var uri = string.Format("{0}/FlowTaskAPI/SubmitForm?id={1}&FormInstanceID={2}&TaskExecID={3}&NextExecUserIDs={4}&Comment={5}&ExecUserID={6}&UserAccount={7}&IsMobileRequest=6",
                                            FlowApiUrl, routingList[0].ID, formInstanceID, taskExec.ID, nextUserIDs, "自动通过", taskExec.TaskUserID, agentUser.Code);
                    var str = WebApiClientHelper.DoJsonRequest(uri, EnuHttpMethod.Post, new { FormDic = "{ID:\"" + formInstanceID + "\"}", FlowCode = "" });

                    //5.3平台FlowTaskAPI
                    //var uri = string.Format("{0}/FlowTaskAPI/0/Submit?id={1}&FormInstanceID={2}&TaskExecID={3}&NextExecUserIDs={4}&Comment={5}&ExecUserID={6}&UserAccount={7}",
                    //    FlowApiUrl, routingList[0].ID, formInstanceID, taskExec.ID, nextUserIDs, "自动通过", taskExec.TaskUserID, agentUser.Code);
                    //var str = WebApiClientHelper.DoJsonRequest(uri, EnuHttpMethod.Get);

                    if (str.ToLower() == "true")
                    {
                        taskExec.TimeoutAutoPassResult = "Success";
                        flowEntities.SaveChanges();
                    }
                    else
                    {
                        throw new Exception("FlowTaskAPI报错");
                    }
                }
                catch (Exception e)
                {
                    SQLHelper sqlHelper = SQLHelper.CreateSqlHelper(ConnEnum.WorkFlow);
                    string    sql       = "update S_WF_InsTaskExec set TimeoutAutoPassResult='{0}' where ID='{1}'";
                    string    str       = e.Message ?? "";
                    if (str.Length > 500)
                    {
                        str = str.Substring(0, 500);
                    }
                    sql = string.Format(sql, str, taskExec.ID);
                    sqlHelper.ExecuteNonQuery(sql); //记录错误
                }
            }

            #endregion
        }