Subject: Re: Petri net to BPEL model transformation > How to find patterns?
From: cknell@xxxxxxxxxx
Date: Sun, 10 Sep 2006 11:38:45 -0400
|
I haven't got the material at hand, so I'll get back to you tomorrow to answer your questions.
--
Charles Knell
cknell@xxxxxxxxxx - email
-----Original Message-----
From: stgn@xxxxxxx
Sent: Sun, 10 Sep 2006 16:56:25 +0200
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: Re: Petri net to BPEL model transformation > How to find patterns?
I considered a multi-stop process as well.
1. In answer to your question: in a Petri net, you create a <flow> element when a <transition> element connects with two (it could be more, but for simplicity's sake let's just take two) <place> elements. In your XML code
<node from="" to="11 21" node-id="2"/>
the "to" attribute with two entries would indicate the start of a <flow> element and in your XML code
<node from="13 21" to="" node-id="3"/>
the "from" attribute with two entries would indicate the end of a <flow> element.
Of course one would have to make sure that the closing </flow> tag belongs to the right opening <flow> tag, but let's just ignore that for the moment to make it easier.
2. I can make the input file look as shown in your example.
I have a few questions considering your process though.
What do the XLST snippets look like which do the those two transformations of yours?
How do I figure out that node-ids 11 and 13 go into one <sequence> element and that node-id 21 goes into another sequence element? The node-ids may have been given in random order.
When I have this line
<node from="13 21" to="" node-id="3"/>
how do I find out that 13 and 21 are to pieces of information and not just a string saying "13 21".
Thank you for all the input you've given me so far!
Regards
Sagi
At 06.09.2006 10:37 -0400, you wrote:
>I've been noodling around with this the past day and I've made some
>progress. You said you may be able to adjust your input file, so I've
>taken the liberty of doing so. If your work-flow tool can't do this,
>it would be easy to produce this file from your original with an XSLT
>transformation. I have in mind a multi-step process in any case, so
>that wouldn't be a stumbling block in the solution.
>
><?xml version="1.0"?>
><petrinet>
> <arc>
> <from node-type="P">1</from>
> <to node-type="T">2</to>
> </arc>
> <arc>
> <from node-type="T">2</from>
> <to node-type="P">10</to>
> </arc>
> .....
></petrinet>
>
>My first step was to transform the <arc> elements to <node> elements.
>The output looks like this.
>
><?xml version="1.0" encoding="UTF-8"?>
><node-net>
> <node from="" to="11 21" node-id="2"/>
> <node from="2" to="13" node-id="11"/>
> <node from="11" to="3" node-id="13"/>
> <node from="2" to="3" node-id="21"/>
> <node from="13" to="" node-id="3"/>
> <node from="21" to="" node-id="3"/>
></node-net>
>
>As you will see, the first node in the net has no value in its "from"
>attribute and the last node in the net has no value in its "to"
>attribute.
>
>The next step merges the two end nodes.
>
><?xml version="1.0" encoding="UTF-8"?>
><node-net>
> <node from="" to="11 21" node-id="2"/>
> <node from="2" to="13" node-id="11"/>
> <node from="11" to="3" node-id="13"/>
> <node from="2" to="3" node-id="21"/>
> <node from="13 21" to="" node-id="3"/>
></node-net>
>
>So it seems pretty clear that the node with no value in the "from"
>will produce the first <invoke> element and the the node with no value
>in the "to" attribute will produce the last <invoke> element.
>
>How do I know when to create a "flow" element?
>--
>Charles Knell
>cknell@xxxxxxxxxx - email
>
>
>
>-----Original Message-----
>From: stgn@xxxxxxx
>Sent: Mon, 04 Sep 2006 17:45:30 +0200
>To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
>Subject: Re: Petri net to BPEL model transformation > How to
>find patterns?
>
>Thanks for both your postings.
>
>I'll have a look the the book Professional XSL. It might take a few
>days until the library has it ready.
>
>Thanks for the hint. Unfortunatelly, I haven't found any work by
>Michael Corning on PNML neither in Google, Google Scholar, Yahoo nor
>CiteSeer. However, a few webpages mention PNML with reference to his
>book Web Service Faceplates from Wrox.
>
>Regards
>Sagi
>
>
>
>
>At 04.09.2006 15:22 +0200, you wrote:
>>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>
|