工作流许可条件匹配
Workflow permissioning criterias matching
目前,我有一个工作流程 table 非常复杂,其中包含相互组合的多个值。在权限模型中为正确的用户找到正确的批准者基本上是一个工作流
这是工作流程的简化示例 table
Country
Department
Role
Approver
ALL
ALL
ALL
Bob
UK
IT
Developper
Tim
US
IT
Developper
Mike
ALL
ALL
Analyst
John
这些工作流程步骤始终遵循先决条件:
- 总是存在符合所有条件的默认批准人
- 任何条件匹配都优先于所有条件
- 如果没有条件匹配,它将属于默认批准人
我有用户需要根据上述矩阵进行审批
User
Country
Department
Role
U1
UK
IT
UX designer
U2
US
HR
Analyst
我正在尝试找出如何提取以下匹配项:
User
Approver
Reason
U1
Bob
User U1 does not match the criterias so its climb to the default approver
U2
Tim
User U2 match workflow step because Tim validate all UK Developpers belonging to IT department
当然,对于这个例子,几乎没有标准,所以一个简单的 if / else 就可以解决它。
但我有 6 个标准,我相信如果应用这种幼稚的方法,它们将达到大量的组合。
在这种情况下,规则引擎会应用这个问题吗? (比如流口水?)
我认为引擎会将用户/和工作流步骤列表作为事实。
在这种情况下应该做出更适用的决定 table 吗?
在构建问题方面的任何帮助将不胜感激:)
这是一个将用户与其批准国家相匹配的非常简单的示例
rule "Has country approver"
when
$user : User( $country : country )
$wf : WorkflowStep(country == $country) from $userAccess.steps
then
//take the approver for the matching step
$userAccess.setApprover($wf.getApprover());
//insertLogical ?
end
规则引擎非常适合您的解决方案,但您必须决定如何使用它。
您提供的直接使用 Drools 的示例非常低级,它可以工作,但需要您在 DRL 中编写规则。
由于您已经知道您的评估是无状态的并且您的输入按字面格式设置为 table,因此我认为决策 Table 更合适。鉴于您有 two 种决策 Table、Drools 和 DMN。
我建议您尝试使用 DMN,因为它更容易上手,Kogito 提供了一个 quick-start 让您可以试验整个系统,甚至可以为此编写一个测试场景,这基本上是您的第二个table.
目前,我有一个工作流程 table 非常复杂,其中包含相互组合的多个值。在权限模型中为正确的用户找到正确的批准者基本上是一个工作流 这是工作流程的简化示例 table
Country | Department | Role | Approver |
---|---|---|---|
ALL | ALL | ALL | Bob |
UK | IT | Developper | Tim |
US | IT | Developper | Mike |
ALL | ALL | Analyst | John |
这些工作流程步骤始终遵循先决条件:
- 总是存在符合所有条件的默认批准人
- 任何条件匹配都优先于所有条件
- 如果没有条件匹配,它将属于默认批准人
我有用户需要根据上述矩阵进行审批
User | Country | Department | Role |
---|---|---|---|
U1 | UK | IT | UX designer |
U2 | US | HR | Analyst |
我正在尝试找出如何提取以下匹配项:
User | Approver | Reason |
---|---|---|
U1 | Bob | User U1 does not match the criterias so its climb to the default approver |
U2 | Tim | User U2 match workflow step because Tim validate all UK Developpers belonging to IT department |
当然,对于这个例子,几乎没有标准,所以一个简单的 if / else 就可以解决它。 但我有 6 个标准,我相信如果应用这种幼稚的方法,它们将达到大量的组合。
在这种情况下,规则引擎会应用这个问题吗? (比如流口水?) 我认为引擎会将用户/和工作流步骤列表作为事实。 在这种情况下应该做出更适用的决定 table 吗? 在构建问题方面的任何帮助将不胜感激:)
这是一个将用户与其批准国家相匹配的非常简单的示例
rule "Has country approver"
when
$user : User( $country : country )
$wf : WorkflowStep(country == $country) from $userAccess.steps
then
//take the approver for the matching step
$userAccess.setApprover($wf.getApprover());
//insertLogical ?
end
规则引擎非常适合您的解决方案,但您必须决定如何使用它。
您提供的直接使用 Drools 的示例非常低级,它可以工作,但需要您在 DRL 中编写规则。
由于您已经知道您的评估是无状态的并且您的输入按字面格式设置为 table,因此我认为决策 Table 更合适。鉴于您有 two 种决策 Table、Drools 和 DMN。
我建议您尝试使用 DMN,因为它更容易上手,Kogito 提供了一个 quick-start 让您可以试验整个系统,甚至可以为此编写一个测试场景,这基本上是您的第二个table.