扩展条件中的表达式?
Expand an expression in a condition?
我正在尝试在状态小部件中使用 StatusFlowTransition 实体的 'conditionExpression' 字段。
但我认为你不能在 Moqui 的条件下扩展 say ${statusTransition.conditionExpression}?
那么应该如何使用 conditionExpression 字段?
例如
<widgets>
<link url="${statusChangeTransition ?: 'updateStatus'}" text="StatusTransitionNameTemplate" text-map="statusTransition" parameter-map="[statusId:statusTransition.toStatusId]" condition="${statusTransition.conditionExpression}" />
</widgets>
您的问题的关键部分是:如何计算变量中的 Groovy 表达式?您可以直接使用 Groovy API 来执行此操作,但最简单和最有效(因为已编译的表达式被缓存)的方法是使用 ResourceFacade.condition() 方法,即:
<link ... condition="ec.resource.condition(statusTransition.conditionExpression, '')"/>
第二个参数为调试位置,可以为空。使用 conditionExpression 时,保持条件简单并且仅使用始终可用的上下文字段很重要。您还可以将第三个参数传递给 condition() 方法,它是一个 Map,其中包含要在 conditionExpression 中使用的字段以及当前上下文中的字段。
我正在尝试在状态小部件中使用 StatusFlowTransition 实体的 'conditionExpression' 字段。
但我认为你不能在 Moqui 的条件下扩展 say ${statusTransition.conditionExpression}?
那么应该如何使用 conditionExpression 字段?
例如
<widgets>
<link url="${statusChangeTransition ?: 'updateStatus'}" text="StatusTransitionNameTemplate" text-map="statusTransition" parameter-map="[statusId:statusTransition.toStatusId]" condition="${statusTransition.conditionExpression}" />
</widgets>
您的问题的关键部分是:如何计算变量中的 Groovy 表达式?您可以直接使用 Groovy API 来执行此操作,但最简单和最有效(因为已编译的表达式被缓存)的方法是使用 ResourceFacade.condition() 方法,即:
<link ... condition="ec.resource.condition(statusTransition.conditionExpression, '')"/>
第二个参数为调试位置,可以为空。使用 conditionExpression 时,保持条件简单并且仅使用始终可用的上下文字段很重要。您还可以将第三个参数传递给 condition() 方法,它是一个 Map,其中包含要在 conditionExpression 中使用的字段以及当前上下文中的字段。