xsl-list
[Top] [All Lists]

RE: [xsl] Petri net to BPEL model transformation > How to find patterns?

2006-09-04 08:09:29
Thank you for your feedback.

1. I have drawn two diagrams which illustrate the relationship there are.

The first diagram illustrates the desired input and output document. The input 
document is generated by e workflow modeling tool. 
http://www.myjavaserver.com/~stgn/pn2bpel/input_and_output.gif

The second diagram illustrates the relationships. I hope this is what you asked 
for.
http://www.myjavaserver.com/~stgn/pn2bpel/relationships.gif


2. Not quite. One <place> element may be connected to several <transitions> 
elements via <arc> elements.
The source model is a Petri net graph consisting of places and transitions 
which are connected through arcs. The graph is bipartite meaning that places 
may only connect to transitions and transitions may only connect to places. 
However, one place may connect to several transitions and one transition may 
connect to several places (as you can see in the example in 
input_and_output.gif).


3. That's right, each transition (i.e. a activity in a workflow) gets 
transformed into an <invoke> element. For a place, however, there is no 
corresponding concept in the target BPEL model, so we just don't transform them.

I tried to describe the relationships with the two diagramms given above.

I assume there is still information missing that one needs to do such a 
transformation. Please feel free to ask, I'll try to provide the necessary 
information. I'd also like to mention that perhaps the transformation isn't 
feasible with the current XML input document (as given in 
input_and_output.gif). Since I'm new to XSLT I can't jugde whether this 
particular transformation is possible at all. In case it is not, I am able to 
slightly adjust the input model (as far as the workflow modeling tool allows 
it) to make the transformation possible or easier. 

Regards
Sagi




At 04.09.2006 09:09 -0400, you wrote:
In order to transform one document to another, it is first necessary 
to understand how the nodes in the original document relate to the 
nodes in the output document. Nothing in your model documents suggests 
to me exactly what those relationships might be.

It appears that between pairs of <place> elements there is exactly one 
<transition> element ( P---T---P) judging by comparing the @id values 
of the <place> and <transition> elements to the values of the <from> 
and <to> children of the <arc> elments.

Looking at your desired output, I hypothesize that each <invoke> 
element is derived from a <transition> element, but beyond that, I'm 
at a loss to describe any other relationship to the source document.

Please describe what the relationships are between elements in the 
souce document and elements in the output document.


Charles Knell
cknell(_at_)onebox(_dot_)com - email



-----Original Message-----
From:     stgn(_at_)gmx(_dot_)net
Sent:     Mon, 04 Sep 2006 09:38:03 +0200
To:       xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject:  [xsl] Petri net to BPEL model transformation > How to find 
patterns?

Hello

How can I find/describe patterns in a Petri net graph with XSLT?

For instance a sequence, a concurrency, AND-split, AND-join, OR-split,
OR-join or a while loop.

Below you see a Petri net model (source model) which I would like to
transform into a BPEL model (target model).

Can you tell me what the corresponding XSLT code would look like?

My problem is to find patterns in a graph representation (Petri net)
and to transform them into a tree representation (BPEL). It might be
that such a transformation is not possible with the Petri net example
given below or that the Petri net XML would need further information
(for example an attribute attached to a transition saying "this is the
start of an AND-split").

I am grateful for any hints. If you need any further information to
solve the problem, please let me know.

Regards
Sagi

--------------------
source model
--------------------
<?xml version="1.0"?>
<petrinet>

      <!-- start of Petri net -->
      <place id="1"></place>
      <transition id="2"></transition>

      <!-- upper flow of concurrency -->
      <place id="10"></place>
      <transition id="11"></transition>
      <place id="12"></place>
      <transition id="13"></transition>
      <place id="14"></place>

      <!-- lower flow of concurrency -->
      <place id="20"></place>
      <transition id="21"></transition>
      <place id="22"></place>

      <!-- end of Petri net -->
      <transition id="3"></transition>
      <place id="4"></place>

      <!-- arcs connecting places and transitions -->
      <arc>
              <from>1</from>
              <to>2</to>
      </arc>
      <!-- next 2 arcs define an AND-split -->
      <arc>
              <from>2</from>
              <to>10</to>
      </arc>
      <arc>
              <from>2</from>
              <to>20</to>
      </arc>
      <!-- upper flow of concurrency -->
      <arc>
              <from>10</from>
              <to>11</to>
      </arc>
      <arc>
              <from>11</from>
              <to>12</to>
      </arc>
      <arc>
              <from>12</from>
              <to>13</to>
      </arc>
      <arc>
              <from>13</from>
              <to>14</to>
      </arc>
      <!-- lower flow of concurrency -->
      <arc>
              <from>20</from>
              <to>21</to>
      </arc>
      <arc>
              <from>21</from>
              <to>22</to>
      </arc>

      <!-- next 2 arcs define an AND-join -->
      <arc>
              <from>14</from>
              <to>3</to>
      </arc>
      <arc>
              <from>22</from>
              <to>3</to>
      </arc>
      <arc>
              <from>3</from>
              <to>4</to>
      </arc>
</petrinet>



--------------------
target model
--------------------
<?xml version="1.0"?>

<process>
      <sequence>
              <invoke name="2"/>
              <flow>
                      <!-- upper flow of concurrency -->
                      <sequence>
                              <invoke name="11"/>
                              <invoke name="13"/>
                      </sequence>
                      <!-- lower flow of concurrency -->
                      <sequence>
                              <invoke name="21"/>
                      </sequence>
              </flow>
              <invoke name="3"/>
      </sequence>
</process>


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--