我有一个关于如何解决我手中的这种情况的问题。问题是,我试图定义一个自定义进程,以便重复特定的功能,但使用“父”进程指定的动态表达式。让我们将自定义进程称为“B”,将调用B活动的进程称为“A”,然后......在我的A进程中,我调用B进程,指定最近在服务任务中使用的目标表达式“customExpression” B过程。问题是我不知道如何在服务任务中使用这个“customExpression”。
在A流程中
<process id="A" name="A" isExecutable="true">
<startEvent id="startevent1" name="Start"></startEvent>
<callActivity id="callactivity1" name="Custom Service Task" calledElement="B">
<extensionElements>
<activiti:in sourceExpression="${customSpringService.execute(execution)}"></activiti:in>
</extensionElements>
</callActivity>
<sequenceFlow id="flow10" sourceRef="startevent1" targetRef="callactivity1"></sequenceFlow>
<endEvent id="endevent1" name="End"></endEvent>
<sequenceFlow id="flow11" sourceRef="callactivity1" targetRef="endevent1"></sequenceFlow>
</process>
在B流程中
<process id="B" name="B" isExecutable="true">
<startEvent id="startevent1" name="Start"></startEvent>
<serviceTask id="serviceTask1" name="Service Task 1" activiti:expression="${customExpression}"></serviceTask>
<endEvent id="endevent1" name="End"></endEvent>
<sequenceFlow id="flow7" sourceRef="startevent1" targetRef="serviceTask1"></sequenceFlow>
<sequenceFlow id="flow8" sourceRef="serviceTask1" targetRef="endevent1"></sequenceFlow>
</process>
我希望能够很好地解释自己...... 非常感谢您的支持。
https://forums.activiti.org/content/call-activity-expression-how
已发布问题答案 0 :(得分:1)
最后,我尝试了Mark(来自activiti论坛)提出的解决方案,并且它完美运行......
这是服务的代码
LIBRARY
} 这是服务任务中的一个
$('iframe').contents()
我没有直接指定“$ {accountService.getAccount(execution)}”作为方法参数,而是使用从父进程传递的变量。
答案 1 :(得分:0)
查看文档:{{3}} 在这里,您可以找到如何在ServiceTasks中使用表达式的解释。
我认为你错过了callactivty的用法。请看一下规格: http://www.activiti.org/userguide/#bpmnJavaServiceTask