我正在使用JRules来编写业务规则。我想对规则添加注释,如下面非常简单的示例所示。我意识到规则有一个文档部分,但这不是我所要求的
// comments needed here
definitions
set 'an existing customer' to a customer
where the category of 'an existing customer' is "gold"
if
the city of 'an existing customer' is "London"
then
give a 5% discount to 'an existing customer'
else
// and more comments needed here
give a 10% discount to 'an existing customer'
显然,在上面的例子中,使用通常的c++和c#双斜杠//将不起作用,所以我的问题是如何在BAL中向规则添加注释。
很遗憾,您无法在规则中添加注释。如果措辞得当,这些规则应该是不言自明的。
但是,如果您想记录每个规则的业务理由,则可以使用文档功能。
有一个简单的解决方法:
您可以在BOM表中创建两个静态虚拟方法:一个用于注释条件,另一个用于操作。
在条件下:
- 创建一个接受参数String并返回布尔值的静态方法
- 将其描述为"//{0}"(不带引号)
- 在B2X中,使其返回true
- 然后,您可以用//"your_condition"和…注释条件
在前面的例子中:
if
the city of 'an existing customer' is "London" and
// "blablabla" and
the age of 'an existing customer' is greater than 18
then ...
由于该方法返回true,因此不会影响测试。它必须被"one_answers"包围,而不是"或"。
在行动的情况下:
- 创建一个接受参数String并返回void的静态方法
- 将其描述为"//{0}"(不带引号)
- 在B2X中,添加"return;"
- 然后,您可以用//"your_action"对动作进行评论
在前面的例子中:
else
// "and more comments needed here" ;
give a 10% discount to 'an existing customer' ;
你可以这样做,但这意味着需要大量的定制。所以忘记它
而且它只有通过浏览器界面才是可行的,而不是Eclipse
只是因为你会作弊
如何操作:
准备好的稳定
你需要重新创建你自己的RTS(团队服务器)网络界面!如果听起来太费力,请停止阅读:)
使用API,您可以从RTS(数据库)中检索规则——任何规则都有(Tito的回答中提到的)文档
因此,您可以处理规则的显示并相应地添加注释
当然,你需要找到一种方法来正确定位规则中的注释
行号可以做到这一点
这是为了展示
十、当你保存规则时(通过点击一个可爱的按钮,你将对其进行编码以进行实际保存),你需要删除注释(并在下次你想显示规则时知道它们在哪里),并保存规则主体和所附文档
听起来很疯狂?一个客户做了这件事,我正在做这件事:)但我们没有修改规则体。几乎所有的东西,除了规则体
这恐怕需要几个月的时间,这取决于从事这项工作的人数
总之:你能做到吗,是的
实施值得付出努力吗?没门
这个功能在下一个版本中可用吗?不!正如蒂托所提到的,一条规则应该是自我解释的
对不起:(