public void runWorkflowForSelectedMethods(workflow workflow) { Common.Extensions.TraceLog.Information("Running workflow {name}", SelectedWorkflow.name); var worker = new BackgroundWorker(); worker.DoWork += (o, s) => { IsBusy = true; try { foreach (var task in workflow.task.Where(x => !x.isDisabled)) { runTask(task); } } catch (Exception e) { Common.Extensions.ErrorLog.Error(e, "@ runWorkflowForSelectedMethods"); } }; worker.RunWorkerCompleted += (o, s) => { ExecutedWorkflow = workflow; if (SelectedConfiguration.method .Any(m => m.isValidTest == eValidTest.Passed || m.isValidTest == eValidTest.Failed)) { OnPropertyChanged("MethodsTable"); } IsBusy = false; }; worker.RunWorkerAsync(); }
/// <summary> /// 检查操作者是否有权限执行该动作 /// </summary> /// <param name="workflowName">工作流名称</param> /// <param name="dataid">业务表id</param> /// <param name="actionName">动作名称</param> /// <param name="operatorid">操作者ID</param> /// <returns></returns> public bool checkNodeAction(string workflowName, int dataid, string actionName, int operatorid) { workflowEx workflowEx = new workflowEx(); workflow wf = workflowEx.getworkflow(workflowName); //获取该工作流名称对应的工作流数据 workflowinstancesEx wfinstancesEx = new workflowinstancesEx(); workflowinstances wfinstances = wfinstancesEx.getworkflowinstances(wf.id, dataid); //获得工作流执行结果 //状态跃迁时 //判断操作者是否有权限 if (wfinstances != null) { return(checkNodeAction(actionName, operatorid, wf, wfinstances)); } else//新增动作只判断当前操作者是否有权限执行这个动作 { workflownodeactionEx wfnaEx = new workflownodeactionEx(); workflownodeaction wfna = wfnaEx.getworkflownodeaction(wf.id, actionName); workflownodeoperatorEx wfnoEx = new workflownodeoperatorEx(); workflownodeoperator wfno = wfnoEx.getworkflownodeoperator(wfna.id, operatorid); if (wfno == null) { return(false); } return(true); } }
public int IniciarWorkflow(int idWorkflow) { try { workflow workflowCreate = db.workflow.Where(x => x.id == idWorkflow).FirstOrDefault(); if (workflowCreate == null) { throw new IndexOutOfRangeException("El workflow " + idWorkflow + " no existe en el sistema"); } estados estado = db.estados.FirstOrDefault(x => x.id_workflow == idWorkflow && x.estado_inicial == true); if (estado == null) { throw new IndexOutOfRangeException("El estado inicial no se encuentra configurado para el workflow " + workflowCreate.nombre); } var change = db.proceso_workflow.Add(new proceso_workflow()); change.id_workflow = workflowCreate.id; change.id_estado_actual = estado.id; db.SaveChanges(); trackAsync.Add(Task.Run(() => TrackAsync("resultado", "IniciarWorkflow", change.id.ToString(), "id:" + change.id + ",estadoInicial:" + estado.id + ",nombreWorkflow:" + workflowCreate.nombre))); return(change.id); } catch (Exception ex) { trackAsync.Add(Task.Run(() => TrackAsync("excepcion", "IniciarWorkflow", ex.ToString(), ""))); throw ex; } }
/// <summary> /// 获取表单数据 /// </summary> public void GetFormJson() { int id = Convert.ToInt32(ctx.Request["keyValue"]); workflow wf = IdalCommon.IworkflowEx.getEntityById(id); writeJsonBack(wf.ToJson()); }
public ActionResult wf() { var service = new workflow(); string pid = service.test(); return(Content(pid)); }
public void StartWorkflow(int value, user user) { var serviceWorkflow = new workflow(); serviceWorkflow.owner = user; serviceWorkflow.workflowId = value; WorkFlows.Add(new WorkFlow(serviceWorkflow)); }
public int ProcessActivity(int processID, int step, string valor) { ProcessIDOrderIDSpecification spec = new ProcessIDOrderIDSpecification(processID, step); workflow activity = _workFlowRepository.FindWorkFlow(spec); string sp = activity.sp.Replace("{0}", valor); return(_workFlowRepository.execWorkFlow(sp)); }
public List <action> getActionListbywfid(int wfid) { workflow wf = workflowEx.Instance.getEntityById(wfid); if (wf != null) { return(db.Queryable <action>().Where(p => p.actionowner == wf.wfname).ToList()); } return(null); }
/// <summary> /// 节点跃迁方法 /// </summary> /// <param name="workflowName">工作流名称</param> /// <param name="dataid">业务数据主码</param> /// <param name="actionName">动作名称</param> /// <param name="operatorid">操作者ID</param> /// <param name="executer">执行者</param> /// <param name="remark">工作流执行备注</param> /// <param name="isRecordTrace">是否记录工作流操作日志(默认记录)</param> /// <returns>返回是否执行成功</returns> public bool trace(string workflowName, int dataid, string actionName, int operatorid, string executer, string remark, bool isRecordTrace = true) { workflowEx workflowEx = new workflowEx(); workflow wf = workflowEx.getworkflow(workflowName); int instancesid = 0; workflowinstancesEx wfinstancesEx = new workflowinstancesEx(); workflowinstances wfinstances = wfinstancesEx.getworkflowinstances(wf.id, dataid); workflownodeactionEx wfnaEx = new workflownodeactionEx(); workflownodeaction wfna = wfnaEx.getworkflownodeaction(wf.id, actionName); workflownodeEx wfnEx = new workflownodeEx(); string sql = string.Empty; if (wfinstances != null) { int currentnodeid = wfna.nextnodeid; int?nodcodevalue = 0; if (wfna.nodetype == 2) //会签节点跳跃 { List <workflownodeaction> wfnas = wfnaEx.getcountersignnodeaction(wfna); //会签动作集合 nodcodevalue = (wfinstances.nodcode | wfna.nodeactioncode) == wfna.nodeactioncode ? wfinstances.nodcode : (wfinstances.nodcode + wfna.nodeactioncode); if (nodcodevalue != wfnas.Select(p => p.nodeactioncode).Sum()) { currentnodeid = wfna.currentnodeid; } } //更新Trace表节点信息 sql = string.Format(@"update {0} set currentnodeid={1}, nodcode={2} where id={3}", wf.wfinstancestable, currentnodeid, nodcodevalue, wfinstances.id); instancesid = wfinstances.id; db.SqlQueryDynamic(sql); //更新业务表工作流字段值 workflownode wfn = wfnEx.getworkflownode(wfna.nextnodeid); string sqlstr = string.Format("update {0} set {1}={2} where id={3}", wf.wfownertable, wf.wffieldname, wfn.wfnodememo); db.SqlQueryDynamic(sqlstr); } else { instancesid = insert(wf, instancesid, wfna, dataid); //更新业务表工作流字段值 workflownode wfn = wfnEx.getworkflownode(wfna.nextnodeid); string sqlstr = string.Format("update {0} set {1}='{2}' where id={3}", wf.wfownertable, wf.wffieldname, wfn.wfnodememo, dataid); db.SqlQueryDynamic(sqlstr); } if (isRecordTrace) { workflowinstancetracingsEx wfinstancetringEx = new workflowinstancetracingsEx(); wfinstancetringEx.insert(executer, instancesid, wfna); } return(true); }
public async Task InsertAsync(workflow workFlow) { try { await HttpHelper.Post(BaseUrl, workFlow); } catch (Exception e) { throw new ProxyException(Constants.ExceptionMessages.DatabaseException, e); } }
private void SaveWorkflowItem(workflow workflow) { var file = Path.Combine(ConfigurationManager.AppSettings["ConfigurationPath"], workflow.name); if (File.Exists(file)) { File.Delete(file); } XmlHelper <workflow> .Save(file, workflow); }
public int insert(workflow wf, int instancesid, workflownodeaction wfna, int dataid) { workflowinstances wfinstacnes = new workflowinstances(); wfinstacnes.ownertabledataid = dataid; wfinstacnes.nodcode = wfna.nodeactioncode; wfinstacnes.wfid = wf.id; wfinstacnes.currentnodeid = wfna.nextnodeid; instancesid = workflowinstancesEx.Instance.insert(wfinstacnes); return(instancesid); }
/// <summary> /// 提交表单数据 /// </summary> public void SubmitForm() { try { string keyValue = !string.IsNullOrEmpty(ctx.Request["keyValue"]) ? ctx.Request["keyValue"] : ctx.Request["id"]; workflow wf = HttpContextDataWrapper.DataToObject <workflow>(ctx); IdalCommon.IworkflowEx.SubmitForm(wf, keyValue); Success("操作成功!"); } catch (Exception) { Error("操作失败!"); } }
//送出表單 public ActionResult SentForm(Cwma model) { var service = new workflow(); string pid = service.test(Session["Account"].ToString(), Session["Did"].ToString(), model); model.Department = Session["Did"].ToString(); model.Applicant = Session["Account"].ToString(); model.Fid = pid; var db = new DatabaseEntities(); db.Cwma.Add(model); db.SaveChanges(); return(Content(pid)); }
/// <summary> /// 检查操作者是否有权限执行该动作 /// </summary> /// <param name="actionName">动作名称</param> /// <param name="operatorid">操作者ID</param> /// <param name="wf">工作流数据</param> /// <param name="wfinstances">工作流执行结果数据</param> /// <returns></returns> public bool checkNodeAction(string actionName, int operatorid, workflow wf, workflowinstances wfinstances) { workflownodeactionEx wfnaEx = new workflownodeactionEx(); workflownodeaction wfna = wfnaEx.getworkflownodeaction(wf.id, actionName); if (wfna.currentnodeid != wfinstances.currentnodeid) { return(false); } workflownodeoperatorEx wfnoEx = new workflownodeoperatorEx(); workflownodeoperator wfno = wfnoEx.getworkflownodeoperator(wfna.id, operatorid); if (wfno == null) { return(false); } return(true); }
public ActionResult WorkflowVisualization() { object wfid = this.ControllerContext.RequestContext.HttpContext.Request["wfid"]; if (wfid != null) { workflow wf = IdalCommon.IworkflowEx.getEntityById(Convert.ToInt32(wfid)); this.ViewBag.workflow = wf; string resutlt = "{}"; if (!string.IsNullOrEmpty(wf.wfjsonstr)) { resutlt = wf.wfjsonstr.TrimStart('"').TrimEnd('"'); } this.ViewBag.workflowjsonstr = resutlt; this.ViewBag.actionlist = wfselectoption.CreateList(IdalCommon.IactionEx.getActionListbywfid(Convert.ToInt32(wfid)), "id", "actiondescription"); this.ViewBag.rolelist = wfselectoption.CreateList(IdalCommon.IroleEx.getEntityList(), "id", "rolename"); } return(View()); }
public static bool checkNodeAction(string workflowName, int dataid, int actionid, int operatorid) { workflow wf = workflowEx.Instance.getworkflow(workflowName); if (wf.wfstatus == 2 || wf.wflock == 2)//工作流启用且未锁定 { return(false); } workflowinstances wfinstances = workflowinstancesEx.Instance.getworkflowinstances(wf.id, dataid); workflownodeaction wfna = workflownodeactionEx.Instance.getworkflownodeaction(wf.id, actionid); workflownodeoperator wfno = workflownodeoperatorEx.Instance.getworkflownodeoperator(wfna.id, operatorid); if (wfinstances != null) { if (wfna.nastatus == 2 || wfna.nalock == 2)//跃迁锁定 { return(false); } if (wfna.currentnodeid != wfinstances.currentnodeid)//不存在以当前状态为起点的跃迁 { return(false); } if (wfno == null)//不存在指定执行者的 执行条件 { return(false); } if (wfno.operatorlock == 2)//操作锁定 { return(false); } return(true); } else//新增动作只判断当前操作者是否有权限执行这个动作 { if (wfno == null) { return(false); } return(true); } }
public void WorkflowVisualization() { object wfid = ctx.Request["wfid"]; if (wfid != null) { workflow wf = IdalCommon.IworkflowEx.getEntityById(Convert.ToInt32(wfid)); tp.Put("workflow", wf.ToJson()); string resutlt = "{}"; if (!string.IsNullOrEmpty(wf.wfjsonstr)) { resutlt = wf.wfjsonstr.TrimStart('"').TrimEnd('"'); } tp.Put("workflowjsonstr", resutlt); string actionliststr = wfselectoption.CreateList(IdalCommon.IactionEx.getActionListbywfid(Convert.ToInt32(wfid)), "id", "actiondescription").ToJson(); tp.Put("actionlist", actionliststr); string roleliststr = wfselectoption.CreateList(IdalCommon.IroleEx.getEntityList(), "id", "rolename").ToJson(); tp.Put("rolelist", roleliststr); } tp.Display(ctx, "/Html/WorkflowVisualization.html"); }
public static void Main() { Console.WriteLine("Welcome to the Jungle!"); workflow myWorkflow = new workflow(); //Register all the activities, domains and workflows //(can also be done using GUI) myWorkflow.RegisterMyDomain(); myWorkflow.RegisterActivity("Activity1A", "Activity1"); myWorkflow.RegisterWorkflow(workflowName); //start the workflow Task.Run(() => myWorkflow.StartWorkflow(workflowName)); Task.Run(() => myWorkflow.StartWorkflow(workflowName)); //start the decider Task.Run(() => myWorkflow.Decider()); //start the workers Task.Run(() => myWorkflow.Worker("Activity1")); Task.Run(() => myWorkflow.Worker("Activity1")); Console.Read(); }
public HttpResponseMessage Get([FromUri] workflow parameters) { var result = new HttpResponseMessage(); workflowStart.Models.worflowParameters param = new workflowStart.Models.worflowParameters(); param.itemID = parameters.itemid; param.siteUrl = parameters.siteurl; param.workflowName = parameters.workflowname; if (parameters.initiationdata != null) { param.initiationData = JsonConvert.DeserializeObject <Dictionary <string, object> >(parameters.initiationdata); Dictionary <string, object> normalizeParam = new Dictionary <string, object>(); foreach (var k in param.initiationData) { normalizeParam.Add(k.Key.Replace(" ", ""), k.Value); } param.initiationData = normalizeParam; } spWorkflow wf = new spWorkflow(); if (wf.Execute(param)) { result.StatusCode = HttpStatusCode.OK; } else { result.Content = Request.CreateResponse(HttpStatusCode.InternalServerError, wf.responseMsg).Content; result.StatusCode = HttpStatusCode.InternalServerError; } return(result); }
/// <summary> /// 提交表单数据 /// </summary> /// <param name="workflow">分组对象</param> /// <param name="keyValue">分组对象的主键</param> /// <returns></returns> public ActionResult SubmitForm(workflow workflow, string keyValue) { IdalCommon.IworkflowEx.SubmitForm(workflow, keyValue); return(Success("操作成功。")); }
public ActionResult Update(workflow input) { IdalCommon.IworkflowEx.update(input); return(this.UpdateSuccessMsg()); }
public ActionResult Add(workflow input) { IdalCommon.IworkflowEx.insert(input); return(this.AddSuccessMsg()); }
public WorkFlow(workflow workflow) { owner = new User(workflow.owner); workflowId = workflow.workflowId; participants = null; }