Uploaded image for project: 'jBPM'
  1. jBPM
  2. JBPM-9411

Runtime Engine - Provide a way to access task details in boundary event

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Done
    • Icon: Major Major
    • 7.47.0.Final
    • None
    • Runtime Engine
    • None
    • False
    • False
    • NEW
    • NEW
    • Undefined
    • ---
    • ---

      Boundary timer will map a variable so it can be use as parameter in the work item.

       
      Boundary events a extending from tCatchEvent 

       

      <xsd:element name="boundaryEvent" type="tBoundaryEvent" substitutionGroup="flowElement"/>
      	<xsd:complexType name="tBoundaryEvent">
      		<xsd:complexContent>
      			<xsd:extension base="tCatchEvent">
      				<xsd:attribute name="cancelActivity" type="xsd:boolean" default="true"/>
      				<xsd:attribute name="attachedToRef" type="xsd:QName" use="required"/>
      			</xsd:extension>
      		</xsd:complexContent>
      	</xsd:complexType>	
      

      which is based on

      	<xsd:element name="catchEvent" type="tCatchEvent"/>
      	<xsd:complexType name="tCatchEvent" abstract="true">
      		<xsd:complexContent>
      			<xsd:extension base="tEvent">
      				<xsd:sequence>
      					<xsd:element ref="dataOutput" minOccurs="0" maxOccurs="unbounded"/>
      					<xsd:element ref="dataOutputAssociation" minOccurs="0" maxOccurs="unbounded"/>
      					<xsd:element ref="outputSet" minOccurs="0" maxOccurs="1"/>
      					<xsd:element ref="eventDefinition" minOccurs="0" maxOccurs="unbounded"/>
      					<xsd:element name="eventDefinitionRef" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
      				</xsd:sequence>
      				<xsd:attribute name="parallelMultiple" type="xsd:boolean" default="false"/>
      			</xsd:extension>
      		</xsd:complexContent>
      	</xsd:complexType>
      

      an example would be something like

          <boundaryEvent id="_18E79477-0069-4053-9268-D85E71DBF747" attachedToRef="_7C773C0B-7060-4E72-A6FD-7D2D011343D3">
            <outgoing>_0127EBBF-C8C1-444A-9951-6B523EDF153C</outgoing>
            <timerEventDefinition id="_UHoeYQhtEeu8Ye6V21rj3A">
              <timeCycle xsi:type="bpmn2:tFormalExpression" id="_UHoeYghtEeu8Ye6V21rj3A" language="none">R/PT2S<timeCycle>
            </timerEventDefinition>
            <dataOutput id="node_instance_ref_output" name="nodeInstance" />
            <outputSet>
              <dataOutputRefs>node_instance_ref_output</dataOutputRefs>
            </outputSet>
            <dataOutputAssociation>
              <sourceRef>node_instance_ref_output</sourceRef>
              <targetRef>nodeInstance_ref_process</targetRef>
            </dataOutputAssociation>
          </boundaryEvent>
      

      where <dataOutput id="node_instance_ref_output" name="nodeInstance" /> should be automatically populated once is created.
      Defining the output set will make available to the UI automatically (so there is no prior knowledge required about is existance.

      the outputSet can be
      nodeInstance (the node instance triggering the event. compensation is not throwing this)
      signal: name of the signal (always available)
      event: always available. Escalation is not having this output.
      workItem: only if there is nodeInstance and it is work item or user task.

      more info in BoundaryEventWithOutputSetPersistenceTest at jbpm

      this would work for any boundary event

            elguardian@gmail.com Enrique González Martínez (Inactive)
            elguardian@gmail.com Enrique González Martínez (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: