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

Subject: [xsl] Petri net to BPEL model transformation > How to find patterns?
From: stgn@xxxxxxx
Date: Mon, 04 Sep 2006 09:38:03 +0200
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