From fbe107789a1c666b119d9df35fdadce5dc1a64b7 Mon Sep 17 00:00:00 2001 From: yubaolee Date: Fri, 30 Mar 2018 17:35:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A9=B3=E5=9B=9E=E7=9A=84BU?= =?UTF-8?q?G?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DOC/核心设计.EAP | Bin 1249280 -> 1249280 bytes OpenAuth.App/Flow/FlowNode.cs | 14 ++ OpenAuth.App/Flow/FlowRuntime.cs | 61 +++---- OpenAuth.App/FlowInstanceApp.cs | 158 +++++------------- OpenAuth.App/Request/VerificationReq.cs | 2 +- .../Views/FlowSchemes/NodeInfo.cshtml | 26 ++- OpenAuth.Mvc/userJs/nodeInfo.js | 4 +- OpenAuth.UnitTest/TestWorkflow.cs | 9 +- 8 files changed, 113 insertions(+), 161 deletions(-) diff --git a/DOC/核心设计.EAP b/DOC/核心设计.EAP index 2555607050787cb910149cefa577e09a9641927c..58bda3d4753d7e1f96b6a437beac28a5b6ce2c92 100644 GIT binary patch delta 6618 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 Dr;P1^ delta 5418 zcmcJTdvFv*8o=j0yLoSKvS9-x6G+&Nl90EX7nfw$NbXjGNx%T|SdvY$knFC><`B@^ z04iEy$r@r)c%C^QbvY4TmC6Jkky00OIiFS3onCo9uDrX_s*CWC#yViHdwOO`2#Qvn zJ@sY#*ZuX^-Cuv*J(Ix^=irDl%m_>hGhAnEA6{c@y+Rsa)ZHz@=q1MS(qyvjT!x1a@<`@kA+)IwVGN;G6 z9d`eyAo~FWKdL3gm8 zn3YMGtjEQMus^F|tH zW;erwX0}S6FthbSD4dV<4vH{kQ(S=O=y?;fvRk1mkFDYI=FE;XI@QVJMvFK!LKA%G zQ&xaS4~Z%8@k3(#5B?E`Z%z)v85{cv+)&Bp!IkYA>^r~}E9YX{K?*-b(ig`@>OG#=*(h1=oGA^utU zsn7X8(DJW_c$u58aD+c58@icI0`l3s)+1WwBUVOtKsU13fj)FE#?3 zU!2NfkFe7}F$|O-Ssw~#qtS{hU`t4R9&UJ8TrR)(u=p|!pS?dW7ru5_JRmQT^nXV8 z%scehed6y#9BJFopj(A$G-d11du@54@Dp%mL_DEs-p>)u!mh-tX@+NOk{OPR2Xy0T zrsH}faY*8kBp^vdl7u7~Ns6o+H;jBHd^xnz^HQ4p+!1h;rjz8xqu^wscpVc)9x+4x zD6m-1a1GomY&CnH>BQHq7Ei3|Gvx}#<*@JwlP32r;J>3Y^mk<#D-UucWS|uB^gQR@K<+>T;tF3act0 zeH<*NMVNIQEH!M8Mx#d5(t>0i%IoBowS&&4ds4tS_@^P?;mYdHrNi1A50nG6AS3xFx?<7c+?|2O~({SWv z&;Z{)2~yx!uYz_s@(Re5-svo=!GNI!wf5uJkbG=2v7$GJ)NYer%k>APU|Bq$7pm#`HT7Wm6aU=u7ut=GSh z2Jf2$E8uH_(Fms}L5}q?E$!U7^L8&v-Lcfw)z#VA*}iUFb7QVguKW{7riE`W+`4Kw z4K_`I4BgZj`TRShCojU|f^i9abPD9=jA&{1?%jdgQQ8qp+qZA`cs!l!*UMi_flOW; zRn{dB>fZ-ti^uu#$YK6)#LxR9PTm>8kCnGZ@WVmF`^;nV%=;jP4cb;LTeg^wRwc!w z$z#E%ElugUFF1-WMtPjpx%>J(K5t-)-_^bYMaz|3pcdR%nxB)SSi@GZ;MY#g8p%_X z)72knasArua0T4!V>V}(#tI8&m$t4f&dXD*;|0d@eb${mSBL!BS+Il^-_pGDAt+mU zmOmQ_^Wn%r{$Qk=?~dTd!8;=Ok@%-+FI`8c(qB?%sHdqrkp0U^Kzm2N^FuJo2GgA$ zuiNhH@%5po8q`$si?R$l9miE+O_WSnt0l0j$Bnknpi+eX6lTs*N?YZ2bzDm+)!}h< z^|^W*@kudAm8rIFm}|T}F1Q5F(g`aCym=XF zDcZclNwjG=$N2Br-$Evad`l_Dkef^_VdcQbtbS{uta2Necv6p#U<%g@gq6j`EE2}w zL`uDmFpfxt^@#BRaF{9uaYO-c3Wehd<1MFf0^tOW6A343oJ2TD<7C2$KkTvfZuPG4gg`Gv5~Oywu>9262@;3ihdg5G>uJ!O&X^Y#s{sUzku)pjm_!+l-Fq7 zK?YIC&=eLDUa0XR!izLsOn9-znS?Vn&LW(pu|!zXIG9ZevbBOGgqLW%l<-oGa|q{X zoJ$yA!O9Gm5niUTg|PCfhbL$yY*p)nraV%Rr!}~a@O2trPxyM3(<#EsHAdgO6ZXsiZtA>kmEu10Z@rl3Z#a;~Ehr>jw1qSdQWT&gjSVw6|T9IUSfak*Bn z2JsCVt3hm27`04Sqqss-P@}j~V>ODaG*+XyT4MtlK#j&~5U@pNa`7Ry*AN0eiR0+vVG7hx9l6gQ0L6 zQ;`SHPXUWOAQ&H{%|0Fu*J7+J8IeIzJ0*c=k70P zCYfHhH=wk^H^FkrLJZu5-W_9L?{W3_s}z))TLP}YfW}huI#39^{WTB)dzR9U(*6PjgYqvEtp zN>5k#ZMwdv`oJM diff --git a/OpenAuth.App/Flow/FlowNode.cs b/OpenAuth.App/Flow/FlowNode.cs index ff41c59d..f86e85ff 100644 --- a/OpenAuth.App/Flow/FlowNode.cs +++ b/OpenAuth.App/Flow/FlowNode.cs @@ -27,9 +27,20 @@ public class Setinfo { + public const string SPECIAL_USER = "SPECIAL_USER"; //指定用户 + public const string ALL_USER = "ALL_USER"; //所有用户 + /// + /// 节点执行权限类型 + /// + public string NodeDesignate { get; set; } public Nodedesignatedata NodeDesignateData { get; set; } public string NodeCode { get; set; } public string NodeName { get; set; } + + /// + /// 驳回节点0"前一步"1"第一步"2"某一步" 3"不处理" + /// + public string NodeRejectType { get; set; } } /// @@ -43,6 +54,9 @@ } + /// + /// 节点执行结果标签 + /// public class Tag { public int Taged { get; set; } diff --git a/OpenAuth.App/Flow/FlowRuntime.cs b/OpenAuth.App/Flow/FlowRuntime.cs index c39f9a30..9ad92214 100644 --- a/OpenAuth.App/Flow/FlowRuntime.cs +++ b/OpenAuth.App/Flow/FlowRuntime.cs @@ -23,14 +23,15 @@ namespace OpenAuth.App.Flow dynamic schemeContentJson = instance.SchemeContent.ToJson();//获取工作流模板内容的json对象; _runtimeModel.frmData = instance.FrmData; _runtimeModel.schemeContentJson = schemeContentJson;//模板流程json对象 - _runtimeModel.nodes = GetNodeDictionary(schemeContentJson);//节点集合 + _runtimeModel.nodes = GetNodes(schemeContentJson);//节点集合 _runtimeModel.lines = GetLineDictionary(schemeContentJson);//线条集合 _runtimeModel.currentNodeId = (instance.ActivityId == "" ? _runtimeModel.startNodeId : instance.ActivityId); _runtimeModel.currentNodeType = GetNodeType(_runtimeModel.currentNodeId); + //会签开始节点和流程结束节点没有下一步 if (_runtimeModel.currentNodeType == 0 || _runtimeModel.currentNodeType == 4) { - _runtimeModel.nextNodeId = "-1";//下一个节点 + _runtimeModel.nextNodeId = "-1"; _runtimeModel.nextNodeType = -1; } else @@ -50,22 +51,22 @@ namespace OpenAuth.App.Flow /// /// /// - private Dictionary GetNodeDictionary(dynamic schemeContentJson) + private Dictionary GetNodes(dynamic schemeContentJson) { - Dictionary nodeDictionary = new Dictionary(); + Dictionary nodes = new Dictionary(); foreach (JObject item in schemeContentJson.nodes) { var node = item.ToObject(); - if (!nodeDictionary.ContainsKey(node.id)) + if (!nodes.ContainsKey(node.id)) { - nodeDictionary.Add(node.id, node); + nodes.Add(node.id, node); } if (node.type == FlowNode.START) { this._runtimeModel.startNodeId = node.id; } } - return nodeDictionary; + return nodes; } /// /// 获取工作流线段的字典列表:key开始节点id,value线条实体列表 @@ -379,45 +380,27 @@ namespace OpenAuth.App.Flow { return RejectNode(_runtimeModel.currentNodeId); } - /// - /// 驳回节点0"前一步"1"第一步"2"某一步" 3"不处理" - /// - /// - /// + public string RejectNode(string nodeId) { - try + dynamic _node = _runtimeModel.nodes[nodeId]; + if (_node.setInfo != null) { - dynamic _node = _runtimeModel.nodes[nodeId]; - if (_node.setInfo != null) - { - if (_node.setInfo.NodeRejectType.Value == "0") - { - return _runtimeModel.previousId; - } - else if (_node.setInfo.NodeRejectType.Value == "1") - { - return GetNextNodeByNodeId(_runtimeModel.startNodeId); - } - else if (_node.setInfo.NodeRejectType.Value == "2") - { - return _node.setInfo.NodeRejectStep.Value; - } - else - { - return ""; - } - - } - else//前一步 + if (_node.setInfo.NodeRejectType.Value == "0") { return _runtimeModel.previousId; } + if (_node.setInfo.NodeRejectType.Value == "1") + { + return GetNextNodeByNodeId(_runtimeModel.startNodeId); + } + if (_node.setInfo.NodeRejectType.Value == "2") + { + return _node.setInfo.NodeRejectStep.Value; + } + return ""; } - catch - { - throw; - } + return _runtimeModel.previousId; } /// /// 标记节点1通过,-1不通过,0驳回 diff --git a/OpenAuth.App/FlowInstanceApp.cs b/OpenAuth.App/FlowInstanceApp.cs index c5a4a86f..b8896556 100644 --- a/OpenAuth.App/FlowInstanceApp.cs +++ b/OpenAuth.App/FlowInstanceApp.cs @@ -16,7 +16,7 @@ namespace OpenAuth.App /// public class FlowInstanceApp : BaseApp { - + #region ̴API /// /// һʵ @@ -146,7 +146,7 @@ namespace OpenAuth.App string confluenceres = wfruntime.NodeConfluence(_VerificationNodeId, tag); - + switch (confluenceres) { case "-1"://ͨ @@ -176,7 +176,7 @@ namespace OpenAuth.App }; processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); #endregion - + break; } } @@ -215,14 +215,14 @@ namespace OpenAuth.App processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); #endregion - + flowInstanceOperationHistory.Content = "" + "todo name" + "" + wfruntime.runtimeModel.currentNode.name + "" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "ͬ,ע" + description; } else { flowInstance.IsFinish = 3; //ʾýڵ㲻ͬ tag.Taged = -1; - wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId,tag); + wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, tag); flowInstanceOperationHistory.Content = "" + "todo name" + "" + wfruntime.runtimeModel.currentNode.name + "" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "ͬ,ע" + description; } @@ -240,13 +240,10 @@ namespace OpenAuth.App /// /// /// - /// - /// - /// /// - public bool NodeReject(string processId, string nodeId, string description = "") + public bool NodeReject(VerificationReq reqest) { - FlowInstance flowInstance = Get(processId); + FlowInstance flowInstance = Get(reqest.FlowInstanceId); FlowInstanceOperationHistory flowInstanceOperationHistory = new FlowInstanceOperationHistory(); FlowInstanceTransitionHistory processTransitionHistoryEntity = null; @@ -254,19 +251,19 @@ namespace OpenAuth.App string resnode = ""; - if (nodeId == "") + if (string.IsNullOrEmpty(reqest.NodeRejectStep)) { resnode = wfruntime.RejectNode(); } else { - resnode = nodeId; + resnode = reqest.NodeRejectStep; } var user = AuthUtil.GetCurrentUser().User; var tag = new Tag { - Description = description, + Description = reqest.VerificationOpinion, Taged = 0, UserId = user.Id, UserName = user.Name @@ -278,29 +275,32 @@ namespace OpenAuth.App { flowInstance.PreviousId = flowInstance.ActivityId; flowInstance.ActivityId = resnode; - flowInstance.ActivityType = wfruntime.GetNodeType(resnode);//-1޷,0ǩʼ,1ǩ,2һڵ,4н + flowInstance.ActivityType = wfruntime.GetNodeType(resnode); flowInstance.ActivityName = wfruntime.runtimeModel.nodes[resnode].name; flowInstance.MakerList = GetMakerList(wfruntime.runtimeModel.nodes[resnode], flowInstance.PreviousId);//ǰڵִеϢ #region ת¼ - processTransitionHistoryEntity = new FlowInstanceTransitionHistory(); - processTransitionHistoryEntity.FromNodeId = wfruntime.runtimeModel.currentNodeId; - processTransitionHistoryEntity.FromNodeName = wfruntime.runtimeModel.currentNode.name; - processTransitionHistoryEntity.FromNodeType = wfruntime.runtimeModel.currentNodeType; - processTransitionHistoryEntity.ToNodeId = wfruntime.runtimeModel.nextNodeId; - processTransitionHistoryEntity.ToNodeName = wfruntime.runtimeModel.nextNode.name; - processTransitionHistoryEntity.ToNodeType = wfruntime.runtimeModel.nextNodeType; - processTransitionHistoryEntity.TransitionSate = 1;// + + processTransitionHistoryEntity = new FlowInstanceTransitionHistory + { + FromNodeId = wfruntime.runtimeModel.currentNodeId, + FromNodeName = wfruntime.runtimeModel.currentNode.name, + FromNodeType = wfruntime.runtimeModel.currentNodeType, + ToNodeId = wfruntime.runtimeModel.nextNodeId, + ToNodeName = wfruntime.runtimeModel.nextNode.name, + ToNodeType = wfruntime.runtimeModel.nextNodeType, + TransitionSate = 1 + }; + // processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); #endregion } - var data = new - { - SchemeContent = wfruntime.runtimeModel.schemeContentJson.ToString(), - frmData = (flowInstance.FrmType == 0 ? wfruntime.runtimeModel.frmData : null) - }; - flowInstanceOperationHistory.Content = "" + "todo name" + "" + wfruntime.runtimeModel.currentNode.name + "" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + ",ע" + description; - UnitWork.Add(flowInstance); + + flowInstanceOperationHistory.Content = "" + "todo name" + "" + + wfruntime.runtimeModel.currentNode.name + + "" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + ",ע" + reqest.VerificationOpinion; + + UnitWork.Update(flowInstance); UnitWork.Add(flowInstanceOperationHistory); UnitWork.Add(processTransitionHistoryEntity); UnitWork.Save(); @@ -361,23 +361,21 @@ namespace OpenAuth.App /// private string GetMakerList(FlowNode node, string processId) { - try - { - string makerlsit = ""; + string makerlsit = ""; - if (node.setInfo == null) + if (node.setInfo == null) + { + makerlsit = "-1"; + } + else + { + if (node.setInfo.NodeDesignate == Setinfo.ALL_USER)//гԱ { - makerlsit = "-1"; + makerlsit = "1"; } - else + else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_USER)//ָԱ { - //if (node.setInfo.NodeDesignate.Value == "NodeDesignateType1")//гԱ - //{ - // makerlsit = "1"; - //} - //else if (node.setInfo.NodeDesignate.Value == "NodeDesignateType2")//ָԱ - //{ - makerlsit = GenericHelpers.ArrayToString(node.setInfo.NodeDesignateData.role, makerlsit); + // makerlsit = GenericHelpers.ArrayToString(node.setInfo.NodeDesignateData.role, makerlsit); // makerlsit = ArrwyToString(node.setInfo.NodeDesignateData.post, makerlsit); // makerlsit = ArrwyToString(node.setInfo.NodeDesignateData.usergroup, makerlsit); makerlsit = GenericHelpers.ArrayToString(node.setInfo.NodeDesignateData.users, makerlsit); @@ -386,75 +384,11 @@ namespace OpenAuth.App { makerlsit = "-1"; } - // } - //else if (node.setInfo.NodeDesignate.Value == "NodeDesignateType3")//쵼 - //{ - // UserEntity userEntity = userService.GetEntity(OperatorProvider.Provider.Current().UserId); - // if (string.IsNullOrEmpty(userEntity.ManagerId)) - // { - // makerlsit = "-1"; - // } - // else - // { - // makerlsit = userEntity.ManagerId; - // } - //} - //else if (node.setInfo.NodeDesignate.Value == "NodeDesignateType4")//ǰһ쵼 - //{ - // FlowInstanceTransitionHistory transitionHistoryEntity = FlowInstanceTransitionHistoryService.GetEntity(flowInstanceId, node.id.Value); - // UserEntity userEntity = userService.GetEntity(transitionHistoryEntity.CreateUserId); - // if (string.IsNullOrEmpty(userEntity.ManagerId)) - // { - // makerlsit = "-1"; - // } - // else - // { - // makerlsit = userEntity.ManagerId; - // } - //} - //else if (node.setInfo.NodeDesignate.Value == "NodeDesignateType5")//߲쵼 - //{ - // UserEntity userEntity = userService.GetEntity(OperatorProvider.Provider.Current().UserId); - // DepartmentEntity departmentEntity = departmentService.GetEntity(userEntity.DepartmentId); - - // if (string.IsNullOrEmpty(departmentEntity.ManagerId)) - // { - // makerlsit = "-1"; - // } - // else - // { - // makerlsit = departmentEntity.ManagerId; - // } - //} - //else if (node.setInfo.NodeDesignate.Value == "NodeDesignateType6")//߹˾쵼 - //{ - // UserEntity userEntity = userService.GetEntity(OperatorProvider.Provider.Current().UserId); - // OrganizeEntity organizeEntity = organizeService.GetEntity(userEntity.OrganizeId); - - // if (string.IsNullOrEmpty(organizeEntity.ManagerId)) - // { - // makerlsit = "-1"; - // } - // else - // { - // makerlsit = organizeEntity.ManagerId; - // } - //} } - return makerlsit; - } - catch - { - throw; } + return makerlsit; } - /// - /// תɶִ - /// - /// - /// - /// - + /// /// /// 2017-01-20 15:44:45 @@ -464,12 +398,7 @@ namespace OpenAuth.App // if (request.VerificationFinally == "3") { - string _nodeId = ""; - if (!string.IsNullOrEmpty(request.NodeRejectStep)) - { - _nodeId = request.NodeRejectStep; - } - NodeReject(request.FlowInstanceId, _nodeId, request.VerificationOpinion); + NodeReject(request); } else if (request.VerificationFinally == "2")//ʾͬ { @@ -511,3 +440,4 @@ namespace OpenAuth.App } } } + diff --git a/OpenAuth.App/Request/VerificationReq.cs b/OpenAuth.App/Request/VerificationReq.cs index e053b7a0..f8f56d99 100644 --- a/OpenAuth.App/Request/VerificationReq.cs +++ b/OpenAuth.App/Request/VerificationReq.cs @@ -14,7 +14,7 @@ public string VerificationOpinion { get; set; } /// - /// 驳回的步骤 + /// 驳回的步骤,即驳回到的节点ID /// public string NodeRejectStep { get; set; } } diff --git a/OpenAuth.Mvc/Views/FlowSchemes/NodeInfo.cshtml b/OpenAuth.Mvc/Views/FlowSchemes/NodeInfo.cshtml index 2f437670..0750ebd9 100644 --- a/OpenAuth.Mvc/Views/FlowSchemes/NodeInfo.cshtml +++ b/OpenAuth.Mvc/Views/FlowSchemes/NodeInfo.cshtml @@ -27,6 +27,18 @@ placeholder="节点名称" autocomplete="off" class="layui-input"> + +
+ +
+ +
+
@@ -37,9 +49,17 @@
-
    - -
    +
    +
    + + +
    +
    +
    +
      + +
      + diff --git a/OpenAuth.Mvc/userJs/nodeInfo.js b/OpenAuth.Mvc/userJs/nodeInfo.js index 084be08d..fe9ef4b2 100644 --- a/OpenAuth.Mvc/userJs/nodeInfo.js +++ b/OpenAuth.Mvc/userJs/nodeInfo.js @@ -20,7 +20,7 @@ layui.config({ vm.$set('$data', node.setInfo); users = node.setInfo.NodeDesignateData.users; } - + //菜单列表 var menucon = {}; //table的参数,如搜索key,点击tree的id //副树状结构,等lay table没问题了,可以换成table @@ -119,7 +119,7 @@ layui.config({ //提供给上父页面调用 getVal = function () { var result = { - NodeDesignateData: { //节点指定操作人 + NodeDesignateData: { //节点指定操作人 users: users, role: [], org: [] diff --git a/OpenAuth.UnitTest/TestWorkflow.cs b/OpenAuth.UnitTest/TestWorkflow.cs index 4a7d7ee2..271ffd14 100644 --- a/OpenAuth.UnitTest/TestWorkflow.cs +++ b/OpenAuth.UnitTest/TestWorkflow.cs @@ -2,6 +2,7 @@ using Infrastructure; using Microsoft.VisualStudio.TestTools.UnitTesting; using OpenAuth.App; +using OpenAuth.App.Request; using OpenAuth.Repository.Domain; namespace OpenAuth.UnitTest @@ -23,9 +24,13 @@ namespace OpenAuth.UnitTest /// 李玉宝于2017-01-20 9:59:11 ///
      [TestMethod] - public void AddProcessInstance() + public void Verify() { - + _runApp.Verification(new VerificationReq + { + FlowInstanceId = "c4aa73f2-d5ea-43c3-8b7e-903e31ba5828", + VerificationFinally = "3" + }); } }