mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-09-19 01:58:01 +08:00
refactor: 优化代码结构
This commit is contained in:
@@ -5,11 +5,6 @@
|
||||
/// </summary>
|
||||
public class FlowNode
|
||||
{
|
||||
public const string START = "start round mix";
|
||||
public const string END = "end round";
|
||||
public const string NODE = "node";
|
||||
public const string FORK = "fork"; //会签开始节点
|
||||
public const string JOIN = "join"; //会签结束节点
|
||||
|
||||
public string id { get; set; }
|
||||
|
||||
@@ -32,27 +27,7 @@
|
||||
|
||||
public class Setinfo
|
||||
{
|
||||
public const string ALL_USER = "ALL_USER"; //所有用户
|
||||
public const string SPECIAL_ROLE = "SPECIAL_ROLE"; //指定角色
|
||||
public const string SPECIAL_USER = "SPECIAL_USER"; //指定用户
|
||||
public const string SPECIAL_SQL = "SPECIAL_SQL"; //指定SQL
|
||||
/// <summary>
|
||||
/// 连续多级直属上级
|
||||
/// <para>不同于钉钉的各上级部门负责人审批,OpenAuth以用户的各级直属上级审批模式</para>
|
||||
/// </summary>
|
||||
public const string RUNTIME_MANY_PARENTS = "RUNTIME_MANY_PARENTS";
|
||||
/// <summary>
|
||||
/// 部门负责人
|
||||
/// </summary>
|
||||
public const string RUNTIME_CHAIRMAN = "RUNTIME_CHAIRMAN";
|
||||
/// <summary>
|
||||
/// 上一节点执行人的直属上级
|
||||
/// </summary>
|
||||
public const string RUNTIME_PARENT = "RUNTIME_PARENT";
|
||||
|
||||
public const string RUNTIME_SPECIAL_ROLE = "RUNTIME_SPECIAL_ROLE"; //运行时指定角色
|
||||
public const string RUNTIME_SPECIAL_USER = "RUNTIME_SPECIAL_USER"; //运行时指定用户
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 节点执行权限类型
|
||||
/// </summary>
|
||||
|
@@ -71,7 +71,7 @@ namespace OpenAuth.App.Flow
|
||||
Nodes.Add(node.id, node);
|
||||
}
|
||||
|
||||
if (node.type == FlowNode.START)
|
||||
if (node.type == Define.NODE_TYPE_START)
|
||||
{
|
||||
this.startNodeId = node.id;
|
||||
}
|
||||
@@ -174,16 +174,16 @@ namespace OpenAuth.App.Flow
|
||||
switch (Nodes[nodeId].type)
|
||||
{
|
||||
//会签开始节点
|
||||
case FlowNode.FORK:
|
||||
case Define.NODE_TYPE_FORK:
|
||||
return 0;
|
||||
//会签结束节点
|
||||
case FlowNode.JOIN:
|
||||
case Define.NODE_TYPE_JOIN:
|
||||
return 1;
|
||||
//结束节点
|
||||
case FlowNode.END:
|
||||
case Define.NODE_TYPE_END:
|
||||
return 4;
|
||||
//开始节点
|
||||
case FlowNode.START:
|
||||
case Define.NODE_TYPE_START:
|
||||
return 3;
|
||||
|
||||
default:
|
||||
@@ -234,7 +234,7 @@ namespace OpenAuth.App.Flow
|
||||
{
|
||||
if (tag.Taged == (int)TagState.Ok)
|
||||
{
|
||||
if (nextNode.type == FlowNode.JOIN) //下一个节点是会签结束,则该线路结束
|
||||
if (nextNode.type == Define.NODE_TYPE_JOIN) //下一个节点是会签结束,则该线路结束
|
||||
{
|
||||
res = GetNextNodeId(nextNode.id);
|
||||
}
|
||||
@@ -277,7 +277,7 @@ namespace OpenAuth.App.Flow
|
||||
}
|
||||
else if (tag.Taged == (int)TagState.Ok)
|
||||
{
|
||||
if (nextNode.type == FlowNode.JOIN) //这种模式下只有坚持到【会签结束】节点之前才有意义,是否需要判定这条线所有的节点都通过,不然直接执行这个节点??
|
||||
if (nextNode.type == Define.NODE_TYPE_JOIN) //这种模式下只有坚持到【会签结束】节点之前才有意义,是否需要判定这条线所有的节点都通过,不然直接执行这个节点??
|
||||
{
|
||||
if (forkNode.setInfo.ConfluenceOk == null)
|
||||
{
|
||||
@@ -533,7 +533,7 @@ namespace OpenAuth.App.Flow
|
||||
result = tag.Taged, //1:通过;2:不通过;3驳回
|
||||
description = tag.Description,
|
||||
execTime = tag.TagedTime,
|
||||
isFinish = node.type == FlowNode.END
|
||||
isFinish = node.type == Define.NODE_TYPE_END
|
||||
};
|
||||
|
||||
var url = node.setInfo.ThirdPartyUrl;
|
||||
@@ -568,7 +568,7 @@ namespace OpenAuth.App.Flow
|
||||
throw new Exception("流程已结束,不能撤销");
|
||||
}
|
||||
|
||||
if(Nodes[previousId].type == FlowNode.START)
|
||||
if(Nodes[previousId].type == Define.NODE_TYPE_START)
|
||||
{
|
||||
throw new Exception("没有任何审批,不能撤销!你可以删除或召回这个流程");
|
||||
}
|
||||
@@ -628,7 +628,7 @@ namespace OpenAuth.App.Flow
|
||||
{
|
||||
makerList = GetForkNodeMakers(nextNodeId);
|
||||
}
|
||||
else if (nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_ROLE)
|
||||
else if (nextNode.setInfo.NodeDesignate == Define.RUNTIME_SPECIAL_ROLE)
|
||||
{
|
||||
//如果是运行时指定角色
|
||||
if (nextNode.setInfo.NodeDesignate != request.NodeDesignateType)
|
||||
@@ -640,7 +640,7 @@ namespace OpenAuth.App.Flow
|
||||
var users = revelanceApp.Get(Define.USERROLE, false, request.NodeDesignates);
|
||||
makerList = GenericHelpers.ArrayToString(users, makerList);
|
||||
}
|
||||
else if (nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_USER)
|
||||
else if (nextNode.setInfo.NodeDesignate == Define.RUNTIME_SPECIAL_USER)
|
||||
{
|
||||
//如果是运行时指定用户
|
||||
if (nextNode.setInfo.NodeDesignate != request.NodeDesignateType)
|
||||
@@ -650,7 +650,7 @@ namespace OpenAuth.App.Flow
|
||||
|
||||
makerList = GenericHelpers.ArrayToString(request.NodeDesignates, makerList);
|
||||
}
|
||||
else if (nextNode.setInfo.NodeDesignate == Setinfo.SPECIAL_SQL)
|
||||
else if (nextNode.setInfo.NodeDesignate == Define.SPECIAL_SQL)
|
||||
{
|
||||
//如果是指定SQL
|
||||
if (nextNode.setInfo.NodeDesignate != request.NodeDesignateType)
|
||||
@@ -663,8 +663,8 @@ namespace OpenAuth.App.Flow
|
||||
var result = sugarClient.Ado.SqlQuery<string>(sql);
|
||||
makerList = GenericHelpers.ArrayToString(result, makerList);
|
||||
}
|
||||
else if (nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_PARENT
|
||||
|| nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_MANY_PARENTS)
|
||||
else if (nextNode.setInfo.NodeDesignate == Define.RUNTIME_PARENT
|
||||
|| nextNode.setInfo.NodeDesignate == Define.RUNTIME_MANY_PARENTS)
|
||||
{
|
||||
//如果是上一节点执行人的直属上级或连续多级直属上级
|
||||
if (nextNode.setInfo.NodeDesignate != request.NodeDesignateType)
|
||||
@@ -684,7 +684,7 @@ namespace OpenAuth.App.Flow
|
||||
|
||||
makerList = GenericHelpers.ArrayToString(new[] { parentId }, makerList);
|
||||
}
|
||||
else if (nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_CHAIRMAN)
|
||||
else if (nextNode.setInfo.NodeDesignate == Define.RUNTIME_CHAIRMAN)
|
||||
{
|
||||
//如果是发起人的部门负责人
|
||||
if (nextNode.setInfo.NodeDesignate != request.NodeDesignateType)
|
||||
@@ -716,28 +716,28 @@ namespace OpenAuth.App.Flow
|
||||
public string GetNodeMarkers(FlowNode node, string flowinstanceCreateUserId = "")
|
||||
{
|
||||
string makerList = "";
|
||||
if (node.type == FlowNode.START && (!string.IsNullOrEmpty(flowinstanceCreateUserId))) //如果是开始节点,通常情况下是驳回到开始了
|
||||
if (node.type == Define.NODE_TYPE_START && (!string.IsNullOrEmpty(flowinstanceCreateUserId))) //如果是开始节点,通常情况下是驳回到开始了
|
||||
{
|
||||
makerList = flowinstanceCreateUserId;
|
||||
}
|
||||
else if (node.setInfo != null)
|
||||
{
|
||||
if (string.IsNullOrEmpty(node.setInfo.NodeDesignate) ||
|
||||
node.setInfo.NodeDesignate == Setinfo.ALL_USER) //所有成员
|
||||
node.setInfo.NodeDesignate == Define.ALL_USER) //所有成员
|
||||
{
|
||||
makerList = "1";
|
||||
}
|
||||
else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_USER) //指定成员
|
||||
else if (node.setInfo.NodeDesignate == Define.SPECIAL_USER) //指定成员
|
||||
{
|
||||
makerList = GenericHelpers.ArrayToString(node.setInfo.NodeDesignateData.datas, makerList);
|
||||
}
|
||||
else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_ROLE) //指定角色
|
||||
else if (node.setInfo.NodeDesignate == Define.SPECIAL_ROLE) //指定角色
|
||||
{
|
||||
var revelanceApp = AutofacContainerModule.GetService<RevelanceManagerApp>();
|
||||
var users = revelanceApp.Get(Define.USERROLE, false, node.setInfo.NodeDesignateData.datas);
|
||||
makerList = GenericHelpers.ArrayToString(users, makerList);
|
||||
}
|
||||
else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_SQL) //指定SQL
|
||||
else if (node.setInfo.NodeDesignate == Define.SPECIAL_SQL) //指定SQL
|
||||
{
|
||||
//如果是指定SQL,则需要执行SQL,并返回结果
|
||||
var sql = ReplaceSql(node.setInfo.NodeDesignateData.datas[0]);
|
||||
@@ -745,8 +745,8 @@ namespace OpenAuth.App.Flow
|
||||
var result = sugarClient.Ado.SqlQuery<string>(sql);
|
||||
makerList = GenericHelpers.ArrayToString(result, makerList);
|
||||
}
|
||||
else if (node.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_ROLE
|
||||
|| node.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_USER)
|
||||
else if (node.setInfo.NodeDesignate == Define.RUNTIME_SPECIAL_ROLE
|
||||
|| node.setInfo.NodeDesignate == Define.RUNTIME_SPECIAL_USER)
|
||||
{
|
||||
//如果是运行时选定的用户,则暂不处理。由上个节点审批时选定
|
||||
}
|
||||
@@ -798,7 +798,7 @@ namespace OpenAuth.App.Flow
|
||||
}
|
||||
|
||||
node = GetNextNode(node.id);
|
||||
} while (node.type != FlowNode.JOIN);
|
||||
} while (node.type != Define.NODE_TYPE_JOIN);
|
||||
|
||||
return canCheckId;
|
||||
}
|
||||
@@ -837,7 +837,7 @@ namespace OpenAuth.App.Flow
|
||||
{
|
||||
if (node.setInfo != null && node.setInfo.Taged != null)
|
||||
{
|
||||
if (node.type != FlowNode.FORK && node.setInfo.Taged != (int)TagState.Ok) //如果节点是不同意或驳回,则不用再找了
|
||||
if (node.type != Define.NODE_TYPE_FORK && node.setInfo.Taged != (int)TagState.Ok) //如果节点是不同意或驳回,则不用再找了
|
||||
{
|
||||
break;
|
||||
}
|
||||
@@ -864,7 +864,7 @@ namespace OpenAuth.App.Flow
|
||||
|
||||
markers += marker;
|
||||
break;
|
||||
} while (node.type != FlowNode.JOIN);
|
||||
} while (node.type != Define.NODE_TYPE_JOIN);
|
||||
|
||||
return markers;
|
||||
}
|
||||
|
@@ -477,7 +477,7 @@ namespace OpenAuth.App
|
||||
}
|
||||
}
|
||||
|
||||
if (wfruntime.currentNode.setInfo.NodeDesignate == Setinfo.RUNTIME_MANY_PARENTS)
|
||||
if (wfruntime.currentNode.setInfo.NodeDesignate == Define.RUNTIME_MANY_PARENTS)
|
||||
{
|
||||
List<string> roles;
|
||||
if (user.Id != tag.UserId)
|
||||
@@ -619,8 +619,8 @@ namespace OpenAuth.App
|
||||
/// <exception cref="Exception"></exception>
|
||||
private void CheckNodeDesignate(NodeDesignateReq request)
|
||||
{
|
||||
if ((request.NodeDesignateType == Setinfo.RUNTIME_SPECIAL_ROLE
|
||||
|| request.NodeDesignateType == Setinfo.RUNTIME_SPECIAL_USER) && request.NodeDesignates.Length == 0)
|
||||
if ((request.NodeDesignateType == Define.RUNTIME_SPECIAL_ROLE
|
||||
|| request.NodeDesignateType == Define.RUNTIME_SPECIAL_USER) && request.NodeDesignates.Length == 0)
|
||||
{
|
||||
throw new Exception("下个节点需要选择执行人或执行角色");
|
||||
}
|
||||
@@ -860,8 +860,8 @@ namespace OpenAuth.App
|
||||
var wfruntime = new FlowRuntime(flowInstance);
|
||||
var user = _auth.GetCurrentUser();
|
||||
|
||||
if (wfruntime.nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_USER
|
||||
|| wfruntime.nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_SPECIAL_ROLE)
|
||||
if (wfruntime.nextNode.setInfo.NodeDesignate == Define.RUNTIME_SPECIAL_USER
|
||||
|| wfruntime.nextNode.setInfo.NodeDesignate == Define.RUNTIME_SPECIAL_ROLE)
|
||||
{
|
||||
throw new Exception("暂不支持【第二执行节点为运行时指定角色/账号执行】的流程恢复");
|
||||
}
|
||||
|
Reference in New Issue
Block a user