Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在drools lhs中调用自定义函数_Java_Drools - Fatal编程技术网

Java 在drools lhs中调用自定义函数

Java 在drools lhs中调用自定义函数,java,drools,Java,Drools,我需要编写一个自定义函数,对drools工作内存中的事实进行一些检查,并返回一个数字 据我所知,我需要导入具有自定义函数的helper类 现在如何从函数中访问工作内存?在LHS中如何调用该函数?函数实际上无法访问工作内存。您可以在规则中绑定所需的事实,然后将它们作为参数发送给函数 更好的方法是使用查询而不是函数。 您可以阅读Drools文档中有关查询的更多信息:函数实际上无法访问工作内存。您可以在规则中绑定所需的事实,然后将它们作为参数发送给函数 更好的方法是使用查询而不是函数。 您可以阅读Dr

我需要编写一个自定义函数,对drools工作内存中的事实进行一些检查,并返回一个数字

据我所知,我需要导入具有自定义函数的helper类


现在如何从函数中访问工作内存?在LHS中如何调用该函数?

函数实际上无法访问工作内存。您可以在规则中绑定所需的事实,然后将它们作为参数发送给函数

更好的方法是使用查询而不是函数。
您可以阅读Drools文档中有关查询的更多信息:

函数实际上无法访问工作内存。您可以在规则中绑定所需的事实,然后将它们作为参数发送给函数

更好的方法是使用查询而不是函数。
您可以阅读Drools文档中关于查询的更多信息:

如果我没记错,您只需导入静态函数,然后就可以使用它了。然后,您可以将参数传递给它以进行处理,这样我就必须单独列出事实并传递它?或者有任何方法可以直接访问所有事实吗?不要访问工作内存中的数据,除非它是通过模式匹配的事实并绑定到作为参数传递给静态方法的变量。这就是说,您可以用一个静态成员装配一个类,该静态成员被设置为工作内存对象引用,您可以调用任何合适的方法来全面检索事实并做您想做的事情。但是请注意,由于此LHS评估的工作内存发生了变化,您正在绕过重新评估效果。@laune我不明白您所说的“使用设置为工作内存对象引用的静态成员装配一个类”然后“调用任何合适的方法来检索事实”是什么意思。请你详细说明或提供一个例子好吗?我不会提供一个例子,除非我有一个好主意,需要对选择的事实进行什么样的检查。如果我没记错,你只需导入静态函数,然后就可以使用它了。然后,您可以将参数传递给它以进行处理,这样我就必须单独列出事实并传递它?或者有任何方法可以直接访问所有事实吗?不要访问工作内存中的数据,除非它是通过模式匹配的事实并绑定到作为参数传递给静态方法的变量。这就是说,您可以用一个静态成员装配一个类,该静态成员被设置为工作内存对象引用,您可以调用任何合适的方法来全面检索事实并做您想做的事情。但是请注意,由于此LHS评估的工作内存发生了变化,您正在绕过重新评估效果。@laune我不明白您所说的“使用设置为工作内存对象引用的静态成员装配一个类”然后“调用任何合适的方法来检索事实”是什么意思。请你详细说明或提供一个例子好吗?我不会提供一个例子,除非我有一个好主意,需要对选择的事实进行什么样的检查。该函数将用于根据事实进行一些计算。我假设计算不能用drools DSL表示,因此需要使用外部函数。查询是必要的吗?难道不需要累积所有事实,然后传递给函数/方法就足够了吗?我认为这是一个设计问题。功能不是通过Drools优化的,每次需要时都会重新评估。如果要在多个规则中重用函数,则每个规则都必须收集必须传递给函数的所有必要事实。另一方面,由于Drools优化规则/查询中某些模式的方式,查询可以在执行时间上带来一些改进。查询也更具封装性:它可以从会话中检索计算所需的任何事实。但我认为,所有这些都归结为您在函数/查询中要做的事情。函数将用于根据事实进行一些计算。我假设计算不能用drools DSL表示,因此需要使用外部函数。查询是必要的吗?难道不需要累积所有事实,然后传递给函数/方法就足够了吗?我认为这是一个设计问题。功能不是通过Drools优化的,每次需要时都会重新评估。如果要在多个规则中重用函数,则每个规则都必须收集必须传递给函数的所有必要事实。另一方面,由于Drools优化规则/查询中某些模式的方式,查询可以在执行时间上带来一些改进。查询也更加封装:它可以从会话中检索计算所需的任何事实。但我认为,所有这些都归结为您希望在函数/查询中执行的操作。