/// <summary> /// 获取第一可办理节点的执行人 /// </summary> /// <param name="processId"></param> /// <returns></returns> public IList <Participant> GetFirstActivityParticipants(string processId, string billUid) { _processModel = new ProcessModel(_dataAccessor, _loggerFactory, processId, billUid); var firstActivity = _processModel.GetFirstActivity(); return(_processModel.GetActivityParticipants(firstActivity.ActivityID)); }
/// <summary> /// 获取第一可办理节点的执行人 /// </summary> /// <param name="processId"></param> /// <returns></returns> public IList <Participant> GetFirstActivityParticipants(string processId, string billUid) { _processModel = new ProcessModel(_serviceProvider, processId, billUid); var firstActivity = _processModel.GetFirstActivity(); return(_processModel.GetActivityParticipants(firstActivity.ActivityID)); }
public ActivityEntity GetFirstActivity(string processId, string billUid) { _processModel = new ProcessModel(_dataAccessor, _loggerFactory, processId, billUid); var firstActivity = _processModel.GetFirstActivity(); return(firstActivity); }
public ActivityEntity GetFirstActivity(string processId, string billUid) { _processModel = new ProcessModel(_serviceProvider, processId, billUid); var firstActivity = _processModel.GetFirstActivity(); return(firstActivity); }
/// <summary> /// 根据应用获取流程下一步节点列表,包含角色用户 /// </summary> /// <param name="resourceService">资源服务</param> /// <param name="runner">应用执行人</param> /// <param name="condition">条件</param> /// <returns>节点列表</returns> internal IList <NodeView> GetNextActivityRoleUserTree(IResourceService resourceService, WfAppRunner runner, IDictionary <string, string> condition = null) { //判断应用数据是否缺失 if (string.IsNullOrEmpty(runner.AppInstanceID) || string.IsNullOrEmpty(runner.ProcessGUID)) { throw new WorkflowException(LocalizeHelper.GetEngineMessage("nextstepparser.getnextactivityroleusertree.error")); } //条件参数一致 if (condition == null && runner.Conditions != null) { condition = runner.Conditions; } IList <NodeView> nextSteps = new List <NodeView>(); IProcessModel processModel = ProcessModelFactory.Create(runner.ProcessGUID, runner.Version); using (var session = SessionFactory.CreateSession()) { var pim = new ProcessInstanceManager(); var processInstanceList = pim.GetProcessInstance(session.Connection, runner.AppInstanceID, runner.ProcessGUID, session.Transaction).ToList(); var processInstanceEntity = EnumHelper.GetFirst <ProcessInstanceEntity>(processInstanceList); //判断流程是否创建还是已经运行 if (processInstanceEntity != null && processInstanceEntity.ProcessState == (short)ProcessStateEnum.Running) { //运行状态的流程实例 var tm = new TaskManager(); TaskViewEntity taskView = tm.GetTaskOfMine(session.Connection, runner, session.Transaction); //获取下一步列表 nextSteps = processModel.GetNextActivityTree(taskView.ActivityGUID, condition); foreach (var ns in nextSteps) { if (ns.ReceiverType == ReceiverTypeEnum.ProcessInitiator) //下一步执行人为流程发起人 { ns.Users = AppendUserList(ns.Users, pim.GetProcessInitiator(session.Connection, taskView.ProcessInstanceID, session.Transaction)); //获取流程发起人 } else { var roleIDs = ns.Roles.Select(x => x.ID).ToArray(); if (roleIDs.Count() > 0) { ns.Users = resourceService.GetUserListByRoleReceiverType(roleIDs, runner.UserID, (int)ns.ReceiverType); //增加转移前置过滤条件 } } } } else { //流程准备启动,获取第一个办理节点的用户列表 var firstActivity = processModel.GetFirstActivity(); nextSteps = processModel.GetNextActivityTree(firstActivity.ActivityGUID, condition); foreach (var ns in nextSteps) { var roleIDs = ns.Roles.Select(x => x.ID).ToArray(); ns.Users = resourceService.GetUserListByRoleReceiverType(roleIDs, runner.UserID, (int)ns.ReceiverType); //增加转移前置过滤条件 } } } return(nextSteps); }