Kie Workbench,Guided Rule,在规则中创建对象

时间:2017-03-15 11:24:34

标签: java drools drools-guvnor kie-workbench

我是Drools和Kie Workbench的新手所以请耐心等待。我无法决定写出'那么'指导规则的一部分。我的问题如下:

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

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

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

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 );
    ...

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

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

我目前的设置涉及使用我的' Facts'创建一个JAR文件。所有上述类但在实际执行中,事实可以被赋值,即。创建具有特定描述的新Task对象,然后将此任务插入clientOffBoard任务列表。

我希望这是有道理的。

由于

1 个答案:

答案 0 :(得分: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中所做的那样),但这是技术细节。