/// <summary> /// 节点会签审核 /// </summary> /// <param name="nodeId"></param> /// <param name="tag"></param> /// <returns>-1不通过,1等待,其它通过</returns> public string NodeConfluence(string nodeId, Tag tag) { var forkToThisLine = ToNodeLines[nodeId].FirstOrDefault(); if (forkToThisLine == null) { throw (new Exception("该会签节点没有来源,请检查流程结构")); } var forkNode = Nodes[forkToThisLine.from]; //会签开始节点 string joinNodeId = GetNextNodeId(nodeId); //获取会签的合流节点 int allnum = FromNodeLines[forkToThisLine.from].Count; //总会签数量 string res = string.Empty; //记录会签的结果,默认正在会签 if (forkNode.setInfo.NodeConfluenceType == "one") //有一个步骤通过即可 { if (tag.Taged == (int)TagState.Ok) { res = GetNextNodeId(joinNodeId); } else if (tag.Taged == (int)TagState.No) { if (forkNode.setInfo.ConfluenceNo == null) { forkNode.setInfo.ConfluenceNo = 1; } else if (forkNode.setInfo.ConfluenceNo == (allnum - 1)) { res = TagState.No.ToString("D"); } else { forkNode.setInfo.ConfluenceNo++; } } } else //默认所有步骤通过 { if (tag.Taged == (int)TagState.No) //只要有一个不同意,那么流程就结束 { res = TagState.No.ToString("D"); } else if (tag.Taged == (int)TagState.Ok) { if (forkNode.setInfo.ConfluenceOk == null) { forkNode.setInfo.ConfluenceOk = 1; } else if (forkNode.setInfo.ConfluenceOk == (allnum - 1)) //会签成功 { res = GetNextNodeId(joinNodeId); } else { forkNode.setInfo.ConfluenceOk++; } } } if (res == TagState.No.ToString("D")) { tag.Taged = (int)TagState.No; MakeTagNode(joinNodeId, tag); } else if (!string.IsNullOrEmpty(res)) //会签结束,标记合流节点 { tag.Taged = (int)TagState.Ok; MakeTagNode(joinNodeId, tag); nextNodeId = res; nextNodeType = GetNodeType(res); } else { nextNodeId = joinNodeId; nextNodeType = GetNodeType(joinNodeId); } return(res); }
/// <summary> /// 节点会签审核 /// </summary> /// <param name="nodeId"></param> /// <param name="tag"></param> /// <returns>-1不通过,1等待,其它通过</returns> public string NodeConfluence(string nodeId, Tag tag) { string res = "-1"; string joinNodeId = GetNextNode(nodeId); //获取回签的合流节点 if (joinNodeId == "-1") { throw (new Exception("寻找不到会签下合流节点")); } Dictionary <string, List <FlowLine> > toLines = GetToLines(_runtimeModel.schemeContentJson); int allnum = toLines[joinNodeId].Count; //总会签数量 int i = 0; foreach (var item in _runtimeModel.schemeContentJson.nodes) { if (item.id != joinNodeId) { i++; continue; } if (string.IsNullOrEmpty(item.setInfo.NodeConfluenceType)) //默认所有步骤通过 { if (tag.Taged == 1) { if (item.setInfo.ConfluenceOk == null) { _runtimeModel.schemeContentJson.nodes[i].setInfo.ConfluenceOk = 1; res = "1"; } else if (item.setInfo.ConfluenceOk == (allnum - 1)) //会签成功 { res = GetNextNode(joinNodeId); if (res == "-1") { throw (new Exception("会签成功寻找不到下一个节点")); } } else { _runtimeModel.schemeContentJson.nodes[i].setInfo.ConfluenceOk++; res = "1"; } } } //else if (item.setInfo.NodeConfluenceType == "1") //1一个步骤通过即可 //{ // if (tag.Taged == 1) // { // res = GetNextNodeId(nextNodeId); // if (res == "-1") // { // throw (new Exception("会签成功寻找不到下一个节点")); // } // } // else // { // if (item.setInfo.ConfluenceNo == null) // { // _runtimeModel.schemeContentJson.nodes[i].setInfo.ConfluenceNo = 1; // res = "1"; // } // else if (item.setInfo.ConfluenceNo == (allnum - 1)) // { // res = "-1"; // } // else // { // _runtimeModel.schemeContentJson.nodes[i].setInfo.ConfluenceNo++; // res = "1"; // } // } //} } if (res == "-1") { tag.Taged = -1; MakeTagNode(joinNodeId, tag); } else if (res != "1") //这时res是会签结束节点后面的一个节点 { tag.Taged = 1; MakeTagNode(joinNodeId, tag); _runtimeModel.nextNodeId = res; _runtimeModel.nextNodeType = GetNodeType(res); } else { _runtimeModel.nextNodeId = joinNodeId; _runtimeModel.nextNodeType = GetNodeType(joinNodeId); } return(res); }