Workflow Activiti-信号和呼叫活动

Workflow Activiti-信号和呼叫活动,workflow,activiti,Workflow,Activiti,以下是我们的Activiti(5.21版)主图表: 代码: 代码: 问题是变量“VARIABLE1”和“VARIABLE2”没有传递到“调用活动2”,我想边界信号可能有问题吧?因为他们被传递到“呼叫活动1”。有什么想法吗?你怎么知道变量没有被发送到调用活动2? 您是否在进程启动时注入变量 我这样问是因为如果在调用Activity 1之前没有初始化流程变量,那么它们实际上不会作为变量传递到子流程中,而是在调用Activity 1子流程的实例化时初始化 因此,如果变量在调用活动1的条目上不存在

以下是我们的Activiti(5.21版)主图表: 代码:


代码:



问题是变量“VARIABLE1”和“VARIABLE2”没有传递到“调用活动2”,我想边界信号可能有问题吧?因为他们被传递到“呼叫活动1”。有什么想法吗?

你怎么知道变量没有被发送到调用活动2? 您是否在进程启动时注入变量

我这样问是因为如果在调用Activity 1之前没有初始化流程变量,那么它们实际上不会作为变量传递到子流程中,而是在调用Activity 1子流程的实例化时初始化

因此,如果变量在调用活动1的条目上不存在,那么就没有变量可以传递到调用活动2中

这应该是一个相对容易创建的单元测试,以演示如何解决场景中的任何问题

谢谢
Greg

我正在启动时初始化变量。这些变量保存在“调用活动1”的act_ru_变量中。但是,在发出信号之后,当“调用活动2”尝试使用它们时,我得到了一个错误,因为它们没有通过。您可以附加一个单元测试吗。请注意,如果在发送信号之前在被调用的活动1中更新了变量,则更新的值在被调用的活动2中将不可用,因为被调用的子进程存在于其自身的执行上下文中。但是,通过nit测试,我们应该能够看到发生了什么。我实现了一个客户机(使用jdbc的简单java应用程序),目标是进行单元测试,它成功了。所以可能是我们的主要项目。谢谢
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
  <signal id="alertSignal" name="alert"></signal>
  <process id="Call" name="Call" isExecutable="true">
    <callActivity id="callactivity1" name="Call activity 1" calledElement="Call1">
      <extensionElements>
    <activiti:in source="VARIABLE1" target="VARIABLE1"></activiti:in>
    <activiti:in source="VARIABLE2" target="VARIABLE2"></activiti:in>
       </extensionElements>
    </callActivity>
    <callActivity id="callactivity2" name="Call activity 2" calledElement="Call2">
      <extensionElements>
    <activiti:in source="VARIABLE1" target="VARIABLE1"></activiti:in>
    <activiti:in source="VARIABLE2" target="VARIABLE2"></activiti:in>
      </extensionElements>
    </callActivity>
    <callActivity id="callactivity3" name="Call activity 3" calledElement="Call3">
      <extensionElements>
    <activiti:in source="VARIABLE1" target="VARIABLE1"></activiti:in>
    <activiti:in source="VARIABLE2" target="VARIABLE2"></activiti:in>
      </extensionElements>
    </callActivity>
    <startEvent id="startevent1" name="Start"></startEvent>
    <endEvent id="endevent1" name="End"></endEvent>
    <endEvent id="endevent2" name="End"></endEvent>
    <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="callactivity1"></sequenceFlow>
    <sequenceFlow id="flow2" sourceRef="callactivity1" targetRef="callactivity2"></sequenceFlow>
    <sequenceFlow id="flow3" sourceRef="callactivity2" targetRef="endevent1"></sequenceFlow>
    <sequenceFlow id="flow4" sourceRef="callactivity3" targetRef="endevent2"></sequenceFlow>
    <boundaryEvent id="boundarysignal1" name="Signal" attachedToRef="callactivity1" cancelActivity="true">
      <signalEventDefinition signalRef="alertSignal"></signalEventDefinition>
    </boundaryEvent>
    <sequenceFlow id="flow5" sourceRef="boundarysignal1" targetRef="callactivity3"></sequenceFlow>
  </process>
</definitions>
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
  <signal id="alertSignal" name="alert"></signal>
  <process id="Call1" name="Call1" isExecutable="true">
    <startEvent id="startevent1" name="Start"></startEvent>
    <userTask id="test-a" name="test-a">
      <extensionElements>
    <activiti:taskListener event="create" expression="#{VARIABLE1.allow(task)}"></activiti:taskListener>
      </extensionElements>
    </userTask>
    <parallelGateway id="parallelgateway1" name="Parallel Gateway"></parallelGateway>
    <userTask id="test-b" name="test-b">
      <extensionElements>
    <activiti:taskListener event="create" expression="#{VARIABLE1.allow(task)}"></activiti:taskListener>
      </extensionElements>
    </userTask>
    <endEvent id="endevent1" name="End"></endEvent>
    <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="test-a"></sequenceFlow>
    <sequenceFlow id="flow2" sourceRef="test-a" targetRef="parallelgateway1"></sequenceFlow>
    <sequenceFlow id="flow3" sourceRef="parallelgateway1" targetRef="test-b"></sequenceFlow>
    <sequenceFlow id="flow4" sourceRef="test-b" targetRef="endevent1"></sequenceFlow>
    <intermediateThrowEvent id="signalintermediatethrowevent1" name="SignalThrowEvent">
      <signalEventDefinition signalRef="alertSignal"></signalEventDefinition>
    </intermediateThrowEvent>
    <sequenceFlow id="flow5" sourceRef="parallelgateway1" targetRef="signalintermediatethrowevent1"></sequenceFlow>
  </process>
</definitions>