/// <summary> /// 寻找该节点执行人 /// </summary> /// <param name="node"></param> /// <returns></returns> private string GetNodeMakers(FlowNode node) { string makerList = ""; if (node.setInfo != null) { if (node.setInfo.NodeDesignate == Setinfo.ALL_USER)//所有成员 { makerList = "1"; } else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_USER)//指定成员 { makerList = GenericHelpers.ArrayToString(node.setInfo.NodeDesignateData.users, makerList); } else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_ROLE) //指定角色 { var users = _revelanceApp.Get(Define.USERROLE, false, node.setInfo.NodeDesignateData.roles); makerList = GenericHelpers.ArrayToString(users, makerList); } } else //如果没有设置节点信息,默认所有人都可以审核 { makerList = "1"; } return(makerList); }
/// <summary> /// 寻找该节点执行人 /// </summary> /// <param name="node"></param> /// <returns></returns> private string GetNodeMarkers(FlowNode node, string flowinstanceCreateUserId = "") { string makerList = ""; if (node.type == FlowNode.START && (!string.IsNullOrEmpty(flowinstanceCreateUserId))) //如果是开始节点,通常情况下是驳回到开始了 { makerList = flowinstanceCreateUserId; } else if (node.setInfo != null) { if (node.setInfo.NodeDesignate == Setinfo.ALL_USER)//所有成员 { makerList = "1"; } else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_USER)//指定成员 { makerList = GenericHelpers.ArrayToString(node.setInfo.NodeDesignateData.users, makerList); } else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_ROLE) //指定角色 { var users = _revelanceApp.Get(Define.USERROLE, false, node.setInfo.NodeDesignateData.roles); makerList = GenericHelpers.ArrayToString(users, makerList); } } else //如果没有设置节点信息,默认所有人都可以审核 { makerList = "1"; } return(makerList); }
/// <summary> /// 寻找下一步的执行人 /// 一般用于本节点审核完成后,修改流程实例的当前执行人,可以做到通知等功能 /// </summary> /// <returns></returns> private string GetNextMakers(FlowRuntime wfruntime, NodeDesignateReq request = null) { string makerList = ""; if (wfruntime.nextNodeId == "-1") { throw (new Exception("无法寻找到下一个节点")); } if (wfruntime.nextNodeType == 0) //如果是会签节点 { makerList = GetForkNodeMakers(wfruntime, wfruntime.nextNodeId); } else if (wfruntime.nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_ROLE) { //如果是运行时指定角色 if (wfruntime.nextNode.setInfo.NodeDesignate != request.NodeDesignateType) { throw new Exception("前端提交的节点权限类型异常,请检查流程"); } var users = _revelanceApp.Get(Define.USERROLE, false, request.NodeDesignates); makerList = GenericHelpers.ArrayToString(users, makerList); } else if (wfruntime.nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_USER) { //如果是运行时指定用户 if (wfruntime.nextNode.setInfo.NodeDesignate != request.NodeDesignateType) { throw new Exception("前端提交的节点权限类型异常,请检查流程"); } makerList = GenericHelpers.ArrayToString(request.NodeDesignates, makerList); } else { makerList = GetNodeMarkers(wfruntime.nextNode); if (string.IsNullOrEmpty(makerList)) { throw (new Exception("无法寻找到节点的审核者,请查看流程设计是否有问题!")); } } return(makerList); }
/// <summary> /// 寻找该节点执行人 /// </summary> /// <param name="node"></param> /// <returns></returns> private string GetMakerList(FlowNode node, string processId) { string makerList = ""; if (node.setInfo == null) { makerList = "-1"; } else { if (node.setInfo.NodeDesignate == Setinfo.ALL_USER)//所有成员 { makerList = "1"; } else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_USER)//指定成员 { makerList = GenericHelpers.ArrayToString(node.setInfo.NodeDesignateData.users, makerList); if (makerList == "") { makerList = "-1"; } } else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_ROLE) //指定角色 { var users = RevelanceManagerApp.Get(Define.USERROLE, false, node.setInfo.NodeDesignateData.roles); makerList = GenericHelpers.ArrayToString(users, makerList); if (makerList == "") { makerList = "-1"; } } } return(makerList); }