public JsonResult SyncDefToInsDef(string defID) { FlowFO flowFO = new FlowFO(); flowFO.SyncDefToInsDef(defID); return(Json("")); }
public JsonResult CopyInsDefFlowTo(string InsDefFlowID) { var flowFO = new FlowFO(); flowFO.CopyInsDefFlowTo(InsDefFlowID); return(Json(new { InsDefFlowID = InsDefFlowID })); }
//克隆流程 public JsonResult Clone(string id) { FlowFO flowFO = FormulaHelper.CreateFO <FlowFO>(); return(Json(new { ID = flowFO.CloneDefFlow(id) })); //return flowFO.CloneDefFlow(id); }
public JsonResult CloneInsDefFlow(string insDefId, string flowIds) { var flowFO = new FlowFO(); var newInsDefFlowID = flowFO.CloneInsDefFlow(insDefId, flowIds); return(Json(new { NewInsDefFlowId = newInsDefFlowID })); }
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("")); }
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")); }
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"])); }
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")); }
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 }
public virtual void UnExecTaskExec(string taskExecID) { FlowFO flowFO = new FlowFO(); flowFO.UnExecTask(taskExecID); }
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潜在问题,不支持分支。 }
public string FlowChart(string formInstanceID, string tmplCode) { FlowFO flowFO = new FlowFO(); return(flowFO.FlowChart(formInstanceID, tmplCode)); }
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 }