Skip to main content

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

Hi Bob,

Thanks for the mail. I didn’t feel offended – I was just remembering step-by-step what we did in the standard and what was the solution. And as this is quite a while ago I was first thinking into the wrong direction. Later I remembered the details.

 

Your mentioned PPT was as far as I remember a relatively early proposal from Denis (who was the head of the BPMNDI working group). I assume you refer to slide 19, where planes are used as bounds for Lanes and Pools.

I remember that we have abandoned this approach, because of some complex edge cases. E.g. it is allows to have a matrix of horizontal and vertical lanes and Activities belonging to a row and a column lane.  In such an example a containment model does not work.

 

The drill-down that you mentioned is possible having multiple diagrams.

You could e.g. store two diagrams in you BPMN file, one with a subprocess expanded, and one with a subprocess collapsed. Or you could have a third diagram containing only the subprocess. The tool could navigate on double-click from one diagram to another.

 

Best regards,

Reiner.

 

From: mdt-bpmn2.dev-bounces@xxxxxxxxxxx [mailto:mdt-bpmn2.dev-bounces@xxxxxxxxxxx] On Behalf Of Bob Brodt
Sent: Donnerstag, 23. August 2012 15:18
To: BPMN2 Developers Mailing List
Subject: Re: [mdt-bpmn2.dev] Question about BPMNPlanes

 

Thank you for the clarification Reiner - this does help a lot.

First, let me say that I understand how difficult it is to define a standard that has to incorporate requirements from many different sources and must be "all things to all people", and I feel I must apologize for my flippant remark. I was tired and frustrated, and certainly did not mean to offend anyone.

As you probably know, I'm currently working on the eclipse BPMN2 Modeler project (http://eclipse.org/bpmn2-modeler), and my original motivation for using nested BPMNPlane objects was to allow the user to split a large business process into smaller, more manageable pieces, and have each of those pieces displayed in a full-sized editor window. So for example, since there can be SubProcesses nested inside other SubProcesses, I wanted to provide the ability to "drill down" and display the internals of each SubProcess on a separate tab of a multipage editor. I guess I was expecting to see something like the proposal here:

http://www.omgwiki.org/bpmn2.0-ftf/lib/exe/fetch.php?id=public%3Asub-teams%3Adiagram_interchange&cache=cache&media=public:sub-teams:bpmn_di_schema_and_meta-model_proposal.ppt

But now that I understand the reasoning behind a flat representation for DI, I think can work within those constraints.

Thanks again for your help.

Best Regards,
Bob


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


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

 


Back to the top