[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [mdt-bpmn2.dev] Question about BPMNPlanes

Hi Bob,
I was one of the authors of chapter 12 of the BPMN spec. We decided to use the draft version of OMC Diagram Interchange as basis. We have also decided to preserve only the snapshot look and no "tool smart" (see introduction of chapter 12). As a consequence we also decided to remove any containment/hierarchy from the diagram spec. I know that Graphity is different in this aspect, but we have been sure, that a flat representation (like in Powerpoint) causes less troubles  on interchange. It was always clear that tools must recreate shape hierarchies into there internal representation using the Semantic model's hierarchies - and vice versa flatten them on export.
The fact that BPMNDiagram and BPMNPlane are two objects comes from DI: A diagram does not have a link to a semantic object. I don't remember why BPMNPlanes can be nested into BPMNPlanes. Anyway, a BPMNPlane is intend as a depiction of a whole Process, Collaboration etc. Quoting from the spec:

  1. A BPMNPlane specializes DI::Plane and redefines its model element reference to be of type (BPMN) BaseElement. A BPMNPlane can only reference a BaseElement of the types: Process, SubProcess, AdHocSubProcess, Transaction, Collaboration, Choreography or SubChoreography.


  1. (sorry, I was writing nonsense in the last mail.)
  2. I would strongly recommend to use the same format (with a single plane) as the examples, as this strongly increases the likelyhood that your diagrams can be understood by other tools.

Best regards,
 Reiner.

Am 22.08.2012 um 23:04 schrieb "Bob Brodt" <bbrodt@xxxxxxxxxx>:

Hi Reiner,

All of the examples only use a single BPMNPlane which always contains all of the BPMNShapes and BPMNEdges, and is always the root of the BPMNDiagram element, so these are not much help. If the only valid use of a BPMNPlane is as the one and only child of a BPMNDiagram, then this element type does not make much sense to me; why not just get rid of it and use a BPMNDiagram instead?

I was able to add a BPMNPlane as a child of another BPMNPlane, but this serializes using the xsi:type spec for DiagramElement, so...

All this leads me to believe that the BPMN 2.0 specification is half baked and about as clear as mud.

Thanks anyway,
Bob


Hi Bob,
as mentioned Planes can't be children of shapes.
You could consult the official samples at http://www.omg.org/spec/BPMN/2.0/examples/ZIP/ to see how it is intended to be done. I tested all of them and they load successfully.
 E.g http://www.omg.org/spec/BPMN/2.0/examples/ZIP/Diagram%20Interchange/Examples%20-%20DI%20-%20Lanes%20and%20Nested%20Lanes.bpmn uses a single plane and all lanes/shapes as siblings. I don't currently remember under which circumstances multiple planes are recommended. 

Regards,
 Reiner.

Am 22.08.2012 um 19:15 schrieb "Bob Brodt" <bbrodt@xxxxxxxxxx>:

As a follow-on test, I also tried this:

    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="process_3">

      ...

      <bpmndi:BPMNShape id="BPMNShape_Lane_1" bpmnElement="Lane_1" isHorizontal="true">
        <dc:Bounds height="100.0" width="600.0" x="140.0" y="252.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNPlane id="BPMNPlane_BPMNShape_Lane_1">
        <bpmndi:BPMNShape id="BPMNShape_Task_1" bpmnElement="Task_1">
          <dc:Bounds height="50.0" width="110.0" x="380.0" y="278.0"/>
        </bpmndi:BPMNShape>
      </
bpmndi:BPMNPlane>

(a BPMNPlane as a sibling of the Lane shape) which does not work, but this does work:

      <bpmndi:BPMNShape id="BPMNShape_Lane_1" bpmnElement="Lane_1" isHorizontal="true">
        <dc:Bounds height="100.0" width="600.0" x="140.0" y="252.0"/>
      </bpmndi:BPMNShape>
      <di:DiagramElement xsi:type="bpmndi:BPMNPlane" id="BPMNPlane_BPMNShape_Lane_1">
        <bpmndi:BPMNShape id="BPMNShape_Task_1" bpmnElement="Task_1">
          <dc:Bounds height="50.0" width="110.0" x="380.0" y="278.0"/>
        </bpmndi:BPMNShape>
      </
di:DiagramElement>

I then tried using the xsi:type element in the original like so:

      <bpmndi:BPMNShape id="BPMNShape_Lane_1" bpmnElement="Lane_1" isHorizontal="true">
        <dc:Bounds height="100.0" width="600.0" x="140.0" y="252.0"/>
        <di:DiagramElement xsi:type="bpmndi:BPMNPlane" id="BPMNPlane_BPMNShape_Lane_1">
          <bpmndi:BPMNShape id="BPMNShape_Task_1" bpmnElement="Task_1">
            <dc:Bounds height="50.0" width="110.0" x="380.0" y="278.0"/>
          </bpmndi:BPMNShape>
        </
di:DiagramElement>
      </bpmndi:BPMNShape>

and this also did not work.


Hi Reiner, thanks for the quick reply! I have posted another observation on the eclipse forum about this problem, see here:

http://www.eclipse.org/forums/index.php/m/903216/#msg_903216

The complete BPMN2 doc is included here:

<?xml version="1.0" encoding="UTF-8"?>
<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1" targetNamespace="http://sample.bpmn2.org/bpmn2/sample/process">
  <bpmn2:process id="process_3" name="Default Process">
    <bpmn2:laneSet id="LaneSet_1" name="Lane Set 1">
      <bpmn2:lane id="Lane_1" name="Lane 1">
        <bpmn2:flowNodeRef>StartEvent_1</bpmn2:flowNodeRef>
        <bpmn2:flowNodeRef>EndEvent_1</bpmn2:flowNodeRef>
        <bpmn2:flowNodeRef>Task_1</bpmn2:flowNodeRef>
      </bpmn2:lane>
    </bpmn2:laneSet>
    <bpmn2:startEvent id="StartEvent_1">
      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
    </bpmn2:startEvent>
    <bpmn2:endEvent id="EndEvent_1">
      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
    </bpmn2:endEvent>
    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="StartEvent_1" targetRef="Task_1"/>
    <bpmn2:task id="Task_1" name="Task 1">
      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
    </bpmn2:task>
    <bpmn2:sequenceFlow id="SequenceFlow_1" sourceRef="Task_1" targetRef="EndEvent_1"/>
  </bpmn2:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_1" name="Default Process Diagram">
    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="process_3">
      <bpmndi:BPMNShape id="BPMNShape_1" bpmnElement="StartEvent_1">
        <dc:Bounds height="36.0" width="36.0" x="190.0" y="285.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="BPMNShape_2" bpmnElement="EndEvent_1">
        <dc:Bounds height="36.0" width="36.0" x="640.0" y="285.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="BPMNShape_Task_1" targetElement="BPMNShape_2">
        <di:waypoint xsi:type="dc:Point" x="490.0" y="303.0"/>
        <di:waypoint xsi:type="dc:Point" x="640.0" y="303.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="BPMNShape_Lane_1" bpmnElement="Lane_1" isHorizontal="true">
        <dc:Bounds height="100.0" width="600.0" x="140.0" y="252.0"/>
        <bpmndi:BPMNPlane>
          <bpmndi:BPMNShape id="BPMNShape_Task_1" bpmnElement="Task_1">
            <dc:Bounds height="50.0" width="110.0" x="380.0" y="278.0"/>
          </bpmndi:BPMNShape>
        </bpmndi:BPMNPlane>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="BPMNShape_1" targetElement="BPMNShape_Task_1">
        <di:waypoint xsi:type="dc:Point" x="226.0" y="303.0"/>
        <di:waypoint xsi:type="dc:Point" x="380.0" y="303.0"/>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn2:definitions>

This is simply a Process with a single Lane, Start/End events and a Task; the Task should be contained in BPMNPlane which is a child of the Lane's BPMNShape.
The whole thing looks like this:

<1345654858910>

Thanks again for your help!
Bob



Hi Bob,
 yes, this is allowed and I have several examples that worked.
 Could you please provide the full sample?
 
 Thanks,
  Reiner.
 
 
 -----Original Message-----
 From: mdt-bpmn2.dev-bounces@xxxxxxxxxxx
 [mailto:mdt-bpmn2.dev-bounces@xxxxxxxxxxx] On Behalf Of Bob Brodt
 Sent: Mittwoch, 22. August 2012 16:25
 To: BPMN2 Developers Mailing List
 Subject: [mdt-bpmn2.dev] Question about BPMNPlanes
 
 Hi all,
 
 I'm not sure I understand the relationship of BPMNPlane elements to
 other DI model elements. It seems to me that you should be able to
 have containment of a BPMNPlane in a BPMNShape, something like this:
 
   <bpmndi:BPMNDiagram id="BPMNDiagram_1" name="Default Process
   Diagram">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="process_1">
       <bpmndi:BPMNShape id="BPMNShape_1" bpmnElement="StartEvent_1">
         <dc:Bounds height="36.0" width="36.0" x="100.0" y="100.0"/>
 
         <bpmndi:BPMNPlane>
           <bpmndi:BPMNShape id="BPMNShape_2"
           bpmnElement="EndEvent_1">
             <dc:Bounds height="36.0" width="36.0" x="500.0"
             y="100.0"/>
           </bpmndi:BPMNShape>
          </bpmndi:BPMNPlane>
        
       </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 
 
 When I try this, the XML parser tells me that "Feature 'BPMNPlane'
 not found." What am I missing here? Is this even allowed?
 
 Thanks!
 ________________________
 Robert ("Bob") Brodt
 Senior Software Engineer
 JBoss by Red Hat
 
 _______________________________________________
 mdt-bpmn2.dev mailing list
 mdt-bpmn2.dev@xxxxxxxxxxx
 https://dev.eclipse.org/mailman/listinfo/mdt-bpmn2.dev
 _______________________________________________
 mdt-bpmn2.dev mailing list
 mdt-bpmn2.dev@xxxxxxxxxxx
 https://dev.eclipse.org/mailman/listinfo/mdt-bpmn2.dev
 


_______________________________________________
mdt-bpmn2.dev mailing list
mdt-bpmn2.dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/mdt-bpmn2.dev

_______________________________________________
mdt-bpmn2.dev mailing list
mdt-bpmn2.dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/mdt-bpmn2.dev

_______________________________________________
mdt-bpmn2.dev mailing list
mdt-bpmn2.dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/mdt-bpmn2.dev

_______________________________________________
mdt-bpmn2.dev mailing list
mdt-bpmn2.dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/mdt-bpmn2.dev