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

Subject: Re: [xsl] Petri net to BPEL model transformation > How to find patterns?
From: "bryan rasmussen" <rasmussen.bryan@xxxxxxxxx>
Date: Mon, 4 Sep 2006 15:22:54 +0200
just checked the page closer, is old and out of date. I suppose if you
can find the book used somewhere it can be useful or if you can find
Corning's work via google on PNML.

Cheers,
Bryan

On 9/4/06, bryan rasmussen <rasmussen.bryan@xxxxxxxxx> wrote:
The book Professional XSL from Wrox had some transforms for working
with Petri Nets, can't remember exactly what was being done though.

Michael Corning, whose transforms were used, has a homepage here (not
sure about current status of it)
http://authors.aspalliance.com/mcorning/ where some mention is made of
the petri nets stuff.

Cheers,
Bryan

On 9/4/06, stgn@xxxxxxx <stgn@xxxxxxx> wrote:
> 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>

Current Thread