0

我是 Drools 和 Kie Workbench 的新手,所以请多多包涵。我无法决定编写指导规则的“那么”部分的最佳方式。我的问题如下:

规则:如果客户有特定的资产类别,则生成并添加任务列表以关闭客户。例如:

when
    clientOffBoard : ClientOffBoard( activity == Activity.PREVENT_TRADE && , client.assetClass == AssetClass.ETD )

在 THEN 部分,我需要做这样的事情:

then
    Task task1 = new Task();
    task1.setDescription( "Remove the client from system A" );
    insertLogical( task1 );
    clientOffBoard.addTask( task1 );
    Task task2 = new Task();
    task1.setDescription( "Notify Person B" );
    insertLogical( task2 );
    clientOffBoard.addTask( task2 );
    ...

我的问题是围绕“那么”部分和任务对象。BA 应该能够在需要时创建任务。任务对象现在只是一个带有“字符串描述”字段的容器对象。BA 是否需要预先创建这些,或者他们可以像我上面所做的那样在指导规则中创建它们?

请注意,BA 可以随时使用 Kie 工作台创建新任务,并且有成千上万的客户共享相同的任务。每个 clientOffBoard 对象的任务列表可能有 0 个任务。在工作台中处理这个问题的最佳方法是什么。任何意见,将不胜感激。

我当前的设置涉及使用我的“事实”创建一个 JAR 文件,即所有上述类,但在实际执行中,可能会为事实分配值,即创建一个具有特定描述的新任务对象,然后将此任务插入到clientOffBoard 任务列表。

我希望这是有道理的。

谢谢

4

1 回答 1

0

据我了解,您需要一个(可修改的)任务列表集。这应该为您提供一组 Java 对象 - 每个 TaskList 一个:

<TaskListSet>
   <TaskList id="use for ETD">
     <Task>Remove the client from system A</Task>
     <Task>Notify Person B</Task>
   </TaskList>
   <TaskList id="use for FOO">
     ...
   ...
</TaskListSet>

您不能指望提供 KieWorkbench 来帮助您完成这个简单的编辑任务。您可以使用 XML 编辑器,或定义其他文本格式等。

规则作者只需通过其 id 选择适当的 TaskList 并写入

then
  clientOffBoard.setTaskList( "use for ETD" );
end

也许需要将个别任务作为事实插入(正如您在 Q 中所拥有的那样),但这是一个技术细节。

于 2017-03-15T16:34:42.223 回答