如何在mule 4的JAVA SDK操作中将函数作为参数传递

如何在mule 4的JAVA SDK操作中将函数作为参数传递,mule,mule-studio,mule-component,mulesoft,mule-sdk,Mule,Mule Studio,Mule Component,Mulesoft,Mule Sdk,我正在尝试使用构建自定义连接器。基本上,我试图做的是向当前缓存作用域添加功能,让开发人员能够添加一个条件,在此条件下,作用域应根据最终结果(以及其他一些功能,但这正是我所主要关注的)。例如,仅当结果不为空时才存储数据库查询响应。 为此,我想在操作中传递一个函数作为参数,该操作将返回一个布尔值,并根据结果将结果存储在缓存中。操作的最终函数定义如下所示 public void cache(String key, Function(or something else?) storeInCache, C

我正在尝试使用构建自定义连接器。基本上,我试图做的是向当前缓存作用域添加功能,让开发人员能够添加一个条件,在此条件下,作用域应根据最终结果(以及其他一些功能,但这正是我所主要关注的)。例如,仅当结果不为空时才存储数据库查询响应。 为此,我想在操作中传递一个函数作为参数,该操作将返回一个布尔值,并根据结果将结果存储在缓存中。操作的最终函数定义如下所示

public void cache(String key, Function(or something else?) storeInCache, Chain connectors, CompletionCallback<Object, Object> callback) {}
public void缓存(字符串键、函数(或其他?)storeInCache、链连接器、CompletionCallback){
有可能做我想做的事吗。我愿意接受任何建议。有没有其他方法可以做到这一点


谢谢

我不确定您是否可以“扩展”像缓存作用域这样的内置组件。也许你可以用一个表达式来表达这个论点。如果这对您的用例不起作用,其他方法可以使用a或将storeInCache定义为a来延迟表达式的执行。

我不能将表达式用于该参数,因为它将在调用java方法之前进行计算,并将传递最终值,我看到的是它接受表达式,但它在流的最后执行,在此基础上,我可以决定是否将结果存储在缓存中。您是否检查了ParameterResolver的文档?“ParameterResolver允许您延迟解析操作上的表达式。这在不需要将表达式作为值的参数时非常有用。您可以通过从连接器的代码中按需解析表达式而不是自动解析来提高性能。”是的,我正在尝试。我主要想检查它是在新的有效负载上执行,还是只在以前的有效负载上执行。但是,是的,它看起来可以工作。我尝试过,它提供了执行表达式的能力,但它仍然在进入作用域之前的有效负载上执行。很抱歉,我不确定我是否理解这里的新有效负载。也许您可以在问题中展开,添加一些代码示例和说明。