public string Start(BridgeCommandDto dto) { Category category = new CategoryService().Query() .FirstOrDefault(cate => cate.NID == dto.CategoryCode); WorkflowStructure workflowStructure = _abstractService.WorkflowStructureService.Query() .FirstOrDefault(e => e.CategoryCode == category.NID && e.Status == 1); var model = EmitCore.Convert <BridgeCommandDto, Bridge>(dto); string instanceID = WorkflowEngine.Instance.Start(workflowStructure.Resource); model.InstanceID = instanceID; model.Comment = String.IsNullOrEmpty(model.Comment) ? category.Name : model.Comment; model.CreateTime = DateTime.Now; CommandBus.Dispatch(new CreateBridge(), model); var b = _bridgeService.Query(instanceID); WorkflowInstance Instance = WorkflowInstance.GetInstance(instanceID); var current = GetCurrent(Instance, model.Creator); string serialObject = GetAuditNext(current, model.CategoryCode, b.Creator, b.Name, out string selectTransitionID); WorkflowEngine.Instance.Jump(new WorkflowContext() { Instance = Instance, ActorID = model.Creator, Message = "提交", TransitionID = selectTransitionID, Data = Newtonsoft.Json.JsonConvert.DeserializeObject(serialObject), Current = current }); return(instanceID); }
public JsonResult GetAuditUser(string instanceID) { WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); return(Json(new UserService() .GetPendingUserList(instance.Current.NID, instanceID))); }
public IEnumerable <Transition> GetTransition(ActorCommandDto dto) { WorkflowInstance instance = WorkflowInstance.GetInstance(dto.ID); var current = GetCurrent(instance, dto.ActorID); return(NodeService.GetExecuteTransition(current)); }
public IEnumerable <Transition> GetTransition(string instanceID, string actorID) { WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); var current = GetCurrent(instance, actorID); return(NodeService.GetExecuteTransition(current)); }
public int GetNodeCooperation(string instanceID, string actorID) { WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); Node current = GetCurrent(instance, actorID); return(String.IsNullOrEmpty(current.Cooperation) ? 0 : 1); }
public string Start(BridgeBody dto) { Category category = new CategoryService().Query().FirstOrDefault(cate => cate.NID == dto.CategoryCode); WorkflowStructure workflowStructure = _abstractService.WorkflowStructureService.Query().FirstOrDefault(e => e.CategoryCode == category.NID && e.Status == 1); string instanceID = WorkflowEngine.Instance.Start(workflowStructure.Resource); Bridge model = _mapper.Map <Bridge>(dto); model.InstanceID = instanceID; model.Comment = String.IsNullOrEmpty(model.Comment) ? category.Name : model.Comment; model.CreateTime = DateTime.Now; CommandBus.Dispatch(new CreateBridge(), model); var user = _actorService.GetUserByID(model.Creator); WorkflowInstance Instance = WorkflowInstance.GetInstance(instanceID); var current = GetCurrent(Instance, model.Creator); string serialObject = GetAuditNext(current, model.CategoryCode, model.Creator, user.Name, out string selectTransitionID); WorkflowEngine.Instance.Jump(new WorkflowContext() { Instance = Instance, ActorID = model.Creator, Message = category.Name, TransitionID = selectTransitionID, Data = Newtonsoft.Json.JsonConvert.DeserializeObject(serialObject), Current = current }); LogProxy.Instance.Info(string.Format("启动{0}流程 实例ID{1}", model.CategoryCode, instanceID)); return(instanceID); }
/// <summary> /// 获取当前节点信息 /// </summary> /// <param name="id">实例ID</param> /// <returns></returns> public dynamic Get(string id, string actorId) { WorkflowInstance instance = WorkflowInstance.GetInstance(id); var current = instance.Current; Dictionary <string, object> queryArg = new Dictionary <string, object> { { "actorID", actorId }, { "instanceID", id }, { "nodeID", current.NID } }; var pending = queryService.Query(queryArg).FirstOrDefault(); var hasAuth = (current.NodeType == WorkflowNodeCategory.Start && instance.State == WorkflowInstanceState.Running) ? true : instance.State == WorkflowInstanceState.Running && pending != null; return(new { current.NID, current.Name, Category = current.NodeType.ToString(), HasAuth = hasAuth }); }
private void Invoke(Node to, ExecutingContext executeContext, WorkflowContext context) { string instanceID = context.Instance.InstanceID; workflowService.InstanceService.Jump(context.Current.ID, to.ID, instanceID, new WorkflowProcess() { RelationshipID = executeContext.From.NID, CreateTime = DateTime.Now, ActorID = context.ActorID, Origin = executeContext.From.ID, Destination = executeContext.To.ID, TransitionID = context.TransitionID, InstanceID = executeContext.Instance.InstanceID, NodeType = executeContext.From.NodeType, Direction = WorkflowOpertaion.Back }, workflowService.ProcessService); workflowService.Actions.ForEach(pluin => pluin.ActionExecute(executeContext)); if (to.NodeType == WorkflowNodeCategory.Decision) { Jump(new WorkflowContext() { Instance = WorkflowInstance.GetInstance(instanceID), TransitionID = context.TransitionID, Data = context.Data, Message = "系统流转", ActorID = context.ActorID, Current = to }); } }
public static bool CheckUndoAuth(string instanceID) { WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); User userInfo = System.Web.HttpContext.Current.Session["user"] as User; return(instance.Current.GetFromNode().GetActors().Count(e => e.IDENTIFICATION == userInfo.IDENTIFICATION) > 0); }
public JsonResult GetTransitions(string instanceID) { WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); List <Transition> transitions = NodeService.GetExecuteTransitions(instance); return(Json(transitions)); }
public void Reboot(string instanceID, string categoryCode, string id) { WorkflowInstance wfInstance = WorkflowInstance.GetInstance(instanceID); string resourceXml = wfInstance.Resource; CommandBus.Dispatch(new DeleteWFRecord(), instanceID); string newInstanceID = WorkflowEngine.Instance.Start(resourceXml); Bridge bridge = _bridgeService.GetBridge(id); bridge.InstanceID = newInstanceID; CommandBus.Dispatch(new UpdateBridge(), bridge); var user = _actorService.GetUserByID(bridge.Creator); WorkflowInstance instance = WorkflowInstance.GetInstance(newInstanceID); var current = GetCurrent(instance, bridge.Creator); string serialObject = GetAuditNext(current, categoryCode, bridge.Creator, user.Name, out string selectTransitionID); WorkflowEngine.Instance.Jump(new WorkflowContext() { Instance = instance, ActorID = bridge.Creator, Message = String.Empty, TransitionID = selectTransitionID, Current = GetCurrent(instance, bridge.Creator), Data = Newtonsoft.Json.JsonConvert.DeserializeObject(serialObject) }); }
/// <summary> /// 驳回 /// </summary> /// <param name="instanceID"></param> public void Reject(string instanceID) { WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); //一、驳回流程 context.Reject(instance); //二、删除当前节点中所有人待办任务 }
public int GetNodeCooperation(ActorCommandDto dto) { WorkflowInstance instance = WorkflowInstance.GetInstance(dto.ID); Node current = GetCurrent(instance, dto.ActorID); return(String.IsNullOrEmpty(current.Cooperation)?0:1); }
/// <summary> /// 工作流组件 /// </summary> /// <param name="instanceID">流程实例ID</param> /// <returns></returns> public ActionResult WorkflowCheck(string instanceID, string bussinessID) { ViewBag.InstanceID = instanceID; ViewBag.bussinessID = bussinessID; WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); ViewBag.CheckResult = CommonMethods.CheckUndoButton(instanceID); return(View(instance.Current.GetTransitions())); }
public void Jump(PostContext context) { WorkflowEngine.Instance.Jump(new WorkflowContext() { Instance = WorkflowInstance.GetInstance(context.InstanceID), TransitionID = (String)context.Data.Transition, Data = context.Data }); }
/// <summary> /// 工作流组件 /// </summary> /// <param name="instanceID">流程实例ID</param> /// <returns></returns> public ActionResult WorkflowCheck(string instanceID, string bussinessID, string bllService) { ViewBag.InstanceID = instanceID; ViewBag.bussinessID = bussinessID; ViewBag.bllService = bllService; WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); return(View(instance.Current.GetTransitions())); }
public JsonResult GetProcess(string instanceID) { WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); return(Json(new { structure = instance.Resource, id = instance.Current.ID })); }
/// <summary> /// 原路退回 /// </summary> /// <param name="instanceID"></param> /// <param name="data"></param> public void Back(string instanceID, dynamic data) { WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); context.Back(new WorkflowContext() { Instance = instance, Data = data }); }
public IEnumerable <User> GetUser(string id) { WorkflowInstance instance = WorkflowInstance.GetInstance(id); Dictionary <String, string> queryArg = new Dictionary <string, string> { { "instanceID", id }, { "nodeID", instance.Current.NID } }; return(_actorService.Query(queryArg)); }
public void Jump(string instanceID, string transitionID, dynamic data) { WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); context.Jump(new WorkflowContext() { Instance = instance, TransitionID = transitionID, Data = data }); }
public ActionResult WorkflowImage(string instanceID) { JavaScriptSerializer serializer = new JavaScriptSerializer(); ViewBag.Result = serializer.Serialize(WorkflowInstance.GetInstance(instanceID)); DataTable dt = WorkflowServiceProvider.OfType <IWorkflowActor>().GetRecord(instanceID); ViewBag.Record = Newtonsoft.Json.JsonConvert.SerializeObject(dt); return(View()); }
public void Rollback(string instanceID, long actorID, string actorName, dynamic data) { WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); context.Rollback(new WorkflowContext() { Instance = instance, Data = data, ActorID = actorID, ActorName = actorName }); }
public void Jump(string instanceID, string transitionID, long actorID, string actorName, dynamic data) { WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); context.Jump(new WorkflowContext() { Instance = instance, TransitionID = transitionID, Data = data, ActorID = actorID, ActorName = actorName }); }
/// <summary> /// 依据跳转跳线获取下节点审批用户列表 /// </summary> /// <param name="instanceID">流程实例</param> /// <param name="transitionID">跳转路线ID</param> /// <returns>用户列表</returns> public JsonResult GetUsers(string instanceID, string transitionID) { WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); List <Group> groupList = instance.Current.GetNextGroup(transitionID); List <string> gList = new List <string>(); foreach (Group g in groupList) { gList.Add(g.IDENTIFICATION.ToString()); } List <User> userList = new UserService().GetUserList(string.Join(",", gList)); return(Json(userList)); }
public void Kill(PostLostContextDto dto) { WorkflowInstance instance = WorkflowInstance.GetInstance(dto.ID); Node current = NodeService.FindNodeByID(dto.Destination, dto.ID); WorkflowEngine.Instance.Kill(instance, new WorkflowContext() { Message = dto.Message, Instance = instance, NodeID = current.NID, Data = dto.Data, Current = current }); }
public void Kill(string categoryCode, string instanceID, string destination) { WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); Node current = NodeService.FindNodeByID(destination, instanceID); WorkflowEngine.Instance.Kill(instance, new WorkflowContext() { Message = "终止流程", Instance = instance, NodeID = current.NID, Data = new { CategoryCode = categoryCode }, Current = current }); }
public dynamic GetCurrentNodeActor(RequestInstanceDto dto) { WorkflowInstance instance = WorkflowInstance.GetInstance(dto.ID); Node current = instance.Current.Where(e => e.NID == dto.Destination).FirstOrDefault(); return(new { NodeType = current.NodeType.ToString(), Actor = current.Actors, Group = current.Groups, Organization = current.Organizations, Carbon = current.Carbons }); }
public JsonResult GetCurrent(string instanceID) { WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); var current = instance.Current; return(Json(new { current.NID, current.Name, Category = current.NodeType.ToString(), HasAuth = (current.Name == "开始" && instance.State == WorkflowInstanceState.Running) ? true : instance.State == WorkflowInstanceState.Running && CommonMethods.CheckAuth(current.NID, instanceID, UserInfo) })); }
public void UndoSubmit(string instanceID, long actorID, string actorName, string bussinessID) { WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID); dynamic dynData = new ExpandoObject(); dynData.bussinessID = bussinessID; dynData.Message = "撤销此节点"; context.Cancel(new WorkflowContext() { Instance = instance, Data = dynData, ActorID = actorID, ActorName = actorName }); }
public void Jump(PostContextDto context) { WorkflowInstance Instance = WorkflowInstance.GetInstance(context.InstanceID); var current = GetCurrent(Instance, context.ActorID); WorkflowEngine.Instance.Jump(new WorkflowContext() { Instance = Instance, ActorID = context.ActorID, Message = context.Message, TransitionID = context.TransitionID, Data = context.Data, Current = current }); }