diff --git a/OpenAuth.App/Flow/FlowRuntime.cs b/OpenAuth.App/Flow/FlowRuntime.cs
index 28f16fb7..a163df0b 100644
--- a/OpenAuth.App/Flow/FlowRuntime.cs
+++ b/OpenAuth.App/Flow/FlowRuntime.cs
@@ -25,6 +25,7 @@ namespace OpenAuth.App.Flow
{
public FlowRuntime(FlowInstance instance)
{
+ flowInstance = instance;
dynamic schemeContentJson = instance.SchemeContent.ToJson(); //获取工作流模板内容的json对象;
InitLines(schemeContentJson);
@@ -331,38 +332,91 @@ namespace OpenAuth.App.Flow
///
/// 驳回
///
- /// 驳回类型。null:使用节点配置的驳回类型/0:前一步/1:第一步/2:指定节点,使用NodeRejectStep
///
- public string RejectNode(string rejectType)
+ public void RejectNode(HttpClient client, VerificationReq reqest)
{
- dynamic node = Nodes[currentNodeId];
- if (node.setInfo != null && string.IsNullOrEmpty(rejectType))
+ //默认驳回到指定节点
+ string rejectNode = reqest.NodeRejectStep;
+
+ //如果不是指定到节点
+ if (string.IsNullOrEmpty(rejectNode))
{
- rejectType = node.setInfo.NodeRejectType;
+ string rejectType = reqest.NodeRejectType;
+ dynamic node = Nodes[currentNodeId];
+ if (node.setInfo != null && string.IsNullOrEmpty(reqest.NodeRejectType))
+ {
+ rejectType = node.setInfo.NodeRejectType;
+ }
+
+ if (rejectType == "0") //前一步
+ {
+ rejectNode = previousId;
+ }
+
+ if (rejectType == "1") //第一步
+ {
+ rejectNode = GetNextNodeId(startNodeId);
+ }
}
- if (rejectType == "0")
+ var user = AutofacContainerModule.GetService().GetCurrentUser().User;
+ var tag = new Tag
{
- return previousId;
+ Description = reqest.VerificationOpinion,
+ Taged = (int)TagState.Reject,
+ UserId = user.Id,
+ UserName = user.Name
+ };
+
+ MakeTagNode(currentNodeId, tag);
+ flowInstance.IsFinish = FlowInstanceStatus.Rejected; //4表示驳回(需要申请者重新提交表单)
+ if (rejectNode != "")
+ {
+ flowInstance.PreviousId = flowInstance.ActivityId;
+ flowInstance.ActivityId = rejectNode;
+ flowInstance.ActivityType = GetNodeType(rejectNode);
+ flowInstance.ActivityName = Nodes[rejectNode].name;
+ flowInstance.MakerList =
+ GetNodeMarkers(Nodes[rejectNode], flowInstance.CreateUserId);
+ SaveTransitionHis();
}
- if (rejectType == "1")
- {
- return GetNextNodeId(startNodeId);
- }
+ flowInstance.SchemeContent = JsonHelper.Instance.Serialize(ToSchemeObj());
+
+ var sugarClient = AutofacContainerModule.GetService();
+ sugarClient.Updateable(flowInstance).ExecuteCommand();
- return previousId;
+ SaveOperationHis(
+ $"{user.Account}-{DateTime.Now.ToString("yyyy-MM-dd HH:mm")}驳回了【{currentNode.name}】");
+
+ NotifyThirdParty(client, currentNode, tag);
}
///
/// 撤销流程,清空所有节点
///
- public void ReCall()
+ public void ReCall(RecallFlowInstanceReq request)
{
foreach (var item in Nodes)
{
item.Value.setInfo = null;
}
+
+ flowInstance.IsFinish = FlowInstanceStatus.Draft;
+ flowInstance.PreviousId = flowInstance.ActivityId;
+ flowInstance.ActivityId = startNodeId;
+ flowInstance.ActivityType = GetNodeType(startNodeId);
+ flowInstance.ActivityName = Nodes[startNodeId].name;
+ flowInstance.MakerList = GetNodeMarkers(Nodes[startNodeId], flowInstance.CreateUserId);
+
+ SaveTransitionHis();
+
+ var sugarClient = AutofacContainerModule.GetService();
+ sugarClient.Updateable(flowInstance).ExecuteCommand();
+
+ SaveOperationHis($"【撤回】备注:{request.Description}");
+
+ sugarClient.Ado.CommitTran();
}
///
@@ -712,6 +766,8 @@ namespace OpenAuth.App.Flow
#region 属性
+ private FlowInstance flowInstance { get; set; }
+
private string title { get; set; }
private int initNum { get; set; }
@@ -725,6 +781,11 @@ namespace OpenAuth.App.Flow
/// 上一个节点
///
private string previousId { get; set; }
+
+ ///
+ /// 实例节点集合
+ ///
+ private Dictionary Nodes { get; set; }
///
/// 流程实例中所有的线段
@@ -754,7 +815,7 @@ namespace OpenAuth.App.Flow
///
/// 开始节点的ID
///
- public string startNodeId { get; set; }
+ private string startNodeId { get; set; }
///
/// 当前节点的ID
@@ -782,11 +843,6 @@ namespace OpenAuth.App.Flow
///
public FlowNode nextNode => nextNodeId != "-1" ? Nodes[nextNodeId] : null;
- ///
- /// 实例节点集合
- ///
- public Dictionary Nodes { get; set; }
-
#endregion 属性
}
}
\ No newline at end of file
diff --git a/OpenAuth.App/FlowInstance/FlowInstanceApp.cs b/OpenAuth.App/FlowInstance/FlowInstanceApp.cs
index 715edfed..627324b2 100644
--- a/OpenAuth.App/FlowInstance/FlowInstanceApp.cs
+++ b/OpenAuth.App/FlowInstance/FlowInstanceApp.cs
@@ -40,7 +40,6 @@ namespace OpenAuth.App
private SysMessageApp _messageApp;
private DbExtension _dbExtension;
private UserManagerApp _userManagerApp;
- private OrgManagerApp _orgManagerApp;
private FlowApproverApp _flowApproverApp;
private RevelanceManagerApp _revelanceManagerApp;
@@ -504,7 +503,7 @@ namespace OpenAuth.App
/// 如果NodeRejectStep不为空,优先使用;否则按照NodeRejectType驳回
///
///
- public bool NodeReject(VerificationReq reqest)
+ public bool RejectNode(VerificationReq reqest)
{
var user = _auth.GetCurrentUser().User;
FlowInstance flowInstance = Get(reqest.FlowInstanceId);
@@ -514,39 +513,7 @@ namespace OpenAuth.App
}
FlowRuntime wfruntime = new FlowRuntime(flowInstance);
-
- //驳回的节点
- string rejectNode = string.IsNullOrEmpty(reqest.NodeRejectStep)
- ? wfruntime.RejectNode(reqest.NodeRejectType)
- : reqest.NodeRejectStep;
-
- var tag = new Tag
- {
- Description = reqest.VerificationOpinion,
- Taged = (int)TagState.Reject,
- UserId = user.Id,
- UserName = user.Name
- };
-
- wfruntime.MakeTagNode(wfruntime.currentNodeId, tag);
- flowInstance.IsFinish = FlowInstanceStatus.Rejected; //4表示驳回(需要申请者重新提交表单)
- if (rejectNode != "")
- {
- flowInstance.PreviousId = flowInstance.ActivityId;
- flowInstance.ActivityId = rejectNode;
- flowInstance.ActivityType = wfruntime.GetNodeType(rejectNode);
- flowInstance.ActivityName = wfruntime.Nodes[rejectNode].name;
- flowInstance.MakerList =
- wfruntime.GetNodeMarkers(wfruntime.Nodes[rejectNode], flowInstance.CreateUserId);
-
- wfruntime.SaveTransitionHis();
- }
-
- flowInstance.SchemeContent = JsonHelper.Instance.Serialize(wfruntime.ToSchemeObj());
- SugarClient.Updateable(flowInstance).ExecuteCommand();
-
- wfruntime.SaveOperationHis(
- $"{user.Account}-{DateTime.Now.ToString("yyyy-MM-dd HH:mm")}驳回了【{wfruntime.currentNode.name}】");
+ wfruntime.RejectNode(_httpClientFactory.CreateClient(),reqest);
//给流程创建人发送通知信息
_messageApp.SendMsgTo(flowInstance.CreateUserId,
@@ -554,8 +521,6 @@ namespace OpenAuth.App
SugarClient.Ado.CommitTran();
- wfruntime.NotifyThirdParty(_httpClientFactory.CreateClient(), wfruntime.currentNode, tag);
-
return true;
}
@@ -575,7 +540,7 @@ namespace OpenAuth.App
bool isReject = TagState.Reject.Equals((TagState)Int32.Parse(request.VerificationFinally));
if (isReject) //驳回
{
- NodeReject(request);
+ RejectNode(request);
}
else
{
@@ -732,7 +697,6 @@ namespace OpenAuth.App
///
public void ReCall(RecallFlowInstanceReq request)
{
- var user = _auth.GetCurrentUser().User;
FlowInstance flowInstance = Get(request.FlowInstanceId);
if (flowInstance.IsFinish == FlowInstanceStatus.Draft
|| flowInstance.IsFinish == FlowInstanceStatus.Finished)
@@ -741,25 +705,7 @@ namespace OpenAuth.App
}
FlowRuntime wfruntime = new FlowRuntime(flowInstance);
-
- string startNodeId = wfruntime.startNodeId; //起始节点
-
- wfruntime.ReCall();
-
- flowInstance.IsFinish = FlowInstanceStatus.Draft;
- flowInstance.PreviousId = flowInstance.ActivityId;
- flowInstance.ActivityId = startNodeId;
- flowInstance.ActivityType = wfruntime.GetNodeType(startNodeId);
- flowInstance.ActivityName = wfruntime.Nodes[startNodeId].name;
- flowInstance.MakerList = wfruntime.GetNodeMarkers(wfruntime.Nodes[startNodeId], flowInstance.CreateUserId);
-
- wfruntime.SaveTransitionHis();
-
- SugarClient.Updateable(flowInstance).ExecuteCommand();
-
- wfruntime.SaveOperationHis($"【撤回】由{user.Name}撤回,备注:{request.Description}");
-
- SugarClient.Ado.CommitTran();
+ wfruntime.ReCall(request);
}
/// 启动流程
@@ -805,7 +751,7 @@ namespace OpenAuth.App
public FlowInstanceApp(ISqlSugarClient client, IAuth auth, RevelanceManagerApp revelanceApp,
FlowSchemeApp flowSchemeApp, FormApp formApp, IHttpClientFactory httpClientFactory,
- SysMessageApp messageApp, UserManagerApp userManagerApp, OrgManagerApp orgManagerApp,
+ SysMessageApp messageApp, UserManagerApp userManagerApp,
IServiceProvider serviceProvider, FlowApproverApp flowApproverApp,
RevelanceManagerApp revelanceManagerApp, DbExtension dbExtension) : base(client, auth)
{
@@ -815,7 +761,6 @@ namespace OpenAuth.App
_httpClientFactory = httpClientFactory;
_messageApp = messageApp;
_userManagerApp = userManagerApp;
- _orgManagerApp = orgManagerApp;
_serviceProvider = serviceProvider;
_flowApproverApp = flowApproverApp;
_revelanceManagerApp = revelanceManagerApp;