Flowable 3.6.1 如何将表单中选择的字符串标识符赋值给sub-processes?
How to assign string identifiers selected in form to sub-processes in Flowable 3.6.1?
我已经检查了这个主题:https://forum.flowable.org/t/how-to-assign-as-sub-process-initiators-users-groups-that-have-been-selected-in-a-form/1429 但它的答案还没有被验证(我也无法验证它)。
我想做的只是构建一个简单的流程,其中包含 sub-processes 的动态编号,将根据开始表单中的选择动态指定受让人。实际上,sub-processes的个数与开始表格中的选择完全相同。例如,我选择了 A,B,C 3 个用户标识符,将有 3 个 sub-processes,一个分配给 A,一个分配给 B,另一个分配给 C。
但是试了半天,发现标识符串"A"(同B和c)只被当作一个TextNode
,受让人是一个字符串标识符'"A"' 不是真正的标识符 'A'。当我调试我的 flowable 安装时,我在源代码 JsonIndexVariableType#setValue
上进行了评估,并构建了一个新的 ObjectNode
: {"jsonValue":{"id":"A"} 并且它最后在 sub-process 实例中向我显示确切的用户 A
。
我很想知道实现这个目标的实用方法,任何帮助将不胜感激。
经过多次反复尝试,我终于找到了实现这个目标的解决方案。解决方案很简单,只需用 ${user.textValue()}
代替 ${user}
即可从 TextNode
.
中提取真正的受让人标识符
REMEMBER,变量不是纯字符串值,它实际上是TextNode
的一个实例,也就是说toString()
方法会return ""<id>""
(双引号导致找不到合适的受让人)。
源代码位于:
org.flowable.engine.impl.bpmn.behavior.UserTaskActivityBehavior#handleAssignments(
TaskService taskService, String assignee, String owner, List<String> candidateUsers,
List<String> candidateGroups, TaskEntity task, ExpressionManager expressionManager, DelegateExecution execution,
ProcessEngineConfigurationImpl processEngineConfiguration)
另一种方法是使用 Script Task
、Groovy
脚本,例如:
execution.setVariable("user", user.textValue())
然后就可以assignee给${user}
(user
这里已经是纯字符串了,和之前的方案不同)
我已经检查了这个主题:https://forum.flowable.org/t/how-to-assign-as-sub-process-initiators-users-groups-that-have-been-selected-in-a-form/1429 但它的答案还没有被验证(我也无法验证它)。
我想做的只是构建一个简单的流程,其中包含 sub-processes 的动态编号,将根据开始表单中的选择动态指定受让人。实际上,sub-processes的个数与开始表格中的选择完全相同。例如,我选择了 A,B,C 3 个用户标识符,将有 3 个 sub-processes,一个分配给 A,一个分配给 B,另一个分配给 C。
但是试了半天,发现标识符串"A"(同B和c)只被当作一个TextNode
,受让人是一个字符串标识符'"A"' 不是真正的标识符 'A'。当我调试我的 flowable 安装时,我在源代码 JsonIndexVariableType#setValue
上进行了评估,并构建了一个新的 ObjectNode
: {"jsonValue":{"id":"A"} 并且它最后在 sub-process 实例中向我显示确切的用户 A
。
我很想知道实现这个目标的实用方法,任何帮助将不胜感激。
经过多次反复尝试,我终于找到了实现这个目标的解决方案。解决方案很简单,只需用 ${user.textValue()}
代替 ${user}
即可从 TextNode
.
REMEMBER,变量不是纯字符串值,它实际上是TextNode
的一个实例,也就是说toString()
方法会return ""<id>""
(双引号导致找不到合适的受让人)。
源代码位于:
org.flowable.engine.impl.bpmn.behavior.UserTaskActivityBehavior#handleAssignments( TaskService taskService, String assignee, String owner, List<String> candidateUsers, List<String> candidateGroups, TaskEntity task, ExpressionManager expressionManager, DelegateExecution execution, ProcessEngineConfigurationImpl processEngineConfiguration)
另一种方法是使用 Script Task
、Groovy
脚本,例如:
execution.setVariable("user", user.textValue())
然后就可以assignee给${user}
(user
这里已经是纯字符串了,和之前的方案不同)