JBoss JBPM SVN: r2183 - in jbpm4/pvm/trunk/modules/manual/src/main: docbook and 1 other directory.
by do-not-reply@jboss.org
Author: tom.baeyens(a)jboss.com
Date: 2008-09-12 03:04:32 -0400 (Fri, 12 Sep 2008)
New Revision: 2183
Added:
jbpm4/pvm/trunk/modules/manual/src/main/diagrams/images.ppt
Removed:
jbpm4/pvm/trunk/modules/manual/src/main/diagrams/models.uml
jbpm4/pvm/trunk/modules/manual/src/main/docbook/images.ppt
Log:
Copied: jbpm4/pvm/trunk/modules/manual/src/main/diagrams/images.ppt (from rev 2182, jbpm4/pvm/trunk/modules/manual/src/main/docbook/images.ppt)
===================================================================
(Binary files differ)
Deleted: jbpm4/pvm/trunk/modules/manual/src/main/diagrams/models.uml
===================================================================
--- jbpm4/pvm/trunk/modules/manual/src/main/diagrams/models.uml 2008-09-11 22:59:00 UTC (rev 2182)
+++ jbpm4/pvm/trunk/modules/manual/src/main/diagrams/models.uml 2008-09-12 07:04:32 UTC (rev 2183)
@@ -1,510 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<XPD:PROJECT xmlns:XPD="http://www.staruml.com" version="1">
-<XPD:HEADER>
-<XPD:SUBUNITS>
-</XPD:SUBUNITS>
-<XPD:PROFILES>
-<XPD:PROFILE>ERD</XPD:PROFILE>
-<XPD:PROFILE>UMLStandard</XPD:PROFILE>
-</XPD:PROFILES>
-</XPD:HEADER>
-<XPD:BODY>
-<XPD:OBJ name="DocumentElement" type="UMLProject" guid="CqZZuWhrLkmNpzJ7OuF7+wAA">
-<XPD:ATTR name="Title" type="string">Untitled</XPD:ATTR>
-<XPD:ATTR name="#OwnedElements" type="integer">5</XPD:ATTR>
-<XPD:OBJ name="OwnedElements[0]" type="UMLModel" guid="UJwm4YTvgEyPxr4mzKht+wAA">
-<XPD:ATTR name="Name" type="string">Use Case Model</XPD:ATTR>
-<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
-<XPD:ATTR name="StereotypeName" type="string">useCaseModel</XPD:ATTR>
-<XPD:REF name="Namespace">CqZZuWhrLkmNpzJ7OuF7+wAA</XPD:REF>
-<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
-<XPD:OBJ name="OwnedDiagrams[0]" type="UMLUseCaseDiagram" guid="qRhS+Vsd0Uah/vdlnU+zbgAA">
-<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
-<XPD:REF name="DiagramOwner">UJwm4YTvgEyPxr4mzKht+wAA</XPD:REF>
-<XPD:OBJ name="DiagramView" type="UMLUseCaseDiagramView" guid="d21DKYayK02RKOCo1bk1SAAA">
-<XPD:REF name="Diagram">qRhS+Vsd0Uah/vdlnU+zbgAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="OwnedElements[1]" type="UMLModel" guid="rSdW7/9V2k2u8Xmz/5+tygAA">
-<XPD:ATTR name="Name" type="string">Analysis Model</XPD:ATTR>
-<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
-<XPD:ATTR name="StereotypeName" type="string">analysisModel</XPD:ATTR>
-<XPD:REF name="Namespace">CqZZuWhrLkmNpzJ7OuF7+wAA</XPD:REF>
-<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
-<XPD:OBJ name="OwnedDiagrams[0]" type="UMLClassDiagram" guid="K2BzGxUNGku96Pi72q54rQAA">
-<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
-<XPD:ATTR name="DefaultDiagram" type="boolean">True</XPD:ATTR>
-<XPD:ATTR name="DiagramType" type="string">RobustnessDiagram</XPD:ATTR>
-<XPD:REF name="DiagramOwner">rSdW7/9V2k2u8Xmz/5+tygAA</XPD:REF>
-<XPD:OBJ name="DiagramView" type="UMLClassDiagramView" guid="YyjBv0RAXEqI2ApJXDLpUgAA">
-<XPD:REF name="Diagram">K2BzGxUNGku96Pi72q54rQAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="OwnedElements[2]" type="UMLModel" guid="sIvJXYGlbk2j4pPNuBXO1wAA">
-<XPD:ATTR name="Name" type="string">Design Model</XPD:ATTR>
-<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
-<XPD:ATTR name="StereotypeName" type="string">designModel</XPD:ATTR>
-<XPD:REF name="Namespace">CqZZuWhrLkmNpzJ7OuF7+wAA</XPD:REF>
-<XPD:ATTR name="#Behaviors" type="integer">1</XPD:ATTR>
-<XPD:OBJ name="Behaviors[0]" type="UMLStateMachine" guid="2W/W73QAtUCuZoDkBX+gbgAA">
-<XPD:ATTR name="Name" type="string">StateMachine1</XPD:ATTR>
-<XPD:REF name="Context">sIvJXYGlbk2j4pPNuBXO1wAA</XPD:REF>
-<XPD:OBJ name="Top" type="UMLCompositeState" guid="wY1mdKzXaUqvicJGMDpj4wAA">
-<XPD:ATTR name="Name" type="string">TOP</XPD:ATTR>
-<XPD:REF name="StateMachine">2W/W73QAtUCuZoDkBX+gbgAA</XPD:REF>
-<XPD:ATTR name="#Subvertices" type="integer">6</XPD:ATTR>
-<XPD:OBJ name="Subvertices[0]" type="UMLCompositeState" guid="zvyhXKdIWkqTrZcJ0C04BwAA">
-<XPD:ATTR name="Name" type="string">a</XPD:ATTR>
-<XPD:REF name="ContainerState">wY1mdKzXaUqvicJGMDpj4wAA</XPD:REF>
-<XPD:ATTR name="#Views" type="integer">2</XPD:ATTR>
-<XPD:REF name="Views[0]">letnw6F3OUS2RWSdNO0bMwAA</XPD:REF>
-<XPD:REF name="Views[1]">eCKyo/k7+E6PcHeEAabShwAA</XPD:REF>
-<XPD:ATTR name="#Outgoings" type="integer">1</XPD:ATTR>
-<XPD:REF name="Outgoings[0]">KrZ9uAy1C0CsTaJeQui0ogAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="Subvertices[1]" type="UMLCompositeState" guid="afo3cj3EuEWbjC6FplnN0gAA">
-<XPD:ATTR name="Name" type="string">b</XPD:ATTR>
-<XPD:REF name="ContainerState">wY1mdKzXaUqvicJGMDpj4wAA</XPD:REF>
-<XPD:ATTR name="#Views" type="integer">2</XPD:ATTR>
-<XPD:REF name="Views[0]">yNOj7kqoI06JLWNiHupfwwAA</XPD:REF>
-<XPD:REF name="Views[1]">T8PPztGi5Uah0NQm6CXVrQAA</XPD:REF>
-<XPD:ATTR name="#Outgoings" type="integer">1</XPD:ATTR>
-<XPD:REF name="Outgoings[0]">0MQBvgJrvE2uEDOwqnAC3wAA</XPD:REF>
-<XPD:ATTR name="#Incomings" type="integer">1</XPD:ATTR>
-<XPD:REF name="Incomings[0]">KrZ9uAy1C0CsTaJeQui0ogAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="Subvertices[2]" type="UMLCompositeState" guid="sCyseyvB6EOB62kaadmH8gAA">
-<XPD:ATTR name="Name" type="string">c</XPD:ATTR>
-<XPD:REF name="ContainerState">wY1mdKzXaUqvicJGMDpj4wAA</XPD:REF>
-<XPD:ATTR name="#Views" type="integer">2</XPD:ATTR>
-<XPD:REF name="Views[0]">ZDC616UMkkWB5BXaxIdHRQAA</XPD:REF>
-<XPD:REF name="Views[1]">o2AcbPYQiEupi4BMsz/TjQAA</XPD:REF>
-<XPD:ATTR name="#Outgoings" type="integer">1</XPD:ATTR>
-<XPD:REF name="Outgoings[0]">j4MdjoRL1EOIDrg5aSI/HwAA</XPD:REF>
-<XPD:ATTR name="#Incomings" type="integer">1</XPD:ATTR>
-<XPD:REF name="Incomings[0]">0MQBvgJrvE2uEDOwqnAC3wAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="Subvertices[3]" type="UMLCompositeState" guid="H8GhcGV/TkaibBqydxTvDgAA">
-<XPD:ATTR name="Name" type="string">d</XPD:ATTR>
-<XPD:REF name="ContainerState">wY1mdKzXaUqvicJGMDpj4wAA</XPD:REF>
-<XPD:ATTR name="#Views" type="integer">2</XPD:ATTR>
-<XPD:REF name="Views[0]">b180nZipz0en9UlKRxFklgAA</XPD:REF>
-<XPD:REF name="Views[1]">5RxJFwFceUiGpCmguPU0wQAA</XPD:REF>
-<XPD:ATTR name="#Outgoings" type="integer">1</XPD:ATTR>
-<XPD:REF name="Outgoings[0]">D9bSgkh+fUm1grCxQWJJKAAA</XPD:REF>
-<XPD:ATTR name="#Incomings" type="integer">1</XPD:ATTR>
-<XPD:REF name="Incomings[0]">j4MdjoRL1EOIDrg5aSI/HwAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="Subvertices[4]" type="UMLCompositeState" guid="icDh0TlK80KI+o6pI13edgAA">
-<XPD:ATTR name="Name" type="string">e</XPD:ATTR>
-<XPD:REF name="ContainerState">wY1mdKzXaUqvicJGMDpj4wAA</XPD:REF>
-<XPD:ATTR name="#Views" type="integer">2</XPD:ATTR>
-<XPD:REF name="Views[0]">Ncvmnk6K9UK3GBilp5G7PQAA</XPD:REF>
-<XPD:REF name="Views[1]">jFLl/IDR5UCgoI2CpvwvCAAA</XPD:REF>
-<XPD:ATTR name="#Outgoings" type="integer">1</XPD:ATTR>
-<XPD:REF name="Outgoings[0]">HjMT10ghIUK1Egs9AHFyOgAA</XPD:REF>
-<XPD:ATTR name="#Incomings" type="integer">1</XPD:ATTR>
-<XPD:REF name="Incomings[0]">D9bSgkh+fUm1grCxQWJJKAAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="Subvertices[5]" type="UMLCompositeState" guid="linxzpIQOEKLTPrTPkfT6QAA">
-<XPD:ATTR name="Name" type="string">f</XPD:ATTR>
-<XPD:REF name="ContainerState">wY1mdKzXaUqvicJGMDpj4wAA</XPD:REF>
-<XPD:ATTR name="#Views" type="integer">2</XPD:ATTR>
-<XPD:REF name="Views[0]">XEaOENtje06E8S4viEolDQAA</XPD:REF>
-<XPD:REF name="Views[1]">e5CvbMS0rkyvqIYW+inG7AAA</XPD:REF>
-<XPD:ATTR name="#Incomings" type="integer">1</XPD:ATTR>
-<XPD:REF name="Incomings[0]">HjMT10ghIUK1Egs9AHFyOgAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
-<XPD:OBJ name="OwnedDiagrams[0]" type="UMLStatechartDiagram" guid="hR9Fui2I40OnomMUm3XqRAAA">
-<XPD:ATTR name="Name" type="string">basicprocess</XPD:ATTR>
-<XPD:REF name="DiagramOwner">2W/W73QAtUCuZoDkBX+gbgAA</XPD:REF>
-<XPD:OBJ name="DiagramView" type="UMLStatechartDiagramView" guid="BbVN65uLNUqBASfl1iLZtgAA">
-<XPD:REF name="Diagram">hR9Fui2I40OnomMUm3XqRAAA</XPD:REF>
-<XPD:ATTR name="#OwnedViews" type="integer">11</XPD:ATTR>
-<XPD:OBJ name="OwnedViews[0]" type="UMLStateView" guid="letnw6F3OUS2RWSdNO0bMwAA">
-<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
-<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
-<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
-<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
-<XPD:ATTR name="Left" type="integer">32</XPD:ATTR>
-<XPD:ATTR name="Top" type="integer">28</XPD:ATTR>
-<XPD:ATTR name="Width" type="integer">61</XPD:ATTR>
-<XPD:ATTR name="Height" type="integer">40</XPD:ATTR>
-<XPD:ATTR name="ShowProperty" type="boolean">True</XPD:ATTR>
-<XPD:REF name="Model">zvyhXKdIWkqTrZcJ0C04BwAA</XPD:REF>
-<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="mheKx6MY4EC1tT+X4+sfPgAA">
-<XPD:OBJ name="NameLabel" type="LabelView" guid="t0iEgvb1JEuT/swnntVgDwAA">
-<XPD:ATTR name="Text" type="string">a</XPD:ATTR>
-</XPD:OBJ>
-<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="ppx0nWWvj06FkDky6m0EPAAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-</XPD:OBJ>
-<XPD:OBJ name="PropertyLabel" type="LabelView" guid="kI8y+YUz0U6/VQct5pMxywAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="InternalTransitionCompartment" type="UMLInternalTransitionCompartmentView" guid="eCKyo/k7+E6PcHeEAabShwAA">
-<XPD:REF name="Model">zvyhXKdIWkqTrZcJ0C04BwAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="OwnedViews[1]" type="UMLStateView" guid="yNOj7kqoI06JLWNiHupfwwAA">
-<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
-<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
-<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
-<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
-<XPD:ATTR name="Left" type="integer">113</XPD:ATTR>
-<XPD:ATTR name="Top" type="integer">28</XPD:ATTR>
-<XPD:ATTR name="Width" type="integer">60</XPD:ATTR>
-<XPD:ATTR name="Height" type="integer">40</XPD:ATTR>
-<XPD:REF name="Model">afo3cj3EuEWbjC6FplnN0gAA</XPD:REF>
-<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="DJd2dBdjO0q4K0lEPf0MgAAA">
-<XPD:OBJ name="NameLabel" type="LabelView" guid="y3C+n9aY5EW4j0NZWgoZ3QAA">
-<XPD:ATTR name="Text" type="string">b</XPD:ATTR>
-</XPD:OBJ>
-<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="GrN826qnf0KLlTTtmhGpjgAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-</XPD:OBJ>
-<XPD:OBJ name="PropertyLabel" type="LabelView" guid="soSPMSO1sESvnPHsXRF1QQAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="InternalTransitionCompartment" type="UMLInternalTransitionCompartmentView" guid="T8PPztGi5Uah0NQm6CXVrQAA">
-<XPD:REF name="Model">afo3cj3EuEWbjC6FplnN0gAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="OwnedViews[2]" type="UMLStateView" guid="ZDC616UMkkWB5BXaxIdHRQAA">
-<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
-<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
-<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
-<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
-<XPD:ATTR name="Left" type="integer">194</XPD:ATTR>
-<XPD:ATTR name="Top" type="integer">28</XPD:ATTR>
-<XPD:ATTR name="Width" type="integer">63</XPD:ATTR>
-<XPD:ATTR name="Height" type="integer">40</XPD:ATTR>
-<XPD:REF name="Model">sCyseyvB6EOB62kaadmH8gAA</XPD:REF>
-<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="CLXrW4n7fE+0B7sEB23XFQAA">
-<XPD:OBJ name="NameLabel" type="LabelView" guid="GqzaxnTBWE+W+xo63oU3DgAA">
-<XPD:ATTR name="Text" type="string">c</XPD:ATTR>
-</XPD:OBJ>
-<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="MEP5p3O7x0WgikqFx00Q7gAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-</XPD:OBJ>
-<XPD:OBJ name="PropertyLabel" type="LabelView" guid="ofi/ljGNE0OwFFYyCDDPTgAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="InternalTransitionCompartment" type="UMLInternalTransitionCompartmentView" guid="o2AcbPYQiEupi4BMsz/TjQAA">
-<XPD:REF name="Model">sCyseyvB6EOB62kaadmH8gAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="OwnedViews[3]" type="UMLStateView" guid="b180nZipz0en9UlKRxFklgAA">
-<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
-<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
-<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
-<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
-<XPD:ATTR name="Left" type="integer">275</XPD:ATTR>
-<XPD:ATTR name="Top" type="integer">28</XPD:ATTR>
-<XPD:ATTR name="Width" type="integer">60</XPD:ATTR>
-<XPD:ATTR name="Height" type="integer">40</XPD:ATTR>
-<XPD:REF name="Model">H8GhcGV/TkaibBqydxTvDgAA</XPD:REF>
-<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="zvOW/7cBDkCF/gxY6n524AAA">
-<XPD:OBJ name="NameLabel" type="LabelView" guid="A6ZDDHycDUyv5Ddgmf3qcAAA">
-<XPD:ATTR name="Text" type="string">d</XPD:ATTR>
-</XPD:OBJ>
-<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="rDeqW/xZP0ecCKj9xPjksQAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-</XPD:OBJ>
-<XPD:OBJ name="PropertyLabel" type="LabelView" guid="mI+ldkrDbkWOuC90UJqXlQAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="InternalTransitionCompartment" type="UMLInternalTransitionCompartmentView" guid="5RxJFwFceUiGpCmguPU0wQAA">
-<XPD:REF name="Model">H8GhcGV/TkaibBqydxTvDgAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="OwnedViews[4]" type="UMLStateView" guid="Ncvmnk6K9UK3GBilp5G7PQAA">
-<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
-<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
-<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
-<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
-<XPD:ATTR name="Left" type="integer">356</XPD:ATTR>
-<XPD:ATTR name="Top" type="integer">28</XPD:ATTR>
-<XPD:ATTR name="Width" type="integer">60</XPD:ATTR>
-<XPD:ATTR name="Height" type="integer">40</XPD:ATTR>
-<XPD:REF name="Model">icDh0TlK80KI+o6pI13edgAA</XPD:REF>
-<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="xbYRHyJYNEOlrFL2Nqu0OQAA">
-<XPD:OBJ name="NameLabel" type="LabelView" guid="pH0BvzGAHUK9bBizxn+E4gAA">
-<XPD:ATTR name="Text" type="string">e</XPD:ATTR>
-</XPD:OBJ>
-<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="VZK/bnvwckS1H32SfIERrAAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-</XPD:OBJ>
-<XPD:OBJ name="PropertyLabel" type="LabelView" guid="7ySMFkIl2kiYY3CmSPr8iQAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="InternalTransitionCompartment" type="UMLInternalTransitionCompartmentView" guid="jFLl/IDR5UCgoI2CpvwvCAAA">
-<XPD:REF name="Model">icDh0TlK80KI+o6pI13edgAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="OwnedViews[5]" type="UMLStateView" guid="XEaOENtje06E8S4viEolDQAA">
-<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
-<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
-<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
-<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
-<XPD:ATTR name="Left" type="integer">437</XPD:ATTR>
-<XPD:ATTR name="Top" type="integer">28</XPD:ATTR>
-<XPD:ATTR name="Width" type="integer">60</XPD:ATTR>
-<XPD:ATTR name="Height" type="integer">40</XPD:ATTR>
-<XPD:REF name="Model">linxzpIQOEKLTPrTPkfT6QAA</XPD:REF>
-<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="i3YXwse0Pka8LWgajPwFGwAA">
-<XPD:OBJ name="NameLabel" type="LabelView" guid="63CDEskxlk2rpFH7cb2OIQAA">
-<XPD:ATTR name="Text" type="string">f</XPD:ATTR>
-</XPD:OBJ>
-<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="R1PC8mMR+Uq8vxLn50Un6AAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-</XPD:OBJ>
-<XPD:OBJ name="PropertyLabel" type="LabelView" guid="sROgdXNIFUOxLUT5EPjsRQAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="InternalTransitionCompartment" type="UMLInternalTransitionCompartmentView" guid="e5CvbMS0rkyvqIYW+inG7AAA">
-<XPD:REF name="Model">linxzpIQOEKLTPrTPkfT6QAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="OwnedViews[6]" type="UMLTransitionView" guid="882oSRP+tEqhR4wGgboiewAA">
-<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
-<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
-<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
-<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
-<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
-<XPD:ATTR name="Points" type="Points">92,47;113,47</XPD:ATTR>
-<XPD:REF name="Model">KrZ9uAy1C0CsTaJeQui0ogAA</XPD:REF>
-<XPD:REF name="Head">yNOj7kqoI06JLWNiHupfwwAA</XPD:REF>
-<XPD:REF name="Tail">letnw6F3OUS2RWSdNO0bMwAA</XPD:REF>
-<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="YwapOdlagUuMsS3NHYZMkQAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
-<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
-<XPD:REF name="Model">KrZ9uAy1C0CsTaJeQui0ogAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="9eUr5oTj30mB7y1FuBnIhAAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
-<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
-<XPD:REF name="Model">KrZ9uAy1C0CsTaJeQui0ogAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="9YFxGeAbMUGzXiCCAHnRMwAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
-<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
-<XPD:REF name="Model">KrZ9uAy1C0CsTaJeQui0ogAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="OwnedViews[7]" type="UMLTransitionView" guid="GYiNtAOxaEyeiLvhbbRKdAAA">
-<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
-<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
-<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
-<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
-<XPD:ATTR name="Points" type="Points">172,47;194,47</XPD:ATTR>
-<XPD:REF name="Model">0MQBvgJrvE2uEDOwqnAC3wAA</XPD:REF>
-<XPD:REF name="Head">ZDC616UMkkWB5BXaxIdHRQAA</XPD:REF>
-<XPD:REF name="Tail">yNOj7kqoI06JLWNiHupfwwAA</XPD:REF>
-<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="ntwuGJTXWkanxEx4/z5vRwAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
-<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
-<XPD:REF name="Model">0MQBvgJrvE2uEDOwqnAC3wAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="4MCFAa14W0mHIPVaXYPPIQAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
-<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
-<XPD:REF name="Model">0MQBvgJrvE2uEDOwqnAC3wAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="Tt/g5fQt7keRkrRT1Tp4VAAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
-<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
-<XPD:REF name="Model">0MQBvgJrvE2uEDOwqnAC3wAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="OwnedViews[8]" type="UMLTransitionView" guid="NujPAlkbt0iiPtBxFQc8iAAA">
-<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
-<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
-<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
-<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
-<XPD:ATTR name="Points" type="Points">256,47;275,47</XPD:ATTR>
-<XPD:REF name="Model">j4MdjoRL1EOIDrg5aSI/HwAA</XPD:REF>
-<XPD:REF name="Head">b180nZipz0en9UlKRxFklgAA</XPD:REF>
-<XPD:REF name="Tail">ZDC616UMkkWB5BXaxIdHRQAA</XPD:REF>
-<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="GMqYTJbP3Ey3fIcENfWCNwAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
-<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
-<XPD:REF name="Model">j4MdjoRL1EOIDrg5aSI/HwAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="s4V2XvgCKUykIrTIbIuZJwAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
-<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
-<XPD:REF name="Model">j4MdjoRL1EOIDrg5aSI/HwAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="KN3Ke7a1tEi4tYwVu7J0QgAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
-<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
-<XPD:REF name="Model">j4MdjoRL1EOIDrg5aSI/HwAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="OwnedViews[9]" type="UMLTransitionView" guid="7vMd4q8G9EKDQFOHPcTPEAAA">
-<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
-<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
-<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
-<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
-<XPD:ATTR name="Points" type="Points">334,47;356,47</XPD:ATTR>
-<XPD:REF name="Model">D9bSgkh+fUm1grCxQWJJKAAA</XPD:REF>
-<XPD:REF name="Head">Ncvmnk6K9UK3GBilp5G7PQAA</XPD:REF>
-<XPD:REF name="Tail">b180nZipz0en9UlKRxFklgAA</XPD:REF>
-<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="QPo2vVX2DEWVB9uTUFxBXQAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
-<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
-<XPD:REF name="Model">D9bSgkh+fUm1grCxQWJJKAAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="Ny36+fBkxUWVAAMudTIwkAAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
-<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
-<XPD:REF name="Model">D9bSgkh+fUm1grCxQWJJKAAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="njpuoI5DCEOE8mAdcZbAwwAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
-<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
-<XPD:REF name="Model">D9bSgkh+fUm1grCxQWJJKAAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="OwnedViews[10]" type="UMLTransitionView" guid="mHB8nKUwEkWraTtDXRFe3QAA">
-<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
-<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
-<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
-<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
-<XPD:ATTR name="Points" type="Points">415,47;437,47</XPD:ATTR>
-<XPD:REF name="Model">HjMT10ghIUK1Egs9AHFyOgAA</XPD:REF>
-<XPD:REF name="Head">XEaOENtje06E8S4viEolDQAA</XPD:REF>
-<XPD:REF name="Tail">Ncvmnk6K9UK3GBilp5G7PQAA</XPD:REF>
-<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="x29WX1xs2EOXih2ZrUfDLQAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
-<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
-<XPD:REF name="Model">HjMT10ghIUK1Egs9AHFyOgAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="Xpxik86UZ0q9v6INotSXqwAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
-<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
-<XPD:REF name="Model">HjMT10ghIUK1Egs9AHFyOgAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="pKmUEB6JPUKOFk8bzcCWIAAA">
-<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
-<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
-<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
-<XPD:REF name="Model">HjMT10ghIUK1Egs9AHFyOgAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:ATTR name="#Transitions" type="integer">5</XPD:ATTR>
-<XPD:OBJ name="Transitions[0]" type="UMLTransition" guid="KrZ9uAy1C0CsTaJeQui0ogAA">
-<XPD:REF name="StateMachine">2W/W73QAtUCuZoDkBX+gbgAA</XPD:REF>
-<XPD:REF name="Source">zvyhXKdIWkqTrZcJ0C04BwAA</XPD:REF>
-<XPD:REF name="Target">afo3cj3EuEWbjC6FplnN0gAA</XPD:REF>
-<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
-<XPD:REF name="Views[0]">882oSRP+tEqhR4wGgboiewAA</XPD:REF>
-<XPD:REF name="Views[1]">YwapOdlagUuMsS3NHYZMkQAA</XPD:REF>
-<XPD:REF name="Views[2]">9eUr5oTj30mB7y1FuBnIhAAA</XPD:REF>
-<XPD:REF name="Views[3]">9YFxGeAbMUGzXiCCAHnRMwAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="Transitions[1]" type="UMLTransition" guid="0MQBvgJrvE2uEDOwqnAC3wAA">
-<XPD:REF name="StateMachine">2W/W73QAtUCuZoDkBX+gbgAA</XPD:REF>
-<XPD:REF name="Source">afo3cj3EuEWbjC6FplnN0gAA</XPD:REF>
-<XPD:REF name="Target">sCyseyvB6EOB62kaadmH8gAA</XPD:REF>
-<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
-<XPD:REF name="Views[0]">GYiNtAOxaEyeiLvhbbRKdAAA</XPD:REF>
-<XPD:REF name="Views[1]">ntwuGJTXWkanxEx4/z5vRwAA</XPD:REF>
-<XPD:REF name="Views[2]">4MCFAa14W0mHIPVaXYPPIQAA</XPD:REF>
-<XPD:REF name="Views[3]">Tt/g5fQt7keRkrRT1Tp4VAAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="Transitions[2]" type="UMLTransition" guid="j4MdjoRL1EOIDrg5aSI/HwAA">
-<XPD:REF name="StateMachine">2W/W73QAtUCuZoDkBX+gbgAA</XPD:REF>
-<XPD:REF name="Source">sCyseyvB6EOB62kaadmH8gAA</XPD:REF>
-<XPD:REF name="Target">H8GhcGV/TkaibBqydxTvDgAA</XPD:REF>
-<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
-<XPD:REF name="Views[0]">NujPAlkbt0iiPtBxFQc8iAAA</XPD:REF>
-<XPD:REF name="Views[1]">GMqYTJbP3Ey3fIcENfWCNwAA</XPD:REF>
-<XPD:REF name="Views[2]">s4V2XvgCKUykIrTIbIuZJwAA</XPD:REF>
-<XPD:REF name="Views[3]">KN3Ke7a1tEi4tYwVu7J0QgAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="Transitions[3]" type="UMLTransition" guid="D9bSgkh+fUm1grCxQWJJKAAA">
-<XPD:REF name="StateMachine">2W/W73QAtUCuZoDkBX+gbgAA</XPD:REF>
-<XPD:REF name="Source">H8GhcGV/TkaibBqydxTvDgAA</XPD:REF>
-<XPD:REF name="Target">icDh0TlK80KI+o6pI13edgAA</XPD:REF>
-<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
-<XPD:REF name="Views[0]">7vMd4q8G9EKDQFOHPcTPEAAA</XPD:REF>
-<XPD:REF name="Views[1]">QPo2vVX2DEWVB9uTUFxBXQAA</XPD:REF>
-<XPD:REF name="Views[2]">Ny36+fBkxUWVAAMudTIwkAAA</XPD:REF>
-<XPD:REF name="Views[3]">njpuoI5DCEOE8mAdcZbAwwAA</XPD:REF>
-</XPD:OBJ>
-<XPD:OBJ name="Transitions[4]" type="UMLTransition" guid="HjMT10ghIUK1Egs9AHFyOgAA">
-<XPD:REF name="StateMachine">2W/W73QAtUCuZoDkBX+gbgAA</XPD:REF>
-<XPD:REF name="Source">icDh0TlK80KI+o6pI13edgAA</XPD:REF>
-<XPD:REF name="Target">linxzpIQOEKLTPrTPkfT6QAA</XPD:REF>
-<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
-<XPD:REF name="Views[0]">mHB8nKUwEkWraTtDXRFe3QAA</XPD:REF>
-<XPD:REF name="Views[1]">x29WX1xs2EOXih2ZrUfDLQAA</XPD:REF>
-<XPD:REF name="Views[2]">Xpxik86UZ0q9v6INotSXqwAA</XPD:REF>
-<XPD:REF name="Views[3]">pKmUEB6JPUKOFk8bzcCWIAAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:ATTR name="#OwnedElements" type="integer">1</XPD:ATTR>
-<XPD:OBJ name="OwnedElements[0]" type="UMLClass" guid="64g9hRy/3UKt3eh5dgElQAAA">
-<XPD:ATTR name="Name" type="string">Lim, Heejin</XPD:ATTR>
-<XPD:REF name="Namespace">sIvJXYGlbk2j4pPNuBXO1wAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="OwnedElements[3]" type="UMLModel" guid="9YzpU7hPckKY8uie4ppk2gAA">
-<XPD:ATTR name="Name" type="string">Implementation Model</XPD:ATTR>
-<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
-<XPD:ATTR name="StereotypeName" type="string">implementationModel</XPD:ATTR>
-<XPD:REF name="Namespace">CqZZuWhrLkmNpzJ7OuF7+wAA</XPD:REF>
-<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
-<XPD:OBJ name="OwnedDiagrams[0]" type="UMLComponentDiagram" guid="VVX8bYlzP0+/QABN/JhXQwAA">
-<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
-<XPD:REF name="DiagramOwner">9YzpU7hPckKY8uie4ppk2gAA</XPD:REF>
-<XPD:OBJ name="DiagramView" type="UMLComponentDiagramView" guid="IDJmzyDaHkunvykxt+3RfQAA">
-<XPD:REF name="Diagram">VVX8bYlzP0+/QABN/JhXQwAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-</XPD:OBJ>
-<XPD:OBJ name="OwnedElements[4]" type="UMLModel" guid="RiQm2H9rlEStxXqb03FtCgAA">
-<XPD:ATTR name="Name" type="string">Deployment Model</XPD:ATTR>
-<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
-<XPD:ATTR name="StereotypeName" type="string">deploymentModel</XPD:ATTR>
-<XPD:REF name="Namespace">CqZZuWhrLkmNpzJ7OuF7+wAA</XPD:REF>
-<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
-<XPD:OBJ name="OwnedDiagrams[0]" type="UMLDeploymentDiagram" guid="c/HoJRkzOU6w/Jezp96SNAAA">
-<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
-<XPD:REF name="DiagramOwner">RiQm2H9rlEStxXqb03FtCgAA</XPD:REF>
-<XPD:OBJ name="DiagramView" type="UMLDeploymentDiagramView" guid="HWCFgP9g2UuYvYins0fYsAAA">
-<XPD:REF name="Diagram">c/HoJRkzOU6w/Jezp96SNAAA</XPD:REF>
-</XPD:OBJ>
-</XPD:OBJ>
-</XPD:OBJ>
-</XPD:OBJ>
-</XPD:BODY>
-</XPD:PROJECT>
Deleted: jbpm4/pvm/trunk/modules/manual/src/main/docbook/images.ppt
===================================================================
(Binary files differ)
17 years, 7 months
JBoss JBPM SVN: r2182 - in jbpm3/trunk/modules/core/src: main/java/org/jbpm/db and 6 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-09-11 18:59:00 -0400 (Thu, 11 Sep 2008)
New Revision: 2182
Modified:
jbpm3/trunk/modules/core/src/main/java/org/jbpm/AbstractJbpmTestCase.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/JbpmConfiguration.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/AbstractDbTestCase.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/JbpmSchema.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/persistence/db/DbPersistenceServiceFactory.java
jbpm3/trunk/modules/core/src/main/resources/hibernate.common.xml
jbpm3/trunk/modules/core/src/test/java/org/jbpm/jbpm1106/JBPM1106Test.java
jbpm3/trunk/modules/core/src/test/java/org/jbpm/jcr/JcrDbTest.java
jbpm3/trunk/modules/core/src/test/java/org/jbpm/logging/exe/LoggingConfigDbTest.java
jbpm3/trunk/modules/core/src/test/java/org/jbpm/optimisticlocking/LockingTest.java
Log:
Remove drop schema from tearDown
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/AbstractJbpmTestCase.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/AbstractJbpmTestCase.java 2008-09-11 19:04:35 UTC (rev 2181)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/AbstractJbpmTestCase.java 2008-09-11 22:59:00 UTC (rev 2182)
@@ -21,40 +21,13 @@
*/
package org.jbpm;
-import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public abstract class AbstractJbpmTestCase extends TestCase {
-
- private static Log log = LogFactory.getLog(AbstractJbpmTestCase.class);
-
- public void setUp() throws Exception {
+public abstract class AbstractJbpmTestCase extends TestCase
+{
+ public void setUp() throws Exception
+ {
JbpmConfigurationTestHelper.reset();
JbpmContextTestHelper.reset();
}
-
- public void tearDown() throws Exception {
- JbpmConfigurationTestHelper.reset();
- JbpmContextTestHelper.reset();
- }
-
- protected void runTest() throws Throwable {
- try {
- super.runTest();
- } catch (AssertionFailedError e) {
- log.error("");
- log.error("ASSERTION FAILURE: "+e.getMessage());
- log.error("");
- throw e;
- } catch (Throwable t) {
- log.error("");
- log.error("EXCEPTION: "+t.getMessage());
- log.error("");
- t.printStackTrace();
- throw t;
- }
- }
}
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/JbpmConfiguration.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/JbpmConfiguration.java 2008-09-11 19:04:35 UTC (rev 2181)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/JbpmConfiguration.java 2008-09-11 22:59:00 UTC (rev 2182)
@@ -46,51 +46,62 @@
/**
* configuration of one jBPM instance.
*
- * <p>During process execution, jBPM might need to use some services.
- * A JbpmConfiguration contains the knowledge on how to create those services.
+ * <p>
+ * During process execution, jBPM might need to use some services. A JbpmConfiguration contains the knowledge on how to create those services.
* </p>
*
- * <p>A JbpmConfiguration is a thread safe object and serves as a factory for
- * {@link org.jbpm.JbpmContext}s, which means one JbpmConfiguration
- * can be used to create {@link org.jbpm.JbpmContext}s for all threads.
- * The single JbpmConfiguration can be maintained in a static member or
- * in the JNDI tree if that is available.
+ * <p>
+ * A JbpmConfiguration is a thread safe object and serves as a factory for {@link org.jbpm.JbpmContext}s, which means one JbpmConfiguration can be used to create
+ * {@link org.jbpm.JbpmContext}s for all threads. The single JbpmConfiguration can be maintained in a static member or in the JNDI tree if that is available.
* </p>
*
- * <p>A JbpmConfiguration can be obtained in following ways:
+ * <p>
+ * A JbpmConfiguration can be obtained in following ways:
* <ul>
- * <li>from a resource (by default <code>jbpm.cfg.xml</code> is used):
- * <pre> JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
+ * <li>from a resource (by default <code>jbpm.cfg.xml</code> is used):
+ *
+ * <pre>
+ * JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
* </pre>
+ *
* or
- * <pre> String myXmlResource = "...";
- * JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance(myXmlResource);</pre>
- * </li>
- * <li>from an XML string:
- * <pre> JbpmConfiguration jbpmConfiguration = JbpmConfiguration.parseXmlString(
- * "<jbpm-configuration>" +
+ *
+ * <pre>
+ * String myXmlResource = "...";
+ * JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance(myXmlResource);
+ * </pre>
+ *
+ * </li>
+ * <li>from an XML string:
+ *
+ * <pre>
+ * JbpmConfiguration jbpmConfiguration = JbpmConfiguration.parseXmlString(
+ * "<jbpm-configuration>" +
* ...
- * "</jbpm-configuration>"
+ * "</jbpm-configuration>"
* );
* </pre>
- * </li>
- * <li>By specifying a custom implementation of an object factory. This can be
- * used to specify a JbpmConfiguration in other bean-style notations such as
- * used by JBoss Microcontainer or Spring.
- * <pre> ObjectFactory of = new <i>MyCustomObjectFactory</i>();
+ *
+ * </li>
+ * <li>By specifying a custom implementation of an object factory. This can be used to specify a JbpmConfiguration in other bean-style notations such as used by JBoss
+ * Microcontainer or Spring.
+ *
+ * <pre>
+ * ObjectFactory of = new <i>MyCustomObjectFactory</i>();
* JbpmConfiguration.Configs.setDefaultObjectFactory(of);
* JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
* </pre>
- * </li>
+ *
+ * </li>
* </ul>
* </p>
*
- * <p>JbpmConfigurations can be configured using a spring-like XML notation
- * (in relax ng compact notation):
+ * <p>
+ * JbpmConfigurations can be configured using a spring-like XML notation (in relax ng compact notation):
* </p>
*
* <pre>
- * datatypes xs = "http://www.w3.org/2001/XMLSchema-datatypes"
+ * datatypes xs = "http://www.w3.org/2001/XMLSchema-datatypes"
*
* start = element beans { element object* }
*
@@ -148,7 +159,7 @@
* ( attribute ref-name {xsd:string} ) |
* ( attribute name {xsd:string}?,
* attribute class {xsd:string}?,
- * attribute singleton { "true" | "false" }?,
+ * attribute singleton { "true" | "false" }?,
* constructor*,
* field*,
* property*
@@ -211,36 +222,41 @@
* float = element float {xsd:string}
* double = element string {xsd:double}
* char = element char {xsd:character}
- * bool = element bool { "true" | "false" }
+ * bool = element bool { "true" | "false" }
* true = element true {}
* false = element false {}
* null = element null {}
* </pre>
+ *
* </p>
*
* <p>
* Other configuration properties
* <table>
- * <tr>
- * <td>jbpm.files.dir</td><td></td>
- * </tr>
- * <tr>
- * <td>jbpm.types</td><td></td>
- * </tr>
+ * <tr>
+ * <td>jbpm.files.dir</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>jbpm.types</td>
+ * <td></td>
+ * </tr>
* </table>
* </p>
*/
-public class JbpmConfiguration implements Serializable {
-
+public class JbpmConfiguration implements Serializable
+{
+
private static final long serialVersionUID = 1L;
static ObjectFactory defaultObjectFactory = null;
static Map instances = new HashMap();
-
+
/**
* resets static members for test isolation.
*/
- static void reset() {
+ static void reset()
+ {
defaultObjectFactory = null;
instances = new HashMap();
}
@@ -248,50 +264,65 @@
ObjectFactory objectFactory = null;
static ThreadLocal jbpmConfigurationsStacks = new ThreadLocal();
ThreadLocal jbpmContextStacks = new ThreadLocal();
- JobExecutor jobExecutor = null;
+ JobExecutor jobExecutor = null;
- public JbpmConfiguration(ObjectFactory objectFactory) {
+ public JbpmConfiguration(ObjectFactory objectFactory)
+ {
this.objectFactory = objectFactory;
}
- public static JbpmConfiguration getInstance() {
+
+ public static JbpmConfiguration getInstance()
+ {
return getInstance(null);
}
- public static JbpmConfiguration getInstance(String resource) {
-
+
+ public static JbpmConfiguration getInstance(String resource)
+ {
+
JbpmConfiguration instance = null;
-
- synchronized(instances) {
- if (resource==null) {
+
+ synchronized (instances)
+ {
+ if (resource == null)
+ {
resource = "jbpm.cfg.xml";
}
- instance = (JbpmConfiguration) instances.get(resource);
- if (instance==null) {
+ instance = (JbpmConfiguration)instances.get(resource);
+ if (instance == null)
+ {
- if (defaultObjectFactory!=null) {
- log.debug("creating jbpm configuration from given default object factory '"+defaultObjectFactory+"'");
+ if (defaultObjectFactory != null)
+ {
+ log.debug("creating jbpm configuration from given default object factory '" + defaultObjectFactory + "'");
instance = new JbpmConfiguration(defaultObjectFactory);
- } else {
-
- try {
- log.info("using jbpm configuration resource '"+resource+"'");
+ }
+ else
+ {
+
+ try
+ {
+ log.info("using jbpm configuration resource '" + resource + "'");
InputStream jbpmCfgXmlStream = ClassLoaderUtil.getStream(resource);
// if a custom resource is to be used, but is not found in the classpath
// log a warning (otherwise, users who want to load custom stuff
// will be confused if the resource is not found and not loaded, without
// any notice)
- if (jbpmCfgXmlStream==null && !"jbpm.cfg.xml".equals(resource)) {
- log.warn("jbpm configuration resource '"+resource+"' is not available");
+ if (jbpmCfgXmlStream == null && !"jbpm.cfg.xml".equals(resource))
+ {
+ log.warn("jbpm configuration resource '" + resource + "' is not available");
}
ObjectFactory objectFactory = parseObjectFactory(jbpmCfgXmlStream);
instance = createJbpmConfiguration(objectFactory);
-
- } catch (RuntimeException e) {
- throw new JbpmException("couldn't parse jbpm configuration from resource '"+resource+"'", e);
+
}
+ catch (RuntimeException e)
+ {
+ throw new JbpmException("couldn't parse jbpm configuration from resource '" + resource + "'", e);
+ }
}
instances.put(resource, instance);
@@ -301,26 +332,29 @@
return instance;
}
- public static boolean hasInstance(String resource) {
+ public static boolean hasInstance(String resource)
+ {
boolean hasInstance = false;
- if (resource==null) {
+ if (resource == null)
+ {
resource = "jbpm.cfg.xml";
}
- if ( (instances!=null)
- && (instances.containsKey(resource))
- ) {
+ if ((instances != null) && (instances.containsKey(resource)))
+ {
hasInstance = true;
}
return hasInstance;
}
- protected static ObjectFactory parseObjectFactory(InputStream inputStream) {
+ protected static ObjectFactory parseObjectFactory(InputStream inputStream)
+ {
log.debug("loading defaults in jbpm configuration");
ObjectFactoryParser objectFactoryParser = new ObjectFactoryParser();
ObjectFactoryImpl objectFactoryImpl = new ObjectFactoryImpl();
objectFactoryParser.parseElementsFromResource("org/jbpm/default.jbpm.cfg.xml", objectFactoryImpl);
- if (inputStream!=null) {
+ if (inputStream != null)
+ {
log.debug("loading specific configuration...");
objectFactoryParser.parseElementsStream(inputStream, objectFactoryImpl);
}
@@ -331,26 +365,31 @@
/**
* create an ObjectFacotory from an XML string.
*/
- public static JbpmConfiguration parseXmlString(String xml) {
+ public static JbpmConfiguration parseXmlString(String xml)
+ {
log.debug("creating jbpm configuration from xml string");
InputStream inputStream = null;
- if (xml!=null) {
+ if (xml != null)
+ {
inputStream = new ByteArrayInputStream(xml.getBytes());
}
ObjectFactory objectFactory = parseObjectFactory(inputStream);
return createJbpmConfiguration(objectFactory);
}
-
- protected static JbpmConfiguration createJbpmConfiguration(ObjectFactory objectFactory) {
+
+ protected static JbpmConfiguration createJbpmConfiguration(ObjectFactory objectFactory)
+ {
JbpmConfiguration jbpmConfiguration = new JbpmConfiguration(objectFactory);
- // now we make the bean jbpm.configuration always availble
- if (objectFactory instanceof ObjectFactoryImpl) {
+ // now we make the bean jbpm.configuration always availble
+ if (objectFactory instanceof ObjectFactoryImpl)
+ {
ObjectFactoryImpl objectFactoryImpl = (ObjectFactoryImpl)objectFactory;
ObjectInfo jbpmConfigurationInfo = new ValueInfo("jbpmConfiguration", jbpmConfiguration);
objectFactoryImpl.addObjectInfo(jbpmConfigurationInfo);
-
- if (mustStaleObjectExceptionsBeHidden(objectFactory)) {
+
+ if (mustStaleObjectExceptionsBeHidden(objectFactory))
+ {
StaleObjectLogConfigurer.hideStaleObjectExceptions();
}
}
@@ -358,252 +397,340 @@
return jbpmConfiguration;
}
- private static boolean mustStaleObjectExceptionsBeHidden(ObjectFactory objectFactory) {
- if (!objectFactory.hasObject("jbpm.hide.stale.object.exceptions")) {
+ private static boolean mustStaleObjectExceptionsBeHidden(ObjectFactory objectFactory)
+ {
+ if (!objectFactory.hasObject("jbpm.hide.stale.object.exceptions"))
+ {
return true;
}
- Object o = (Boolean) objectFactory.createObject("jbpm.hide.stale.object.exceptions");
- if ( (o instanceof Boolean)
- && (((Boolean)o).booleanValue()==false)
- ) {
+ Object o = (Boolean)objectFactory.createObject("jbpm.hide.stale.object.exceptions");
+ if ((o instanceof Boolean) && (((Boolean)o).booleanValue() == false))
+ {
return false;
}
return true;
}
-
- public static JbpmConfiguration parseInputStream(InputStream inputStream) {
- ObjectFactory objectFactory = parseObjectFactory(inputStream);
+
+ public static JbpmConfiguration parseInputStream(InputStream inputStream)
+ {
+ ObjectFactory objectFactory = parseObjectFactory(inputStream);
log.debug("creating jbpm configuration from input stream");
return createJbpmConfiguration(objectFactory);
}
- public static JbpmConfiguration parseResource(String resource) {
+ public static JbpmConfiguration parseResource(String resource)
+ {
InputStream inputStream = null;
- log.debug("creating jbpm configuration from resource '"+resource+"'");
- if (resource!=null) {
+ log.debug("creating jbpm configuration from resource '" + resource + "'");
+ if (resource != null)
+ {
inputStream = ClassLoaderUtil.getStream(resource);
}
ObjectFactory objectFactory = parseObjectFactory(inputStream);
return createJbpmConfiguration(objectFactory);
}
- public JbpmContext createJbpmContext() {
+ public JbpmContext createJbpmContext()
+ {
return createJbpmContext(JbpmContext.DEFAULT_JBPM_CONTEXT_NAME);
}
- public JbpmContext createJbpmContext(String name) {
- JbpmContext jbpmContext = (JbpmContext) objectFactory.createObject(name);
+ public JbpmContext createJbpmContext(String name)
+ {
+ JbpmContext jbpmContext = (JbpmContext)objectFactory.createObject(name);
jbpmContext.jbpmConfiguration = this;
jbpmContextCreated(jbpmContext);
return jbpmContext;
}
-
- public ServiceFactory getServiceFactory(String serviceName) {
+
+ public ServiceFactory getServiceFactory(String serviceName)
+ {
return getServiceFactory(serviceName, JbpmContext.DEFAULT_JBPM_CONTEXT_NAME);
}
- public ServiceFactory getServiceFactory(String serviceName, String jbpmContextName) {
+ public ServiceFactory getServiceFactory(String serviceName, String jbpmContextName)
+ {
ServiceFactory serviceFactory = null;
JbpmContext jbpmContext = createJbpmContext(jbpmContextName);
- try {
+ try
+ {
serviceFactory = jbpmContext.getServices().getServiceFactory(serviceName);
- } finally {
+ }
+ finally
+ {
jbpmContext.close();
}
return serviceFactory;
}
-
+
/**
* gives the jbpm domain model access to configuration information via the current JbpmContext.
*/
- public abstract static class Configs {
- public static ObjectFactory getObjectFactory() {
+ public abstract static class Configs
+ {
+ public static ObjectFactory getObjectFactory()
+ {
ObjectFactory objectFactory = null;
JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
- if (jbpmContext!=null) {
+ if (jbpmContext != null)
+ {
objectFactory = jbpmContext.objectFactory;
- } else {
+ }
+ else
+ {
objectFactory = getInstance().objectFactory;
}
return objectFactory;
}
- public static void setDefaultObjectFactory(ObjectFactory objectFactory){
+
+ public static void setDefaultObjectFactory(ObjectFactory objectFactory)
+ {
defaultObjectFactory = objectFactory;
}
- public static boolean hasObject(String name) {
+
+ public static boolean hasObject(String name)
+ {
ObjectFactory objectFactory = getObjectFactory();
return objectFactory.hasObject(name);
}
- public static synchronized Object getObject(String name) {
+
+ public static synchronized Object getObject(String name)
+ {
ObjectFactory objectFactory = getObjectFactory();
return objectFactory.createObject(name);
}
- public static String getString(String name) {
- return (String) getObject(name);
+
+ public static String getString(String name)
+ {
+ return (String)getObject(name);
}
- public static long getLong(String name) {
+ public static long getLong(String name)
+ {
return ((Long)getObject(name)).longValue();
}
-
- public static int getInt(String name) {
+
+ public static int getInt(String name)
+ {
return ((Integer)getObject(name)).intValue();
}
-
- public static boolean getBoolean(String name) {
+
+ public static boolean getBoolean(String name)
+ {
return ((Boolean)getObject(name)).booleanValue();
}
}
- public void createSchema() {
+ public void cleanSchema()
+ {
+ cleanSchema(JbpmContext.DEFAULT_JBPM_CONTEXT_NAME);
+ }
+
+ public void cleanSchema(String jbpmContextName)
+ {
+ JbpmContext jbpmContext = createJbpmContext(jbpmContextName);
+ try
+ {
+ Services services = jbpmContext.getServices();
+ DbPersistenceServiceFactory persistenceServiceFactory = (DbPersistenceServiceFactory)services.getServiceFactory(Services.SERVICENAME_PERSISTENCE);
+ persistenceServiceFactory.cleanSchema();
+ }
+ finally
+ {
+ jbpmContext.close();
+ }
+ }
+
+ public void createSchema()
+ {
createSchema(JbpmContext.DEFAULT_JBPM_CONTEXT_NAME);
}
-
- public void createSchema(String jbpmContextName) {
+
+ public void createSchema(String jbpmContextName)
+ {
JbpmContext jbpmContext = createJbpmContext(jbpmContextName);
- try {
+ try
+ {
Services services = jbpmContext.getServices();
- DbPersistenceServiceFactory persistenceServiceFactory = (DbPersistenceServiceFactory) services.getServiceFactory(Services.SERVICENAME_PERSISTENCE);
+ DbPersistenceServiceFactory persistenceServiceFactory = (DbPersistenceServiceFactory)services.getServiceFactory(Services.SERVICENAME_PERSISTENCE);
persistenceServiceFactory.createSchema();
- } finally {
+ }
+ finally
+ {
jbpmContext.close();
}
}
-
- public void dropSchema() {
+
+ public void dropSchema()
+ {
dropSchema(JbpmContext.DEFAULT_JBPM_CONTEXT_NAME);
}
-
- public void dropSchema(String jbpmContextName) {
+
+ public void dropSchema(String jbpmContextName)
+ {
+ log.warn("Dropping schema: " + jbpmContextName);
JbpmContext jbpmContext = createJbpmContext(jbpmContextName);
- try {
+ try
+ {
Services services = jbpmContext.getServices();
- DbPersistenceServiceFactory persistenceServiceFactory = (DbPersistenceServiceFactory) services.getServiceFactory(Services.SERVICENAME_PERSISTENCE);
+ DbPersistenceServiceFactory persistenceServiceFactory = (DbPersistenceServiceFactory)services.getServiceFactory(Services.SERVICENAME_PERSISTENCE);
persistenceServiceFactory.dropSchema();
- } finally {
+ }
+ finally
+ {
jbpmContext.close();
}
}
- public void close() {
+ public void close()
+ {
close(JbpmContext.DEFAULT_JBPM_CONTEXT_NAME);
}
- public void close(String jbpmContextName) {
+ public void close(String jbpmContextName)
+ {
JbpmContext jbpmContext = createJbpmContext(jbpmContextName);
- try {
-
- synchronized (instances) {
+ try
+ {
+
+ synchronized (instances)
+ {
Iterator iter = instances.keySet().iterator();
- while(iter.hasNext()) {
- String resource = (String) iter.next();
- if (this==instances.get(resource)) {
+ while (iter.hasNext())
+ {
+ String resource = (String)iter.next();
+ if (this == instances.get(resource))
+ {
instances.remove(resource);
break;
}
}
}
-
- if (jobExecutor!=null) {
+
+ if (jobExecutor != null)
+ {
jobExecutor.stop();
}
-
+
Map serviceFactories = jbpmContext.getServices().getServiceFactories();
- if (serviceFactories!=null) {
+ if (serviceFactories != null)
+ {
Iterator iter = serviceFactories.values().iterator();
- while (iter.hasNext()) {
- ServiceFactory serviceFactory = (ServiceFactory) iter.next();
+ while (iter.hasNext())
+ {
+ ServiceFactory serviceFactory = (ServiceFactory)iter.next();
serviceFactory.close();
}
}
- } finally {
+ }
+ finally
+ {
jbpmContext.close();
}
}
-
- static JbpmConfiguration getCurrentJbpmConfiguration() {
+
+ static JbpmConfiguration getCurrentJbpmConfiguration()
+ {
JbpmConfiguration currentJbpmConfiguration = null;
Stack stack = getJbpmConfigurationStack();
- if (! stack.isEmpty()) {
- currentJbpmConfiguration = (JbpmConfiguration) stack.peek();
+ if (!stack.isEmpty())
+ {
+ currentJbpmConfiguration = (JbpmConfiguration)stack.peek();
}
return currentJbpmConfiguration;
}
- static synchronized Stack getJbpmConfigurationStack() {
- Stack stack = (Stack) jbpmConfigurationsStacks.get();
- if (stack==null) {
+ static synchronized Stack getJbpmConfigurationStack()
+ {
+ Stack stack = (Stack)jbpmConfigurationsStacks.get();
+ if (stack == null)
+ {
stack = new Stack();
jbpmConfigurationsStacks.set(stack);
}
return stack;
}
-
- synchronized void pushJbpmConfiguration() {
+
+ synchronized void pushJbpmConfiguration()
+ {
getJbpmConfigurationStack().push(this);
}
- synchronized void popJbpmConfiguration() {
+ synchronized void popJbpmConfiguration()
+ {
getJbpmConfigurationStack().remove(this);
}
-
- public JbpmContext getCurrentJbpmContext() {
+ public JbpmContext getCurrentJbpmContext()
+ {
JbpmContext currentJbpmContext = null;
Stack stack = getJbpmContextStack();
- if (! stack.isEmpty()) {
- currentJbpmContext = (JbpmContext) stack.peek();
+ if (!stack.isEmpty())
+ {
+ currentJbpmContext = (JbpmContext)stack.peek();
}
return currentJbpmContext;
}
-
- Stack getJbpmContextStack() {
- Stack stack = (Stack) jbpmContextStacks.get();
- if (stack==null) {
+ Stack getJbpmContextStack()
+ {
+ Stack stack = (Stack)jbpmContextStacks.get();
+ if (stack == null)
+ {
stack = new Stack();
jbpmContextStacks.set(stack);
}
return stack;
}
- void pushJbpmContext(JbpmContext jbpmContext) {
+ void pushJbpmContext(JbpmContext jbpmContext)
+ {
getJbpmContextStack().push(jbpmContext);
}
- void popJbpmContext(JbpmContext jbpmContext) {
+ void popJbpmContext(JbpmContext jbpmContext)
+ {
Stack stack = getJbpmContextStack();
- if (stack.isEmpty()) {
+ if (stack.isEmpty())
+ {
throw new JbpmException("closed JbpmContext more then once... check your try-finally's around JbpmContexts blocks");
}
- JbpmContext popped = (JbpmContext) stack.pop();
- if (jbpmContext!=popped) {
+ JbpmContext popped = (JbpmContext)stack.pop();
+ if (jbpmContext != popped)
+ {
throw new JbpmException("closed JbpmContext in different order then they were created... check your try-finally's around JbpmContexts blocks");
}
}
-
- void jbpmContextCreated(JbpmContext jbpmContext) {
+ void jbpmContextCreated(JbpmContext jbpmContext)
+ {
pushJbpmConfiguration();
pushJbpmContext(jbpmContext);
}
-
- void jbpmContextClosed(JbpmContext jbpmContext) {
+
+ void jbpmContextClosed(JbpmContext jbpmContext)
+ {
popJbpmConfiguration();
popJbpmContext(jbpmContext);
}
-
- public void startJobExecutor() {
+
+ public void startJobExecutor()
+ {
getJobExecutor().start();
}
- public synchronized JobExecutor getJobExecutor() {
- if (jobExecutor==null) {
- try {
- jobExecutor = (JobExecutor) this.objectFactory.createObject("jbpm.job.executor");
- } catch (ClassCastException e) {
- throw new JbpmException("jbpm configuration object under key 'jbpm.job.executor' is not a "+JobExecutor.class.getName(), e);
+ public synchronized JobExecutor getJobExecutor()
+ {
+ if (jobExecutor == null)
+ {
+ try
+ {
+ jobExecutor = (JobExecutor)this.objectFactory.createObject("jbpm.job.executor");
}
+ catch (ClassCastException e)
+ {
+ throw new JbpmException("jbpm configuration object under key 'jbpm.job.executor' is not a " + JobExecutor.class.getName(), e);
+ }
}
return jobExecutor;
}
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/AbstractDbTestCase.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/AbstractDbTestCase.java 2008-09-11 19:04:35 UTC (rev 2181)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/AbstractDbTestCase.java 2008-09-11 22:59:00 UTC (rev 2182)
@@ -38,240 +38,282 @@
import org.jbpm.logging.log.ProcessLog;
import org.jbpm.taskmgmt.exe.TaskInstance;
-public abstract class AbstractDbTestCase extends AbstractJbpmTestCase {
+public abstract class AbstractDbTestCase extends AbstractJbpmTestCase
+{
- protected static JbpmConfiguration jbpmConfiguration = getDbTestJbpmConfiguration();
+ private JbpmConfiguration jbpmConfiguration;
- protected JbpmContext jbpmContext = null;
- protected SchemaExport schemaExport = null;
+ protected JbpmContext jbpmContext = null;
+ protected SchemaExport schemaExport = null;
- protected Session session = null;
- protected GraphSession graphSession = null;
- protected TaskMgmtSession taskMgmtSession = null;
- protected ContextSession contextSession = null;
- protected JobSession jobSession = null;
- protected LoggingSession loggingSession = null;
+ protected Session session = null;
+ protected GraphSession graphSession = null;
+ protected TaskMgmtSession taskMgmtSession = null;
+ protected ContextSession contextSession = null;
+ protected JobSession jobSession = null;
+ protected LoggingSession loggingSession = null;
- protected JobExecutor jobExecutor;
+ protected JobExecutor jobExecutor;
- public static JbpmConfiguration getDbTestJbpmConfiguration() {
- return JbpmConfiguration.getInstance("org/jbpm/db/jbpm.db.test.cfg.xml");
- }
+ public void setUp() throws Exception
+ {
+ createSchema();
+ createJbpmContext();
+ initializeMembers();
+ log.debug("### starting " + getClass().getName() + "." + getName() + " ####################################################");
+ }
- public void setUp() throws Exception {
- createSchema();
- createJbpmContext();
- initializeMembers();
+ public void tearDown() throws Exception
+ {
+ log.debug("### " + getClass().getName() + "." + getName() + " done ####################################################");
+ resetMembers();
+ closeJbpmContext();
+ super.tearDown();
+ }
- log.debug("### starting " + getClass().getName() + "."
- + getName() + " ####################################################");
- }
+ public void beginSessionTransaction()
+ {
+ createJbpmContext();
+ initializeMembers();
+ }
- public void tearDown() throws Exception {
- log.debug("### " + getClass().getName() + "." + getName()
- + " done ####################################################");
- resetMembers();
- closeJbpmContext();
- dropSchema();
- super.tearDown();
- }
+ public void commitAndCloseSession()
+ {
+ closeJbpmContext();
+ resetMembers();
+ }
- public void beginSessionTransaction() {
- createJbpmContext();
- initializeMembers();
- }
+ protected void newTransaction()
+ {
+ try
+ {
+ commitAndCloseSession();
+ beginSessionTransaction();
+ }
+ catch (Throwable t)
+ {
+ throw new RuntimeException("couldn't commit and start new transaction", t);
+ }
+ }
- public void commitAndCloseSession() {
- closeJbpmContext();
- resetMembers();
- }
+ public ProcessInstance saveAndReload(ProcessInstance pi)
+ {
+ jbpmContext.save(pi);
+ newTransaction();
+ return graphSession.loadProcessInstance(pi.getId());
+ }
- protected void newTransaction() {
- try {
- commitAndCloseSession();
- beginSessionTransaction();
- }
- catch(Throwable t) {
- throw new RuntimeException("couldn't commit and start new transaction", t);
- }
- }
+ public TaskInstance saveAndReload(TaskInstance taskInstance)
+ {
+ jbpmContext.save(taskInstance);
+ newTransaction();
+ return (TaskInstance)session.load(TaskInstance.class, new Long(taskInstance.getId()));
+ }
- public ProcessInstance saveAndReload(ProcessInstance pi) {
- jbpmContext.save(pi);
- newTransaction();
- return graphSession.loadProcessInstance(pi.getId());
- }
+ public ProcessDefinition saveAndReload(ProcessDefinition pd)
+ {
+ graphSession.saveProcessDefinition(pd);
+ newTransaction();
+ return graphSession.loadProcessDefinition(pd.getId());
+ }
- public TaskInstance saveAndReload(TaskInstance taskInstance) {
- jbpmContext.save(taskInstance);
- newTransaction();
- return (TaskInstance) session.load(TaskInstance.class, new Long(
- taskInstance.getId()));
- }
+ public ProcessLog saveAndReload(ProcessLog processLog)
+ {
+ loggingSession.saveProcessLog(processLog);
+ newTransaction();
+ return loggingSession.loadProcessLog(processLog.getId());
+ }
- public ProcessDefinition saveAndReload(ProcessDefinition pd) {
- graphSession.saveProcessDefinition(pd);
- newTransaction();
- return graphSession.loadProcessDefinition(pd.getId());
- }
+ protected void createSchema()
+ {
+ getJbpmConfiguration().createSchema();
+ }
- public ProcessLog saveAndReload(ProcessLog processLog) {
- loggingSession.saveProcessLog(processLog);
- newTransaction();
- return loggingSession.loadProcessLog(processLog.getId());
- }
+ protected void cleanSchema()
+ {
+ getJbpmConfiguration().cleanSchema();
+ }
- protected void createSchema() {
- getJbpmConfiguration().createSchema();
- }
+ protected void dropSchema()
+ {
+ getJbpmConfiguration().dropSchema();
+ }
- protected JbpmConfiguration getJbpmConfiguration() {
- return jbpmConfiguration;
- }
+ protected JbpmConfiguration getJbpmConfiguration()
+ {
+ if (jbpmConfiguration == null)
+ {
+ jbpmConfiguration = JbpmConfiguration.getInstance("org/jbpm/db/jbpm.db.test.cfg.xml");
+ }
+ return jbpmConfiguration;
+ }
- protected void dropSchema() {
- getJbpmConfiguration().dropSchema();
- }
+ protected void createJbpmContext()
+ {
+ jbpmContext = getJbpmConfiguration().createJbpmContext();
+ }
- protected void createJbpmContext() {
- jbpmContext = getJbpmConfiguration().createJbpmContext();
- }
+ protected void closeJbpmContext()
+ {
+ jbpmContext.close();
+ }
- protected void closeJbpmContext() {
- jbpmContext.close();
- }
+ protected void startJobExecutor()
+ {
+ jobExecutor = getJbpmConfiguration().getJobExecutor();
+ jobExecutor.start();
+ }
- protected void startJobExecutor() {
- jobExecutor = getJbpmConfiguration().getJobExecutor();
- jobExecutor.start();
- }
+ private void processAllJobs(final long maxWait, int maxJobs)
+ {
+ boolean jobsAvailable = true;
- private void processAllJobs(final long maxWait, int maxJobs) {
- boolean jobsAvailable = true;
+ // install a timer that will interrupt if it takes too long
+ // if that happens, it will lead to an interrupted exception and the test
+ // will fail
+ TimerTask interruptTask = new TimerTask()
+ {
+ Thread testThread = Thread.currentThread();
- // install a timer that will interrupt if it takes too long
- // if that happens, it will lead to an interrupted exception and the test
- // will fail
- TimerTask interruptTask = new TimerTask() {
- Thread testThread = Thread.currentThread();
+ public void run()
+ {
+ log.debug("test " + getName() + " took too long. going to interrupt...");
+ testThread.interrupt();
+ }
+ };
+ Timer timer = new Timer();
+ timer.schedule(interruptTask, maxWait);
- public void run() {
- log
- .debug("test " + getName()
- + " took too long. going to interrupt...");
- testThread.interrupt();
- }
- };
- Timer timer = new Timer();
- timer.schedule(interruptTask, maxWait);
+ try
+ {
+ while (jobsAvailable)
+ {
+ log.debug("going to sleep for 200 millis, waiting for the job executor to process more jobs");
+ Thread.sleep(200);
+ jobsAvailable = (getNbrOfJobsAvailable() > maxJobs);
+ }
+ jobExecutor.stopAndJoin();
- try {
- while(jobsAvailable) {
- log
- .debug("going to sleep for 200 millis, waiting for the job executor to process more jobs");
- Thread.sleep(200);
- jobsAvailable = (getNbrOfJobsAvailable() > maxJobs);
- }
- jobExecutor.stopAndJoin();
+ }
+ catch (InterruptedException e)
+ {
+ fail("test execution exceeded treshold of " + maxWait + " milliseconds");
+ }
+ finally
+ {
+ timer.cancel();
+ }
+ }
- }
- catch(InterruptedException e) {
- fail("test execution exceeded treshold of " + maxWait + " milliseconds");
- }
- finally {
- timer.cancel();
- }
- }
+ protected int getNbrOfJobsAvailable()
+ {
+ if (session != null)
+ {
+ return getNbrOfJobsAvailable(session);
+ }
+ else
+ {
+ beginSessionTransaction();
+ try
+ {
+ return getNbrOfJobsAvailable(session);
+ }
+ finally
+ {
+ commitAndCloseSession();
+ }
+ }
+ }
- protected int getNbrOfJobsAvailable() {
- if(session != null) {
- return getNbrOfJobsAvailable(session);
- }
- else {
- beginSessionTransaction();
- try {
- return getNbrOfJobsAvailable(session);
- }
- finally {
- commitAndCloseSession();
- }
- }
- }
+ private int getNbrOfJobsAvailable(Session session)
+ {
+ int nbrOfJobsAvailable = 0;
+ Number jobs = (Number)session.createQuery("select count(*) from org.jbpm.job.Job").uniqueResult();
+ log.debug("there are '" + jobs + "' jobs currently in the job table");
+ if (jobs != null)
+ {
+ nbrOfJobsAvailable = jobs.intValue();
+ }
+ return nbrOfJobsAvailable;
+ }
- private int getNbrOfJobsAvailable(Session session) {
- int nbrOfJobsAvailable = 0;
- Number jobs = (Number) session.createQuery(
- "select count(*) from org.jbpm.job.Job").uniqueResult();
- log.debug("there are '" + jobs + "' jobs currently in the job table");
- if(jobs != null) {
- nbrOfJobsAvailable = jobs.intValue();
- }
- return nbrOfJobsAvailable;
- }
+ protected boolean areJobsAvailable()
+ {
+ return (getNbrOfJobsAvailable() > 0);
+ }
- protected boolean areJobsAvailable() {
- return(getNbrOfJobsAvailable() > 0);
- }
+ protected Job getJob()
+ {
+ return (Job)session.createQuery("from org.jbpm.job.Job").uniqueResult();
+ }
- protected Job getJob() {
- return (Job) session.createQuery("from org.jbpm.job.Job").uniqueResult();
- }
+ protected void processJobs(long maxWait)
+ {
+ processJobs(maxWait, 0);
+ }
- protected void processJobs(long maxWait) {
- processJobs(maxWait, 0);
- }
+ protected void processJobs(long maxWait, int maxJobs)
+ {
+ commitAndCloseSession();
+ try
+ {
+ Thread.sleep(300);
+ }
+ catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+ startJobExecutor();
+ try
+ {
+ processAllJobs(maxWait, maxJobs);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ throw new RuntimeException(e);
+ }
+ finally
+ {
+ stopJobExecutor();
+ beginSessionTransaction();
+ }
+ }
- protected void processJobs(long maxWait, int maxJobs) {
- commitAndCloseSession();
- try {
- Thread.sleep(300);
- }
- catch(InterruptedException e) {
- e.printStackTrace();
- }
- startJobExecutor();
- try {
- processAllJobs(maxWait, maxJobs);
- }
- catch(Exception e) {
- e.printStackTrace();
- throw new RuntimeException(e);
- }
- finally {
- stopJobExecutor();
- beginSessionTransaction();
- }
- }
+ protected void stopJobExecutor()
+ {
+ if (jobExecutor != null)
+ {
+ try
+ {
+ jobExecutor.stopAndJoin();
+ }
+ catch (InterruptedException e)
+ {
+ throw new RuntimeException("waiting for job executor to stop and join got interrupted", e);
+ }
+ }
+ }
- protected void stopJobExecutor() {
- if(jobExecutor != null) {
- try {
- jobExecutor.stopAndJoin();
- }
- catch(InterruptedException e) {
- throw new RuntimeException(
- "waiting for job executor to stop and join got interrupted", e);
- }
- }
- }
+ protected void initializeMembers()
+ {
+ session = jbpmContext.getSession();
+ graphSession = jbpmContext.getGraphSession();
+ taskMgmtSession = jbpmContext.getTaskMgmtSession();
+ loggingSession = jbpmContext.getLoggingSession();
+ jobSession = jbpmContext.getJobSession();
+ contextSession = jbpmContext.getContextSession();
+ }
- protected void initializeMembers() {
- session = jbpmContext.getSession();
- graphSession = jbpmContext.getGraphSession();
- taskMgmtSession = jbpmContext.getTaskMgmtSession();
- loggingSession = jbpmContext.getLoggingSession();
- jobSession = jbpmContext.getJobSession();
- contextSession = jbpmContext.getContextSession();
- }
+ protected void resetMembers()
+ {
+ session = null;
+ graphSession = null;
+ taskMgmtSession = null;
+ loggingSession = null;
+ jobSession = null;
+ contextSession = null;
+ }
- protected void resetMembers() {
- session = null;
- graphSession = null;
- taskMgmtSession = null;
- loggingSession = null;
- jobSession = null;
- contextSession = null;
- }
-
- private static Log log = LogFactory.getLog(AbstractDbTestCase.class);
+ private static Log log = LogFactory.getLog(AbstractDbTestCase.class);
}
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/JbpmSchema.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/JbpmSchema.java 2008-09-11 19:04:35 UTC (rev 2181)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/JbpmSchema.java 2008-09-11 22:59:00 UTC (rev 2182)
@@ -54,14 +54,15 @@
import org.jbpm.JbpmException;
/**
- * utilities for the jBPM database schema.
+ * utilities for the jBPM database schema.
*/
-public class JbpmSchema implements Serializable {
-
+public class JbpmSchema implements Serializable
+{
+
private static final long serialVersionUID = 1L;
static final String JBPM_TABLE_PREFIX = "JBPM_";
-
+
Configuration configuration = null;
Properties properties = null;
Dialect dialect = null;
@@ -74,58 +75,68 @@
Connection connection = null;
Statement statement = null;
- public JbpmSchema(Configuration configuration) {
+ public JbpmSchema(Configuration configuration)
+ {
this.configuration = configuration;
this.properties = configuration.getProperties();
this.dialect = Dialect.getDialect(properties);
- try {
+ try
+ {
// get the mapping field via reflection :-(
Field mappingField = Configuration.class.getDeclaredField("mapping");
mappingField.setAccessible(true);
- this.mapping = (Mapping) mappingField.get(configuration);
- } catch (Exception e) {
+ this.mapping = (Mapping)mappingField.get(configuration);
+ }
+ catch (Exception e)
+ {
throw new JbpmException("couldn't get the hibernate mapping", e);
}
}
- public String[] getCreateSql() {
- if (createSql==null) {
+ public String[] getCreateSql()
+ {
+ if (createSql == null)
+ {
createSql = configuration.generateSchemaCreationScript(dialect);
}
return createSql;
}
-
- public String[] getDropSql() {
- if (dropSql==null) {
+
+ public String[] getDropSql()
+ {
+ if (dropSql == null)
+ {
dropSql = configuration.generateDropSchemaScript(dialect);
}
return dropSql;
}
-
- public String[] getCleanSql() {
- if (cleanSql==null) {
+
+ public String[] getCleanSql()
+ {
+ if (cleanSql == null)
+ {
// loop over all foreign key constraints
List dropForeignKeysSql = new ArrayList();
List createForeignKeysSql = new ArrayList();
Iterator iter = configuration.getTableMappings();
- while ( iter.hasNext() ) {
- Table table = ( Table ) iter.next();
- if ( table.isPhysicalTable() ) {
+ while (iter.hasNext())
+ {
+ Table table = (Table)iter.next();
+ if (table.isPhysicalTable())
+ {
Iterator subIter = table.getForeignKeyIterator();
- while ( subIter.hasNext() ) {
- ForeignKey fk = ( ForeignKey ) subIter.next();
- if ( fk.isPhysicalConstraint() ) {
+ while (subIter.hasNext())
+ {
+ ForeignKey fk = (ForeignKey)subIter.next();
+ //if (fk.getReferencedTable() != null && fk.isPhysicalConstraint())
+ if (fk.isPhysicalConstraint())
+ {
// collect the drop foreign key constraint sql
- dropForeignKeysSql.add( fk.sqlDropString(
- dialect,
- properties.getProperty(Environment.DEFAULT_CATALOG),
- properties.getProperty(Environment.DEFAULT_SCHEMA) ) );
+ dropForeignKeysSql
+ .add(fk.sqlDropString(dialect, properties.getProperty(Environment.DEFAULT_CATALOG), properties.getProperty(Environment.DEFAULT_SCHEMA)));
// and collect the create foreign key constraint sql
- createForeignKeysSql.add( fk.sqlCreateString(
- dialect,
- mapping,
- properties.getProperty(Environment.DEFAULT_CATALOG),
- properties.getProperty(Environment.DEFAULT_SCHEMA) ) );
+ createForeignKeysSql.add(fk.sqlCreateString(dialect, mapping, properties.getProperty(Environment.DEFAULT_CATALOG), properties
+ .getProperty(Environment.DEFAULT_SCHEMA)));
}
}
}
@@ -133,100 +144,126 @@
List deleteSql = new ArrayList();
iter = configuration.getTableMappings();
- while (iter.hasNext()) {
- Table table = (Table) iter.next();
- deleteSql.add("delete from "+table.getName());
+ while (iter.hasNext())
+ {
+ Table table = (Table)iter.next();
+ deleteSql.add("delete from " + table.getName());
}
// glue
- // - drop foreign key constraints
- // - delete contents of all tables
- // - create foreign key constraints
+ // - drop foreign key constraints
+ // - delete contents of all tables
+ // - create foreign key constraints
// together to form the clean script
List cleanSqlList = new ArrayList();
cleanSqlList.addAll(dropForeignKeysSql);
cleanSqlList.addAll(deleteSql);
cleanSqlList.addAll(createForeignKeysSql);
-
- cleanSql = (String[]) cleanSqlList.toArray(new String[cleanSqlList.size()]);
+
+ cleanSql = (String[])cleanSqlList.toArray(new String[cleanSqlList.size()]);
}
return cleanSql;
}
- public boolean hasJbpmTables() {
- return (getJbpmTables().size()>0);
+ public boolean hasJbpmTables()
+ {
+ return (getJbpmTables().size() > 0);
}
- public List getJbpmTables() {
+ public List getJbpmTables()
+ {
// delete all the data in the jbpm tables
List jbpmTableNames = new ArrayList();
- try {
+ try
+ {
createConnection();
ResultSet resultSet = connection.getMetaData().getTables(null, null, null, null);
- while(resultSet.next()) {
+ while (resultSet.next())
+ {
String tableName = resultSet.getString("TABLE_NAME");
- if ( (tableName!=null)
- && (tableName.length()>5)
- && (JBPM_TABLE_PREFIX.equalsIgnoreCase(tableName.substring(0,5))) ) {
+ if ((tableName != null) && (tableName.length() > 5) && (JBPM_TABLE_PREFIX.equalsIgnoreCase(tableName.substring(0, 5))))
+ {
jbpmTableNames.add(tableName);
}
}
- } catch (SQLException e) {
+ }
+ catch (SQLException e)
+ {
throw new JbpmException("couldn't get the jbpm table names");
- } finally {
+ }
+ finally
+ {
closeConnection();
}
return jbpmTableNames;
}
-
- public void dropSchema() {
- execute( getDropSql() );
+
+ public void dropSchema()
+ {
+ execute(getDropSql());
}
- public void createSchema() {
- execute( getCreateSql() );
+ public void createSchema()
+ {
+ execute(getCreateSql());
}
- public void cleanSchema() {
- execute( getCleanSql() );
+ public void cleanSchema()
+ {
+ if (getJbpmTables().size() > 0)
+ execute(getCleanSql());
}
- public void saveSqlScripts(String dir, String prefix) {
- try {
+ public void saveSqlScripts(String dir, String prefix)
+ {
+ try
+ {
new File(dir).mkdirs();
- saveSqlScript(dir+"/"+prefix+".drop.sql", getDropSql());
- saveSqlScript(dir+"/"+prefix+".create.sql", getCreateSql());
- saveSqlScript(dir+"/"+prefix+".clean.sql", getCleanSql());
- new SchemaExport(configuration)
- .setDelimiter(getSqlDelimiter())
- .setOutputFile(dir+"/"+prefix+".drop.create.sql")
- .create(true, false);
- } catch (IOException e) {
+ saveSqlScript(dir + "/" + prefix + ".drop.sql", getDropSql());
+ saveSqlScript(dir + "/" + prefix + ".create.sql", getCreateSql());
+ saveSqlScript(dir + "/" + prefix + ".clean.sql", getCleanSql());
+ new SchemaExport(configuration).setDelimiter(getSqlDelimiter()).setOutputFile(dir + "/" + prefix + ".drop.create.sql").create(true, false);
+ }
+ catch (IOException e)
+ {
throw new JbpmException("couldn't generate scripts", e);
}
}
- public static void main(String[] args) {
- if ( (args==null) || (args.length==0) ) {
+ public static void main(String[] args)
+ {
+ if ((args == null) || (args.length == 0))
+ {
syntax();
- } else if ("create".equalsIgnoreCase(args[0]) && args.length <= 3) {
+ }
+ else if ("create".equalsIgnoreCase(args[0]) && args.length <= 3)
+ {
Configuration configuration = createConfiguration(args, 1);
new JbpmSchema(configuration).createSchema();
- } else if ("drop".equalsIgnoreCase(args[0]) && args.length <= 3) {
+ }
+ else if ("drop".equalsIgnoreCase(args[0]) && args.length <= 3)
+ {
Configuration configuration = createConfiguration(args, 1);
new JbpmSchema(configuration).dropSchema();
- } else if ("clean".equalsIgnoreCase(args[0]) && args.length <= 3) {
+ }
+ else if ("clean".equalsIgnoreCase(args[0]) && args.length <= 3)
+ {
Configuration configuration = createConfiguration(args, 1);
new JbpmSchema(configuration).cleanSchema();
- } else if ("scripts".equalsIgnoreCase(args[0]) && args.length >= 3 && args.length <= 5) {
+ }
+ else if ("scripts".equalsIgnoreCase(args[0]) && args.length >= 3 && args.length <= 5)
+ {
Configuration configuration = createConfiguration(args, 3);
new JbpmSchema(configuration).saveSqlScripts(args[1], args[2]);
- } else {
+ }
+ else
+ {
syntax();
}
}
- private static void syntax() {
+ private static void syntax()
+ {
System.err.println("syntax:");
System.err.println("JbpmSchema create [<hibernate.cfg.xml> [<hibernate.properties>]]");
System.err.println("JbpmSchema drop [<hibernate.cfg.xml> [<hibernate.properties>]]");
@@ -234,105 +271,139 @@
System.err.println("JbpmSchema scripts <dir> <prefix> [<hibernate.cfg.xml> [<hibernate.properties>]]");
}
- static Configuration createConfiguration(String[] args, int index) {
- String hibernateCfgXml = (args.length>index ? args[index] : "hibernate.cfg.xml");
- String hibernateProperties = (args.length>(index+1) ? args[index+1] : null);
-
+ static Configuration createConfiguration(String[] args, int index)
+ {
+ String hibernateCfgXml = (args.length > index ? args[index] : "hibernate.cfg.xml");
+ String hibernateProperties = (args.length > (index + 1) ? args[index + 1] : null);
+
Configuration configuration = new Configuration();
configuration.configure(new File(hibernateCfgXml));
- if (hibernateProperties!=null) {
- try {
+ if (hibernateProperties != null)
+ {
+ try
+ {
Properties properties = new Properties();
InputStream inputStream = new FileInputStream(hibernateProperties);
properties.load(inputStream);
configuration.setProperties(properties);
- } catch (IOException e) {
+ }
+ catch (IOException e)
+ {
throw new JbpmException("couldn't load hibernate configuration", e);
}
}
-
+
return configuration;
}
- void saveSqlScript(String fileName, String[] sql) throws FileNotFoundException {
+ void saveSqlScript(String fileName, String[] sql) throws FileNotFoundException
+ {
FileOutputStream fileOutputStream = new FileOutputStream(fileName);
- try {
+ try
+ {
PrintStream printStream = new PrintStream(fileOutputStream);
- for (int i=0; i<sql.length; i++) {
- printStream.println(sql[i]+getSqlDelimiter());
+ for (int i = 0; i < sql.length; i++)
+ {
+ printStream.println(sql[i] + getSqlDelimiter());
}
- } finally {
- try {
- fileOutputStream.close();
- } catch (IOException e) {
+ }
+ finally
+ {
+ try
+ {
+ fileOutputStream.close();
+ }
+ catch (IOException e)
+ {
log.debug("failed to close file", e);
}
}
}
- public void execute(String[] sqls) {
+ public void execute(String[] sqls)
+ {
String sql = null;
String showSqlText = properties.getProperty("hibernate.show_sql");
boolean showSql = ("true".equalsIgnoreCase(showSqlText));
- try {
+ try
+ {
createConnection();
statement = connection.createStatement();
-
- for (int i=0; i<sqls.length; i++) {
+
+ for (int i = 0; i < sqls.length; i++)
+ {
sql = sqls[i];
-
- if (showSql) log.debug(sql);
+
+ if (showSql)
+ log.debug(sql);
statement.executeUpdate(sql);
}
-
- } catch (SQLException e) {
- throw new JbpmException("couldn't execute sql '"+sql+"'", e);
- } finally {
+
+ }
+ catch (SQLException e)
+ {
+ throw new JbpmException("couldn't execute sql '" + sql + "'", e);
+ }
+ finally
+ {
closeConnection();
}
}
- void closeConnection() {
- if (statement!=null) {
- try {
+ void closeConnection()
+ {
+ if (statement != null)
+ {
+ try
+ {
statement.close();
}
- catch (SQLException e) {
+ catch (SQLException e)
+ {
log.debug("could not close jdbc statement", e);
}
}
- if (connection!=null) {
- try {
- JDBCExceptionReporter.logWarnings( connection.getWarnings() );
+ if (connection != null)
+ {
+ try
+ {
+ JDBCExceptionReporter.logWarnings(connection.getWarnings());
connection.clearWarnings();
connectionProvider.closeConnection(connection);
connectionProvider.close();
}
- catch (SQLException e) {
+ catch (SQLException e)
+ {
log.debug("could not close jdbc connection", e);
}
}
}
- void createConnection() throws SQLException {
+ void createConnection() throws SQLException
+ {
connectionProvider = ConnectionProviderFactory.newConnectionProvider(properties);
connection = connectionProvider.getConnection();
- if ( !connection.getAutoCommit() ) {
+ if (!connection.getAutoCommit())
+ {
connection.commit();
connection.setAutoCommit(true);
}
}
- public Properties getProperties() {
+ public Properties getProperties()
+ {
return properties;
}
// sql delimiter ////////////////////////////////////////////////////////////
-
+
static String sqlDelimiter = null;
- synchronized String getSqlDelimiter() {
- if (sqlDelimiter==null) {
+
+ synchronized String getSqlDelimiter()
+ {
+ if (sqlDelimiter == null)
+ {
sqlDelimiter = properties.getProperty("jbpm.sql.delimiter", ";");
}
return sqlDelimiter;
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/persistence/db/DbPersistenceServiceFactory.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/persistence/db/DbPersistenceServiceFactory.java 2008-09-11 19:04:35 UTC (rev 2181)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/persistence/db/DbPersistenceServiceFactory.java 2008-09-11 22:59:00 UTC (rev 2182)
@@ -29,12 +29,14 @@
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.jbpm.JbpmConfiguration;
+import org.jbpm.db.JbpmSchema;
import org.jbpm.db.hibernate.HibernateHelper;
import org.jbpm.svc.Service;
import org.jbpm.svc.ServiceFactory;
import org.jbpm.util.JndiUtil;
-public class DbPersistenceServiceFactory implements ServiceFactory {
+public class DbPersistenceServiceFactory implements ServiceFactory
+{
private static final long serialVersionUID = 1L;
@@ -42,7 +44,7 @@
String sessionFactoryJndiName = null;
SessionFactory sessionFactory = null;
-
+
String dataSourceJndiName = null;
DataSource dataSource = null;
@@ -51,19 +53,24 @@
SchemaExport schemaExport = null;
- public Service openService() {
+ public Service openService()
+ {
log.debug("creating persistence service");
return new DbPersistenceService(this);
}
- public synchronized Configuration getConfiguration() {
- if (configuration==null) {
+ public synchronized Configuration getConfiguration()
+ {
+ if (configuration == null)
+ {
String hibernateCfgXmlResource = null;
- if (JbpmConfiguration.Configs.hasObject("resource.hibernate.cfg.xml")) {
+ if (JbpmConfiguration.Configs.hasObject("resource.hibernate.cfg.xml"))
+ {
hibernateCfgXmlResource = JbpmConfiguration.Configs.getString("resource.hibernate.cfg.xml");
}
String hibernatePropertiesResource = null;
- if (JbpmConfiguration.Configs.hasObject("resource.hibernate.properties")) {
+ if (JbpmConfiguration.Configs.hasObject("resource.hibernate.properties"))
+ {
hibernatePropertiesResource = JbpmConfiguration.Configs.getString("resource.hibernate.properties");
}
configuration = HibernateHelper.createConfiguration(hibernateCfgXmlResource, hibernatePropertiesResource);
@@ -71,102 +78,143 @@
return configuration;
}
- public synchronized SchemaExport getSchemaExport() {
- if (schemaExport==null) {
+ public synchronized SchemaExport getSchemaExport()
+ {
+ if (schemaExport == null)
+ {
log.debug("creating schema export");
schemaExport = new SchemaExport(getConfiguration());
}
return schemaExport;
}
- public synchronized SessionFactory getSessionFactory() {
- if (sessionFactory==null) {
+ public synchronized SessionFactory getSessionFactory()
+ {
+ if (sessionFactory == null)
+ {
- if (sessionFactoryJndiName!=null) {
- log.debug("looking up hibernate session factory in jndi '"+sessionFactoryJndiName+"'");
- sessionFactory = (SessionFactory) JndiUtil.lookup(sessionFactoryJndiName, SessionFactory.class);
-
- } else {
+ if (sessionFactoryJndiName != null)
+ {
+ log.debug("looking up hibernate session factory in jndi '" + sessionFactoryJndiName + "'");
+ sessionFactory = (SessionFactory)JndiUtil.lookup(sessionFactoryJndiName, SessionFactory.class);
+
+ }
+ else
+ {
log.debug("building hibernate session factory");
sessionFactory = getConfiguration().buildSessionFactory();
}
}
return sessionFactory;
}
-
- public DataSource getDataSource() {
- if ( (dataSource==null)
- && (dataSourceJndiName!=null)
- ) {
- log.debug("looking up datasource from jndi location '"+dataSourceJndiName+"'");
- dataSource = (DataSource) JndiUtil.lookup(dataSourceJndiName, DataSource.class);
+
+ public DataSource getDataSource()
+ {
+ if ((dataSource == null) && (dataSourceJndiName != null))
+ {
+ log.debug("looking up datasource from jndi location '" + dataSourceJndiName + "'");
+ dataSource = (DataSource)JndiUtil.lookup(dataSourceJndiName, DataSource.class);
}
return dataSource;
}
-
- public void createSchema() {
+
+ public void cleanSchema()
+ {
+ new JbpmSchema(getConfiguration()).cleanSchema();
+ HibernateHelper.clearHibernateCache(getSessionFactory());
+ }
+
+ public void createSchema()
+ {
getSchemaExport().create(getScript(), true);
HibernateHelper.clearHibernateCache(getSessionFactory());
}
-
- public void dropSchema() {
+
+ public void dropSchema()
+ {
HibernateHelper.clearHibernateCache(getSessionFactory());
getSchemaExport().drop(getScript(), true);
}
- boolean getScript() {
+ boolean getScript()
+ {
boolean script = false;
String showSql = getConfiguration().getProperty("hibernate.show_sql");
- if ("true".equalsIgnoreCase(showSql)) {
+ if ("true".equalsIgnoreCase(showSql))
+ {
script = true;
}
return script;
}
- public void close() {
- if (sessionFactory!=null) {
+ public void close()
+ {
+ if (sessionFactory != null)
+ {
log.debug("closing hibernate session factory");
sessionFactory.close();
}
}
- public String getDataSourceJndiName() {
+ public String getDataSourceJndiName()
+ {
return dataSourceJndiName;
}
- public void setDataSourceJndiName(String dataSourceJndiName) {
+
+ public void setDataSourceJndiName(String dataSourceJndiName)
+ {
this.dataSourceJndiName = dataSourceJndiName;
}
- public String getSessionFactoryJndiName() {
+
+ public String getSessionFactoryJndiName()
+ {
return sessionFactoryJndiName;
}
- public void setSessionFactoryJndiName(String sessionFactoryJndiName) {
+
+ public void setSessionFactoryJndiName(String sessionFactoryJndiName)
+ {
this.sessionFactoryJndiName = sessionFactoryJndiName;
}
- public void setConfiguration(Configuration configuration) {
+
+ public void setConfiguration(Configuration configuration)
+ {
this.configuration = configuration;
}
- public void setDataSource(DataSource dataSource) {
+
+ public void setDataSource(DataSource dataSource)
+ {
this.dataSource = dataSource;
}
- public void setSchemaExport(SchemaExport schemaExport) {
+
+ public void setSchemaExport(SchemaExport schemaExport)
+ {
this.schemaExport = schemaExport;
}
- public void setSessionFactory(SessionFactory sessionFactory) {
+
+ public void setSessionFactory(SessionFactory sessionFactory)
+ {
this.sessionFactory = sessionFactory;
}
- public boolean isTransactionEnabled() {
+
+ public boolean isTransactionEnabled()
+ {
return isTransactionEnabled;
}
- public void setTransactionEnabled(boolean isTransactionEnabled) {
+
+ public void setTransactionEnabled(boolean isTransactionEnabled)
+ {
this.isTransactionEnabled = isTransactionEnabled;
}
- public boolean isCurrentSessionEnabled() {
+
+ public boolean isCurrentSessionEnabled()
+ {
return isCurrentSessionEnabled;
}
- public void setCurrentSessionEnabled(boolean isCurrentSessionEnabled) {
+
+ public void setCurrentSessionEnabled(boolean isCurrentSessionEnabled)
+ {
this.isCurrentSessionEnabled = isCurrentSessionEnabled;
}
private static Log log = LogFactory.getLog(DbPersistenceServiceFactory.class);
}
-
Modified: jbpm3/trunk/modules/core/src/main/resources/hibernate.common.xml
===================================================================
--- jbpm3/trunk/modules/core/src/main/resources/hibernate.common.xml 2008-09-11 19:04:35 UTC (rev 2181)
+++ jbpm3/trunk/modules/core/src/main/resources/hibernate.common.xml 2008-09-11 22:59:00 UTC (rev 2182)
@@ -17,6 +17,9 @@
<!-- # common settings # -->
<!-- ################################### -->
+ <!-- Create schema on demand -->
+ <property name="hibernate.hbm2ddl.auto">create</property>
+
<!-- Simple memory-only cache -->
<property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
Modified: jbpm3/trunk/modules/core/src/test/java/org/jbpm/jbpm1106/JBPM1106Test.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/jbpm1106/JBPM1106Test.java 2008-09-11 19:04:35 UTC (rev 2181)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/jbpm1106/JBPM1106Test.java 2008-09-11 22:59:00 UTC (rev 2182)
@@ -40,8 +40,7 @@
*/
public class JBPM1106Test extends AbstractDbTestCase
{
-
- private static CommandService commandService = new CommandServiceImpl(jbpmConfiguration);
+ private CommandService commandService = new CommandServiceImpl(getJbpmConfiguration());
private ProcessDefinition processDefinition;
public void setUp() throws Exception
Modified: jbpm3/trunk/modules/core/src/test/java/org/jbpm/jcr/JcrDbTest.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/jcr/JcrDbTest.java 2008-09-11 19:04:35 UTC (rev 2181)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/jcr/JcrDbTest.java 2008-09-11 22:59:00 UTC (rev 2182)
@@ -36,41 +36,40 @@
*
* @author Jim Rigsbee, Tom Baeyens
*/
-public class JcrDbTest extends AbstractDbTestCase {
-
- public static JbpmConfiguration jbpmJcrConfiguration =
- JbpmConfiguration.parseResource("org/jbpm/jcr/jbpm.jcr.cfg.xml");
-
- protected JbpmConfiguration getJbpmConfiguration() {
- return jbpmJcrConfiguration;
+public class JcrDbTest extends AbstractDbTestCase
+{
+
+ @Override
+ protected JbpmConfiguration getJbpmConfiguration()
+ {
+ return JbpmConfiguration.parseResource("org/jbpm/jcr/jbpm.jcr.cfg.xml");
}
- public void testJcrNodeStorageAndRetrieval() throws Exception {
+ public void testJcrNodeStorageAndRetrieval() throws Exception
+ {
deployDocumentApprovalProcess();
newTransaction();
-
+
ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("document approval");
- JcrService jcrService = (JcrService) jbpmContext.getServices().getService(Services.SERVICENAME_JCR);
+ JcrService jcrService = (JcrService)jbpmContext.getServices().getService(Services.SERVICENAME_JCR);
assertNotNull(jcrService);
Session session = jcrService.getSession();
Node rootNode = session.getRootNode();
- Node processInstanceNode = rootNode.addNode("process"+processInstance.getId());
+ Node processInstanceNode = rootNode.addNode("process" + processInstance.getId());
Node documentNode = processInstanceNode.addNode("document");
ContextInstance contextInstance = processInstance.getContextInstance();
contextInstance.setVariable("document", documentNode);
-
+
newTransaction();
}
- public void deployDocumentApprovalProcess() {
- ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
- "<process-definition name='document approval'>" +
- " <start-state name='start' />" +
- "</process-definition>"
- );
+ public void deployDocumentApprovalProcess()
+ {
+ ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='document approval'>" + " <start-state name='start' />"
+ + "</process-definition>");
jbpmContext.deployProcessDefinition(processDefinition);
}
}
Modified: jbpm3/trunk/modules/core/src/test/java/org/jbpm/logging/exe/LoggingConfigDbTest.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/logging/exe/LoggingConfigDbTest.java 2008-09-11 19:04:35 UTC (rev 2181)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/logging/exe/LoggingConfigDbTest.java 2008-09-11 22:59:00 UTC (rev 2182)
@@ -8,6 +8,7 @@
public class LoggingConfigDbTest extends AbstractDbTestCase {
+ @Override
protected JbpmConfiguration getJbpmConfiguration() {
return JbpmConfiguration.parseResource("org/jbpm/logging/exe/nologging.jbpm.cfg.xml");
}
Modified: jbpm3/trunk/modules/core/src/test/java/org/jbpm/optimisticlocking/LockingTest.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/optimisticlocking/LockingTest.java 2008-09-11 19:04:35 UTC (rev 2181)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/optimisticlocking/LockingTest.java 2008-09-11 22:59:00 UTC (rev 2182)
@@ -4,8 +4,6 @@
import java.util.Iterator;
import java.util.List;
-import junit.framework.TestCase;
-
import org.hibernate.Query;
import org.hibernate.Session;
import org.jbpm.JbpmConfiguration;
@@ -14,13 +12,9 @@
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.Comment;
import org.jbpm.graph.exe.ProcessInstance;
-import org.jbpm.persistence.db.DbPersistenceServiceFactory;
-public class LockingTest extends TestCase
+public class LockingTest extends AbstractDbTestCase
{
-
- static JbpmConfiguration jbpmConfiguration = AbstractDbTestCase.getDbTestJbpmConfiguration();
-
static int nbrOfThreads = 5;
static int nbrOfIterations = 20;
@@ -33,11 +27,16 @@
// start state, and that signal will bring the process to it's end state.
// It's the second transaction for which we'll set up multiple competing threads
- ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='lockprocess'>" + " <start-state name='start'>"
- + " <transition to='end'/>" + " </start-state>" + " <end-state name='end' />" + "</process-definition>");
+ ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
+ "<process-definition name='lockprocess'>" +
+ " <start-state name='start'>" +
+ " <transition to='end'/>" +
+ " </start-state>" +
+ " <end-state name='end' />" +
+ "</process-definition>");
// deploy the process
- JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
+ JbpmContext jbpmContext = getJbpmConfiguration().createJbpmContext();
try
{
jbpmContext.deployProcessDefinition(processDefinition);
@@ -50,7 +49,6 @@
public void testLocking()
{
- createSchema();
deployProcess();
for (int i = 0; i < nbrOfIterations; i++)
@@ -72,7 +70,7 @@
joinAllThreads(threads);
// check that only 1 of those threads committed
- JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
+ JbpmContext jbpmContext = getJbpmConfiguration().createJbpmContext();
try
{
Session session = jbpmContext.getSession();
@@ -91,7 +89,7 @@
}
// check that the process instance has ended
- jbpmContext = jbpmConfiguration.createJbpmContext();
+ jbpmContext = getJbpmConfiguration().createJbpmContext();
try
{
ProcessInstance processInstance = jbpmContext.loadProcessInstance(processInstanceId);
@@ -107,7 +105,7 @@
private long launchProcessInstance()
{
- JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
+ JbpmContext jbpmContext = getJbpmConfiguration().createJbpmContext();
try
{
return jbpmContext.newProcessInstance("lockprocess").getId();
@@ -123,7 +121,7 @@
List threads = new ArrayList();
for (int i = 0; i < nbrOfThreads; i++)
{
- Thread thread = new LockThread(semaphore, processInstanceId);
+ Thread thread = new LockThread(getJbpmConfiguration(), semaphore, processInstanceId);
thread.start();
threads.add(thread);
}
@@ -145,11 +143,13 @@
{
Object semaphore;
long processInstanceId;
+ JbpmConfiguration jbpmConfiguration;
- public LockThread(Object semaphore, long processInstanceId)
+ public LockThread(JbpmConfiguration jbpmConfiguration, Object semaphore, long processInstanceId)
{
this.semaphore = semaphore;
this.processInstanceId = processInstanceId;
+ this.jbpmConfiguration = jbpmConfiguration;
}
public void run()
@@ -214,12 +214,4 @@
}
}
}
-
- private void createSchema()
- {
- // create the jbpm schema
- DbPersistenceServiceFactory persistenceServiceFactory = (DbPersistenceServiceFactory)jbpmConfiguration.getServiceFactory("persistence");
- persistenceServiceFactory.createSchema();
- }
-
}
17 years, 7 months
JBoss JBPM SVN: r2181 - jbpm4/pvm/trunk/modules/manual/src/main/diagrams.
by do-not-reply@jboss.org
Author: tom.baeyens(a)jboss.com
Date: 2008-09-11 15:04:35 -0400 (Thu, 11 Sep 2008)
New Revision: 2181
Modified:
jbpm4/pvm/trunk/modules/manual/src/main/diagrams/diagrams.mdzip
Log:
added diagram
Modified: jbpm4/pvm/trunk/modules/manual/src/main/diagrams/diagrams.mdzip
===================================================================
(Binary files differ)
17 years, 7 months
JBoss JBPM SVN: r2180 - jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/api/db/embedded.
by do-not-reply@jboss.org
Author: tom.baeyens(a)jboss.com
Date: 2008-09-11 09:39:20 -0400 (Thu, 11 Sep 2008)
New Revision: 2180
Modified:
jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/api/db/embedded/Order.java
Log:
changed wait state objects to class references
Modified: jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/api/db/embedded/Order.java
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/api/db/embedded/Order.java 2008-09-11 13:38:54 UTC (rev 2179)
+++ jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/api/db/embedded/Order.java 2008-09-11 13:39:20 UTC (rev 2180)
@@ -52,14 +52,14 @@
ClientProcessDefinition processDefinition = ProcessFactory.build("order")
.node("arrived").initial().behaviour(WaitState.class)
.transition("receive").to("validate")
- .node("validate").behaviour(new WaitState())
+ .node("validate").behaviour(WaitState.class)
.transition("approve").to("ship goods")
.transition("reject").to("end")
- .node("ship goods").behaviour(new WaitState())
+ .node("ship goods").behaviour(WaitState.class)
.transition("payment received").to("archive")
- .node("archive").behaviour(new WaitState())
+ .node("archive").behaviour(WaitState.class)
.transition("archived").to("end")
- .node("end").behaviour(new WaitState())
+ .node("end").behaviour(WaitState.class)
.done();
return processDefinition;
17 years, 7 months
JBoss JBPM SVN: r2179 - in jbpm4/pvm/trunk/modules/manual/src/main: diagrams and 3 other directories.
by do-not-reply@jboss.org
Author: tom.baeyens(a)jboss.com
Date: 2008-09-11 09:38:54 -0400 (Thu, 11 Sep 2008)
New Revision: 2179
Added:
jbpm4/pvm/trunk/modules/manual/src/main/diagrams/
jbpm4/pvm/trunk/modules/manual/src/main/diagrams/diagrams.mdzip
jbpm4/pvm/trunk/modules/manual/src/main/diagrams/models.uml
jbpm4/pvm/trunk/modules/manual/src/main/docbook/en/images/order.process.png
Modified:
jbpm4/pvm/trunk/modules/manual/src/main/docbook/en/master.xml
jbpm4/pvm/trunk/modules/manual/src/main/docbook/en/modules/ch01-Introduction.xml
jbpm4/pvm/trunk/modules/manual/src/main/docbook/en/modules/ch03-Environments.xml
Log:
docs updates
Added: jbpm4/pvm/trunk/modules/manual/src/main/diagrams/diagrams.mdzip
===================================================================
(Binary files differ)
Property changes on: jbpm4/pvm/trunk/modules/manual/src/main/diagrams/diagrams.mdzip
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: jbpm4/pvm/trunk/modules/manual/src/main/diagrams/models.uml
===================================================================
--- jbpm4/pvm/trunk/modules/manual/src/main/diagrams/models.uml (rev 0)
+++ jbpm4/pvm/trunk/modules/manual/src/main/diagrams/models.uml 2008-09-11 13:38:54 UTC (rev 2179)
@@ -0,0 +1,510 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XPD:PROJECT xmlns:XPD="http://www.staruml.com" version="1">
+<XPD:HEADER>
+<XPD:SUBUNITS>
+</XPD:SUBUNITS>
+<XPD:PROFILES>
+<XPD:PROFILE>ERD</XPD:PROFILE>
+<XPD:PROFILE>UMLStandard</XPD:PROFILE>
+</XPD:PROFILES>
+</XPD:HEADER>
+<XPD:BODY>
+<XPD:OBJ name="DocumentElement" type="UMLProject" guid="CqZZuWhrLkmNpzJ7OuF7+wAA">
+<XPD:ATTR name="Title" type="string">Untitled</XPD:ATTR>
+<XPD:ATTR name="#OwnedElements" type="integer">5</XPD:ATTR>
+<XPD:OBJ name="OwnedElements[0]" type="UMLModel" guid="UJwm4YTvgEyPxr4mzKht+wAA">
+<XPD:ATTR name="Name" type="string">Use Case Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">useCaseModel</XPD:ATTR>
+<XPD:REF name="Namespace">CqZZuWhrLkmNpzJ7OuF7+wAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLUseCaseDiagram" guid="qRhS+Vsd0Uah/vdlnU+zbgAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:REF name="DiagramOwner">UJwm4YTvgEyPxr4mzKht+wAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLUseCaseDiagramView" guid="d21DKYayK02RKOCo1bk1SAAA">
+<XPD:REF name="Diagram">qRhS+Vsd0Uah/vdlnU+zbgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[1]" type="UMLModel" guid="rSdW7/9V2k2u8Xmz/5+tygAA">
+<XPD:ATTR name="Name" type="string">Analysis Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">analysisModel</XPD:ATTR>
+<XPD:REF name="Namespace">CqZZuWhrLkmNpzJ7OuF7+wAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLClassDiagram" guid="K2BzGxUNGku96Pi72q54rQAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:ATTR name="DefaultDiagram" type="boolean">True</XPD:ATTR>
+<XPD:ATTR name="DiagramType" type="string">RobustnessDiagram</XPD:ATTR>
+<XPD:REF name="DiagramOwner">rSdW7/9V2k2u8Xmz/5+tygAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLClassDiagramView" guid="YyjBv0RAXEqI2ApJXDLpUgAA">
+<XPD:REF name="Diagram">K2BzGxUNGku96Pi72q54rQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[2]" type="UMLModel" guid="sIvJXYGlbk2j4pPNuBXO1wAA">
+<XPD:ATTR name="Name" type="string">Design Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">designModel</XPD:ATTR>
+<XPD:REF name="Namespace">CqZZuWhrLkmNpzJ7OuF7+wAA</XPD:REF>
+<XPD:ATTR name="#Behaviors" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="Behaviors[0]" type="UMLStateMachine" guid="2W/W73QAtUCuZoDkBX+gbgAA">
+<XPD:ATTR name="Name" type="string">StateMachine1</XPD:ATTR>
+<XPD:REF name="Context">sIvJXYGlbk2j4pPNuBXO1wAA</XPD:REF>
+<XPD:OBJ name="Top" type="UMLCompositeState" guid="wY1mdKzXaUqvicJGMDpj4wAA">
+<XPD:ATTR name="Name" type="string">TOP</XPD:ATTR>
+<XPD:REF name="StateMachine">2W/W73QAtUCuZoDkBX+gbgAA</XPD:REF>
+<XPD:ATTR name="#Subvertices" type="integer">6</XPD:ATTR>
+<XPD:OBJ name="Subvertices[0]" type="UMLCompositeState" guid="zvyhXKdIWkqTrZcJ0C04BwAA">
+<XPD:ATTR name="Name" type="string">a</XPD:ATTR>
+<XPD:REF name="ContainerState">wY1mdKzXaUqvicJGMDpj4wAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">2</XPD:ATTR>
+<XPD:REF name="Views[0]">letnw6F3OUS2RWSdNO0bMwAA</XPD:REF>
+<XPD:REF name="Views[1]">eCKyo/k7+E6PcHeEAabShwAA</XPD:REF>
+<XPD:ATTR name="#Outgoings" type="integer">1</XPD:ATTR>
+<XPD:REF name="Outgoings[0]">KrZ9uAy1C0CsTaJeQui0ogAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Subvertices[1]" type="UMLCompositeState" guid="afo3cj3EuEWbjC6FplnN0gAA">
+<XPD:ATTR name="Name" type="string">b</XPD:ATTR>
+<XPD:REF name="ContainerState">wY1mdKzXaUqvicJGMDpj4wAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">2</XPD:ATTR>
+<XPD:REF name="Views[0]">yNOj7kqoI06JLWNiHupfwwAA</XPD:REF>
+<XPD:REF name="Views[1]">T8PPztGi5Uah0NQm6CXVrQAA</XPD:REF>
+<XPD:ATTR name="#Outgoings" type="integer">1</XPD:ATTR>
+<XPD:REF name="Outgoings[0]">0MQBvgJrvE2uEDOwqnAC3wAA</XPD:REF>
+<XPD:ATTR name="#Incomings" type="integer">1</XPD:ATTR>
+<XPD:REF name="Incomings[0]">KrZ9uAy1C0CsTaJeQui0ogAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Subvertices[2]" type="UMLCompositeState" guid="sCyseyvB6EOB62kaadmH8gAA">
+<XPD:ATTR name="Name" type="string">c</XPD:ATTR>
+<XPD:REF name="ContainerState">wY1mdKzXaUqvicJGMDpj4wAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">2</XPD:ATTR>
+<XPD:REF name="Views[0]">ZDC616UMkkWB5BXaxIdHRQAA</XPD:REF>
+<XPD:REF name="Views[1]">o2AcbPYQiEupi4BMsz/TjQAA</XPD:REF>
+<XPD:ATTR name="#Outgoings" type="integer">1</XPD:ATTR>
+<XPD:REF name="Outgoings[0]">j4MdjoRL1EOIDrg5aSI/HwAA</XPD:REF>
+<XPD:ATTR name="#Incomings" type="integer">1</XPD:ATTR>
+<XPD:REF name="Incomings[0]">0MQBvgJrvE2uEDOwqnAC3wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Subvertices[3]" type="UMLCompositeState" guid="H8GhcGV/TkaibBqydxTvDgAA">
+<XPD:ATTR name="Name" type="string">d</XPD:ATTR>
+<XPD:REF name="ContainerState">wY1mdKzXaUqvicJGMDpj4wAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">2</XPD:ATTR>
+<XPD:REF name="Views[0]">b180nZipz0en9UlKRxFklgAA</XPD:REF>
+<XPD:REF name="Views[1]">5RxJFwFceUiGpCmguPU0wQAA</XPD:REF>
+<XPD:ATTR name="#Outgoings" type="integer">1</XPD:ATTR>
+<XPD:REF name="Outgoings[0]">D9bSgkh+fUm1grCxQWJJKAAA</XPD:REF>
+<XPD:ATTR name="#Incomings" type="integer">1</XPD:ATTR>
+<XPD:REF name="Incomings[0]">j4MdjoRL1EOIDrg5aSI/HwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Subvertices[4]" type="UMLCompositeState" guid="icDh0TlK80KI+o6pI13edgAA">
+<XPD:ATTR name="Name" type="string">e</XPD:ATTR>
+<XPD:REF name="ContainerState">wY1mdKzXaUqvicJGMDpj4wAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">2</XPD:ATTR>
+<XPD:REF name="Views[0]">Ncvmnk6K9UK3GBilp5G7PQAA</XPD:REF>
+<XPD:REF name="Views[1]">jFLl/IDR5UCgoI2CpvwvCAAA</XPD:REF>
+<XPD:ATTR name="#Outgoings" type="integer">1</XPD:ATTR>
+<XPD:REF name="Outgoings[0]">HjMT10ghIUK1Egs9AHFyOgAA</XPD:REF>
+<XPD:ATTR name="#Incomings" type="integer">1</XPD:ATTR>
+<XPD:REF name="Incomings[0]">D9bSgkh+fUm1grCxQWJJKAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Subvertices[5]" type="UMLCompositeState" guid="linxzpIQOEKLTPrTPkfT6QAA">
+<XPD:ATTR name="Name" type="string">f</XPD:ATTR>
+<XPD:REF name="ContainerState">wY1mdKzXaUqvicJGMDpj4wAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">2</XPD:ATTR>
+<XPD:REF name="Views[0]">XEaOENtje06E8S4viEolDQAA</XPD:REF>
+<XPD:REF name="Views[1]">e5CvbMS0rkyvqIYW+inG7AAA</XPD:REF>
+<XPD:ATTR name="#Incomings" type="integer">1</XPD:ATTR>
+<XPD:REF name="Incomings[0]">HjMT10ghIUK1Egs9AHFyOgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLStatechartDiagram" guid="hR9Fui2I40OnomMUm3XqRAAA">
+<XPD:ATTR name="Name" type="string">basicprocess</XPD:ATTR>
+<XPD:REF name="DiagramOwner">2W/W73QAtUCuZoDkBX+gbgAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLStatechartDiagramView" guid="BbVN65uLNUqBASfl1iLZtgAA">
+<XPD:REF name="Diagram">hR9Fui2I40OnomMUm3XqRAAA</XPD:REF>
+<XPD:ATTR name="#OwnedViews" type="integer">11</XPD:ATTR>
+<XPD:OBJ name="OwnedViews[0]" type="UMLStateView" guid="letnw6F3OUS2RWSdNO0bMwAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
+<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">32</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">28</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">61</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">40</XPD:ATTR>
+<XPD:ATTR name="ShowProperty" type="boolean">True</XPD:ATTR>
+<XPD:REF name="Model">zvyhXKdIWkqTrZcJ0C04BwAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="mheKx6MY4EC1tT+X4+sfPgAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="t0iEgvb1JEuT/swnntVgDwAA">
+<XPD:ATTR name="Text" type="string">a</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="ppx0nWWvj06FkDky6m0EPAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="kI8y+YUz0U6/VQct5pMxywAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="InternalTransitionCompartment" type="UMLInternalTransitionCompartmentView" guid="eCKyo/k7+E6PcHeEAabShwAA">
+<XPD:REF name="Model">zvyhXKdIWkqTrZcJ0C04BwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[1]" type="UMLStateView" guid="yNOj7kqoI06JLWNiHupfwwAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
+<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">113</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">28</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">60</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">40</XPD:ATTR>
+<XPD:REF name="Model">afo3cj3EuEWbjC6FplnN0gAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="DJd2dBdjO0q4K0lEPf0MgAAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="y3C+n9aY5EW4j0NZWgoZ3QAA">
+<XPD:ATTR name="Text" type="string">b</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="GrN826qnf0KLlTTtmhGpjgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="soSPMSO1sESvnPHsXRF1QQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="InternalTransitionCompartment" type="UMLInternalTransitionCompartmentView" guid="T8PPztGi5Uah0NQm6CXVrQAA">
+<XPD:REF name="Model">afo3cj3EuEWbjC6FplnN0gAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[2]" type="UMLStateView" guid="ZDC616UMkkWB5BXaxIdHRQAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
+<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">194</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">28</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">63</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">40</XPD:ATTR>
+<XPD:REF name="Model">sCyseyvB6EOB62kaadmH8gAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="CLXrW4n7fE+0B7sEB23XFQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="GqzaxnTBWE+W+xo63oU3DgAA">
+<XPD:ATTR name="Text" type="string">c</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="MEP5p3O7x0WgikqFx00Q7gAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="ofi/ljGNE0OwFFYyCDDPTgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="InternalTransitionCompartment" type="UMLInternalTransitionCompartmentView" guid="o2AcbPYQiEupi4BMsz/TjQAA">
+<XPD:REF name="Model">sCyseyvB6EOB62kaadmH8gAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[3]" type="UMLStateView" guid="b180nZipz0en9UlKRxFklgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
+<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">275</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">28</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">60</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">40</XPD:ATTR>
+<XPD:REF name="Model">H8GhcGV/TkaibBqydxTvDgAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="zvOW/7cBDkCF/gxY6n524AAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="A6ZDDHycDUyv5Ddgmf3qcAAA">
+<XPD:ATTR name="Text" type="string">d</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="rDeqW/xZP0ecCKj9xPjksQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="mI+ldkrDbkWOuC90UJqXlQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="InternalTransitionCompartment" type="UMLInternalTransitionCompartmentView" guid="5RxJFwFceUiGpCmguPU0wQAA">
+<XPD:REF name="Model">H8GhcGV/TkaibBqydxTvDgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[4]" type="UMLStateView" guid="Ncvmnk6K9UK3GBilp5G7PQAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
+<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">356</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">28</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">60</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">40</XPD:ATTR>
+<XPD:REF name="Model">icDh0TlK80KI+o6pI13edgAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="xbYRHyJYNEOlrFL2Nqu0OQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="pH0BvzGAHUK9bBizxn+E4gAA">
+<XPD:ATTR name="Text" type="string">e</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="VZK/bnvwckS1H32SfIERrAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="7ySMFkIl2kiYY3CmSPr8iQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="InternalTransitionCompartment" type="UMLInternalTransitionCompartmentView" guid="jFLl/IDR5UCgoI2CpvwvCAAA">
+<XPD:REF name="Model">icDh0TlK80KI+o6pI13edgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[5]" type="UMLStateView" guid="XEaOENtje06E8S4viEolDQAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
+<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">437</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">28</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">60</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">40</XPD:ATTR>
+<XPD:REF name="Model">linxzpIQOEKLTPrTPkfT6QAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="i3YXwse0Pka8LWgajPwFGwAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="63CDEskxlk2rpFH7cb2OIQAA">
+<XPD:ATTR name="Text" type="string">f</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="R1PC8mMR+Uq8vxLn50Un6AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="sROgdXNIFUOxLUT5EPjsRQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="InternalTransitionCompartment" type="UMLInternalTransitionCompartmentView" guid="e5CvbMS0rkyvqIYW+inG7AAA">
+<XPD:REF name="Model">linxzpIQOEKLTPrTPkfT6QAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[6]" type="UMLTransitionView" guid="882oSRP+tEqhR4wGgboiewAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
+<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">92,47;113,47</XPD:ATTR>
+<XPD:REF name="Model">KrZ9uAy1C0CsTaJeQui0ogAA</XPD:REF>
+<XPD:REF name="Head">yNOj7kqoI06JLWNiHupfwwAA</XPD:REF>
+<XPD:REF name="Tail">letnw6F3OUS2RWSdNO0bMwAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="YwapOdlagUuMsS3NHYZMkQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">KrZ9uAy1C0CsTaJeQui0ogAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="9eUr5oTj30mB7y1FuBnIhAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">KrZ9uAy1C0CsTaJeQui0ogAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="9YFxGeAbMUGzXiCCAHnRMwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">KrZ9uAy1C0CsTaJeQui0ogAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[7]" type="UMLTransitionView" guid="GYiNtAOxaEyeiLvhbbRKdAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
+<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">172,47;194,47</XPD:ATTR>
+<XPD:REF name="Model">0MQBvgJrvE2uEDOwqnAC3wAA</XPD:REF>
+<XPD:REF name="Head">ZDC616UMkkWB5BXaxIdHRQAA</XPD:REF>
+<XPD:REF name="Tail">yNOj7kqoI06JLWNiHupfwwAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="ntwuGJTXWkanxEx4/z5vRwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">0MQBvgJrvE2uEDOwqnAC3wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="4MCFAa14W0mHIPVaXYPPIQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">0MQBvgJrvE2uEDOwqnAC3wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="Tt/g5fQt7keRkrRT1Tp4VAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">0MQBvgJrvE2uEDOwqnAC3wAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[8]" type="UMLTransitionView" guid="NujPAlkbt0iiPtBxFQc8iAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
+<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">256,47;275,47</XPD:ATTR>
+<XPD:REF name="Model">j4MdjoRL1EOIDrg5aSI/HwAA</XPD:REF>
+<XPD:REF name="Head">b180nZipz0en9UlKRxFklgAA</XPD:REF>
+<XPD:REF name="Tail">ZDC616UMkkWB5BXaxIdHRQAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="GMqYTJbP3Ey3fIcENfWCNwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">j4MdjoRL1EOIDrg5aSI/HwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="s4V2XvgCKUykIrTIbIuZJwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">j4MdjoRL1EOIDrg5aSI/HwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="KN3Ke7a1tEi4tYwVu7J0QgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">j4MdjoRL1EOIDrg5aSI/HwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[9]" type="UMLTransitionView" guid="7vMd4q8G9EKDQFOHPcTPEAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
+<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">334,47;356,47</XPD:ATTR>
+<XPD:REF name="Model">D9bSgkh+fUm1grCxQWJJKAAA</XPD:REF>
+<XPD:REF name="Head">Ncvmnk6K9UK3GBilp5G7PQAA</XPD:REF>
+<XPD:REF name="Tail">b180nZipz0en9UlKRxFklgAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="QPo2vVX2DEWVB9uTUFxBXQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">D9bSgkh+fUm1grCxQWJJKAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="Ny36+fBkxUWVAAMudTIwkAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">D9bSgkh+fUm1grCxQWJJKAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="njpuoI5DCEOE8mAdcZbAwwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">D9bSgkh+fUm1grCxQWJJKAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[10]" type="UMLTransitionView" guid="mHB8nKUwEkWraTtDXRFe3QAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="FontFace" type="string">Verdana</XPD:ATTR>
+<XPD:ATTR name="FontSize" type="integer">12</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">415,47;437,47</XPD:ATTR>
+<XPD:REF name="Model">HjMT10ghIUK1Egs9AHFyOgAA</XPD:REF>
+<XPD:REF name="Head">XEaOENtje06E8S4viEolDQAA</XPD:REF>
+<XPD:REF name="Tail">Ncvmnk6K9UK3GBilp5G7PQAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="x29WX1xs2EOXih2ZrUfDLQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">HjMT10ghIUK1Egs9AHFyOgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="Xpxik86UZ0q9v6INotSXqwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">HjMT10ghIUK1Egs9AHFyOgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="pKmUEB6JPUKOFk8bzcCWIAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">HjMT10ghIUK1Egs9AHFyOgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:ATTR name="#Transitions" type="integer">5</XPD:ATTR>
+<XPD:OBJ name="Transitions[0]" type="UMLTransition" guid="KrZ9uAy1C0CsTaJeQui0ogAA">
+<XPD:REF name="StateMachine">2W/W73QAtUCuZoDkBX+gbgAA</XPD:REF>
+<XPD:REF name="Source">zvyhXKdIWkqTrZcJ0C04BwAA</XPD:REF>
+<XPD:REF name="Target">afo3cj3EuEWbjC6FplnN0gAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">882oSRP+tEqhR4wGgboiewAA</XPD:REF>
+<XPD:REF name="Views[1]">YwapOdlagUuMsS3NHYZMkQAA</XPD:REF>
+<XPD:REF name="Views[2]">9eUr5oTj30mB7y1FuBnIhAAA</XPD:REF>
+<XPD:REF name="Views[3]">9YFxGeAbMUGzXiCCAHnRMwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Transitions[1]" type="UMLTransition" guid="0MQBvgJrvE2uEDOwqnAC3wAA">
+<XPD:REF name="StateMachine">2W/W73QAtUCuZoDkBX+gbgAA</XPD:REF>
+<XPD:REF name="Source">afo3cj3EuEWbjC6FplnN0gAA</XPD:REF>
+<XPD:REF name="Target">sCyseyvB6EOB62kaadmH8gAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">GYiNtAOxaEyeiLvhbbRKdAAA</XPD:REF>
+<XPD:REF name="Views[1]">ntwuGJTXWkanxEx4/z5vRwAA</XPD:REF>
+<XPD:REF name="Views[2]">4MCFAa14W0mHIPVaXYPPIQAA</XPD:REF>
+<XPD:REF name="Views[3]">Tt/g5fQt7keRkrRT1Tp4VAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Transitions[2]" type="UMLTransition" guid="j4MdjoRL1EOIDrg5aSI/HwAA">
+<XPD:REF name="StateMachine">2W/W73QAtUCuZoDkBX+gbgAA</XPD:REF>
+<XPD:REF name="Source">sCyseyvB6EOB62kaadmH8gAA</XPD:REF>
+<XPD:REF name="Target">H8GhcGV/TkaibBqydxTvDgAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">NujPAlkbt0iiPtBxFQc8iAAA</XPD:REF>
+<XPD:REF name="Views[1]">GMqYTJbP3Ey3fIcENfWCNwAA</XPD:REF>
+<XPD:REF name="Views[2]">s4V2XvgCKUykIrTIbIuZJwAA</XPD:REF>
+<XPD:REF name="Views[3]">KN3Ke7a1tEi4tYwVu7J0QgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Transitions[3]" type="UMLTransition" guid="D9bSgkh+fUm1grCxQWJJKAAA">
+<XPD:REF name="StateMachine">2W/W73QAtUCuZoDkBX+gbgAA</XPD:REF>
+<XPD:REF name="Source">H8GhcGV/TkaibBqydxTvDgAA</XPD:REF>
+<XPD:REF name="Target">icDh0TlK80KI+o6pI13edgAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">7vMd4q8G9EKDQFOHPcTPEAAA</XPD:REF>
+<XPD:REF name="Views[1]">QPo2vVX2DEWVB9uTUFxBXQAA</XPD:REF>
+<XPD:REF name="Views[2]">Ny36+fBkxUWVAAMudTIwkAAA</XPD:REF>
+<XPD:REF name="Views[3]">njpuoI5DCEOE8mAdcZbAwwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Transitions[4]" type="UMLTransition" guid="HjMT10ghIUK1Egs9AHFyOgAA">
+<XPD:REF name="StateMachine">2W/W73QAtUCuZoDkBX+gbgAA</XPD:REF>
+<XPD:REF name="Source">icDh0TlK80KI+o6pI13edgAA</XPD:REF>
+<XPD:REF name="Target">linxzpIQOEKLTPrTPkfT6QAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">mHB8nKUwEkWraTtDXRFe3QAA</XPD:REF>
+<XPD:REF name="Views[1]">x29WX1xs2EOXih2ZrUfDLQAA</XPD:REF>
+<XPD:REF name="Views[2]">Xpxik86UZ0q9v6INotSXqwAA</XPD:REF>
+<XPD:REF name="Views[3]">pKmUEB6JPUKOFk8bzcCWIAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:ATTR name="#OwnedElements" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedElements[0]" type="UMLClass" guid="64g9hRy/3UKt3eh5dgElQAAA">
+<XPD:ATTR name="Name" type="string">Lim, Heejin</XPD:ATTR>
+<XPD:REF name="Namespace">sIvJXYGlbk2j4pPNuBXO1wAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[3]" type="UMLModel" guid="9YzpU7hPckKY8uie4ppk2gAA">
+<XPD:ATTR name="Name" type="string">Implementation Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">implementationModel</XPD:ATTR>
+<XPD:REF name="Namespace">CqZZuWhrLkmNpzJ7OuF7+wAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLComponentDiagram" guid="VVX8bYlzP0+/QABN/JhXQwAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:REF name="DiagramOwner">9YzpU7hPckKY8uie4ppk2gAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLComponentDiagramView" guid="IDJmzyDaHkunvykxt+3RfQAA">
+<XPD:REF name="Diagram">VVX8bYlzP0+/QABN/JhXQwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[4]" type="UMLModel" guid="RiQm2H9rlEStxXqb03FtCgAA">
+<XPD:ATTR name="Name" type="string">Deployment Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">deploymentModel</XPD:ATTR>
+<XPD:REF name="Namespace">CqZZuWhrLkmNpzJ7OuF7+wAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLDeploymentDiagram" guid="c/HoJRkzOU6w/Jezp96SNAAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:REF name="DiagramOwner">RiQm2H9rlEStxXqb03FtCgAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLDeploymentDiagramView" guid="HWCFgP9g2UuYvYins0fYsAAA">
+<XPD:REF name="Diagram">c/HoJRkzOU6w/Jezp96SNAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:BODY>
+</XPD:PROJECT>
Added: jbpm4/pvm/trunk/modules/manual/src/main/docbook/en/images/order.process.png
===================================================================
(Binary files differ)
Property changes on: jbpm4/pvm/trunk/modules/manual/src/main/docbook/en/images/order.process.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: jbpm4/pvm/trunk/modules/manual/src/main/docbook/en/master.xml
===================================================================
--- jbpm4/pvm/trunk/modules/manual/src/main/docbook/en/master.xml 2008-09-11 13:20:13 UTC (rev 2178)
+++ jbpm4/pvm/trunk/modules/manual/src/main/docbook/en/master.xml 2008-09-11 13:38:54 UTC (rev 2179)
@@ -22,7 +22,7 @@
<bookinfo>
<title>The Process Virtual Machine: Reference Manual</title>
- <subtitle>A library for building executable state machines. It can can
+ <subtitle>A library for building executable state machines. It can
serve as the foundation for any form of BPM, workflow and orchestration.
</subtitle>
</bookinfo>
Modified: jbpm4/pvm/trunk/modules/manual/src/main/docbook/en/modules/ch01-Introduction.xml
===================================================================
--- jbpm4/pvm/trunk/modules/manual/src/main/docbook/en/modules/ch01-Introduction.xml 2008-09-11 13:20:13 UTC (rev 2178)
+++ jbpm4/pvm/trunk/modules/manual/src/main/docbook/en/modules/ch01-Introduction.xml 2008-09-11 13:38:54 UTC (rev 2179)
@@ -84,30 +84,4 @@
</para>
</section>
- <section>
- <title>APIs</title>
- <para>The Process Virtual Machine has 4 integrated API's that together offer a complete coverage
- of working with processes.
- </para>
- <figure id="apis">
- <title>The 4 API's of the Process Virtual Machine</title>
- <mediaobject><imageobject><imagedata align="center" fileref="images/apis.png"/></imageobject></mediaobject>
- </figure>
- <para>The services interfaces should be used from application code that wants to interact
- with the Process Virtual Machine which runs in transactional persistent mode, backed by a
- database. This is the most typical way how users interact with the PVM as a workflow engine.
- </para>
- <para>To execute processes without persistence, the client API can be used to work with process
- and execution objects directly. The client API expose the methods of the core model objects.
- </para>
- <para>The activity API is used to implement the runtime behaviour of activities. So a activity
- type is in fact a component with at the core an implementation of the <literal>Activity</literal>
- interface. Activity implementations can control the flow of execution.
- </para>
- <para>The event listener API serves to write pieces of Java code that should be executed upon
- process events. It's very similar to the activity API with that exception that event listeners
- are not able to control the flow of execution.
- </para>
- </section>
-
</chapter>
Modified: jbpm4/pvm/trunk/modules/manual/src/main/docbook/en/modules/ch03-Environments.xml
===================================================================
--- jbpm4/pvm/trunk/modules/manual/src/main/docbook/en/modules/ch03-Environments.xml 2008-09-11 13:20:13 UTC (rev 2178)
+++ jbpm4/pvm/trunk/modules/manual/src/main/docbook/en/modules/ch03-Environments.xml 2008-09-11 13:38:54 UTC (rev 2179)
@@ -1,7 +1,88 @@
<chapter id="environments">
<title>Environments</title>
- <para>
+ <para>There are basically three process execution modes: object, persistent
+ and embedded. For the persistent and embedded execution modes, the process
+ execution has to participate in a transaction. In that case, the process
+ execution has to take place inside of an Environment. The environment will be
+ used to bind process execution updates to a transaction in the application
+ transaction. The environment can be used to bind to e.g. a JDBC connection,
+ JTA, BMT, Spring transactions and so on.
</para>
+
+ <section>
+ <title>APIs</title>
+ <para>The Process Virtual Machine has 4 integrated API's that together offer a complete coverage
+ of working with processes.
+ </para>
+ <figure id="apis">
+ <title>The 4 API's of the Process Virtual Machine</title>
+ <mediaobject><imageobject><imagedata align="center" fileref="images/apis.png"/></imageobject></mediaobject>
+ </figure>
+ <para>The services interfaces should be used from application code that wants to interact
+ with the Process Virtual Machine which runs in transactional persistent mode, backed by a
+ database. This is the most typical way how users interact with the PVM as a workflow engine.
+ </para>
+ <para>To execute processes without persistence, the client API can be used to work with process
+ and execution objects directly. The client API expose the methods of the core model objects.
+ </para>
+ <para>The activity API is used to implement the runtime behaviour of activities. So a activity
+ type is in fact a component with at the core an implementation of the <literal>Activity</literal>
+ interface. Activity implementations can control the flow of execution.
+ </para>
+ <para>The event listener API serves to write pieces of Java code that should be executed upon
+ process events. It's very similar to the activity API with that exception that event listeners
+ are not able to control the flow of execution.
+ </para>
+ </section>
+
+ <section id="objectexecutionmode">
+ <title>Object execution mode</title>
+ <para>Object execution mode is the simplest form of working with the Process
+ Virtual Machine. This means working with the process definition and execution
+ objects directly through the client API. Let's show this by an example. We
+ start by creating a <literal>ClientProcessDefinition</literal> that looks like this:
+ </para>
+ <figure id="order.process">
+ <title>The Order process</title>
+ <mediaobject><imageobject><imagedata align="center" fileref="images/order.process.png"/></imageobject></mediaobject>
+ </figure>
+ <programlisting>ClientProcessDefinition <emphasis role="bold">processDefinition</emphasis> = ProcessFactory.build()
+ .node("a").initial().behaviour(AutomaticActivity.class)
+ .transition().to("b")
+ .node("b").behaviour(AutomaticActivity.class)
+ .transition().to("c")
+ .node("c").behaviour(WaitState.class)
+ .transition().to("d")
+ .node("d").behaviour(AutomaticActivity.class)
+ .transition().to("f")
+ .node("e").behaviour(AutomaticActivity.class)
+ .transition().to("e")
+ .node("f").behaviour(WaitState.class)
+.done();</programlisting>
+ <para>The <literal>ProcessFactory</literal> is a helper class that provides convenience
+ for building an object graph that represents a process definition.
+ <literal>AutomaticActivity</literal> just acts as a pass through activity without anything
+ happening and <literal>WaitState</literal> will wait until an external signal is given. Both
+ activity implementations will be covered in more depth later.
+ </para>
+ <para>A process
+ </para>
+ </section>
+ <section id="persistentexecutionmode">
+ <title>Persistent execution mode</title>
+ <para>Embedded execution mode means that process definitions, the runtime
+ executions and the history information all is stored in the PVM database
+ schema.
+ </para>
+ </section>
+
+ <section id="embeddedexecutionmode">
+ <title>Embedded execution mode</title>
+ <para>Embedded execution mode means that the state of a process is stored
+ as a string column inside a user domain object like e.g. an Order.
+ </para>
+ </section>
+
</chapter>
\ No newline at end of file
17 years, 7 months
JBoss JBPM SVN: r2178 - in jbpm3/trunk/hudson/hudson-home: jobs/jBPM-Matrix and 1 other directory.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-09-11 09:20:13 -0400 (Thu, 11 Sep 2008)
New Revision: 2178
Modified:
jbpm3/trunk/hudson/hudson-home/command.sh
jbpm3/trunk/hudson/hudson-home/jobs/jBPM-Matrix/config.xml
Log:
Optimize Hudson jobs
Modified: jbpm3/trunk/hudson/hudson-home/command.sh
===================================================================
--- jbpm3/trunk/hudson/hudson-home/command.sh 2008-09-11 10:59:17 UTC (rev 2177)
+++ jbpm3/trunk/hudson/hudson-home/command.sh 2008-09-11 13:20:13 UTC (rev 2178)
@@ -37,8 +37,8 @@
#
cd $JBPMDIR
cp profiles.xml.example profiles.xml
-echo "mvn $ENVIRONMENT -Pdistro clean package"
-mvn -U $ENVIRONMENT -Pdistro clean package; MVN_STATUS=$?
+MVN_CMD="mvn $ENVIRONMENT -Pdistro clean install"
+echo $MVN_CMD; $MVN_CMD; MVN_STATUS=$?
if [ $MVN_STATUS -ne 0 ]; then
echo maven exit status $MVN_STATUS
exit 1
@@ -47,8 +47,8 @@
#
# build the tests
#
-echo "mvn $ENVIRONMENT process-test-classes"
-mvn $ENVIRONMENT process-test-classes 2>&1; MVN_STATUS=$?
+MVN_CMD="mvn -o $ENVIRONMENT process-test-classes"
+echo $MVN_CMD; $MVN_CMD 2>&1; MVN_STATUS=$?
if [ $MVN_STATUS -ne 0 ]; then
echo maven exit status $MVN_STATUS
exit 1
@@ -58,8 +58,8 @@
# Deploy distro
#
AUTO_INSTALL=modules/distribution/target/resources/auto-install-template.xml; cat $AUTO_INSTALL;
-echo "java -jar $DISTRODIR/jbpm-distribution-$JBPM_VERSION-izpack.jar $AUTO_INSTALL"
-java -jar $DISTRODIR/jbpm-distribution-$JBPM_VERSION-izpack.jar $AUTO_INSTALL
+JAVA_CMD="java -jar $DISTRODIR/jbpm-distribution-$JBPM_VERSION-izpack.jar $AUTO_INSTALL"
+echo $JAVA_CMD; $JAVA_CMD
#
# start jbossas
@@ -77,13 +77,14 @@
#
# log dependency tree
#
-mvn $ENVIRONMENT dependency:tree | tee $WORKSPACE/dependency-tree.txt
+MVN_CMD="mvn -o $ENVIRONMENT dependency:tree"
+echo $MVN_CMD; $MVN_CMD | tee $WORKSPACE/dependency-tree.txt
#
# execute tests
#
-echo "mvn $ENVIRONMENT -DtestFailureIgnore=true test"
-mvn $ENVIRONMENT -DtestFailureIgnore=true test 2>&1 | tee $WORKSPACE/tests.log
+MVN_CMD="mvn -o $ENVIRONMENT -DtestFailureIgnore=true test"
+echo $MVN_CMD; $MVN_CMD 2>&1 | tee $WORKSPACE/tests.log
cat $WORKSPACE/tests.log | egrep FIXME\|FAILED | sort -u | tee $WORKSPACE/fixme.txt
cat $WORKSPACE/fixme.txt | egrep "\[\S*]" > $WORKSPACE/errata-$CONTAINER.txt
Modified: jbpm3/trunk/hudson/hudson-home/jobs/jBPM-Matrix/config.xml
===================================================================
--- jbpm3/trunk/hudson/hudson-home/jobs/jBPM-Matrix/config.xml 2008-09-11 10:59:17 UTC (rev 2177)
+++ jbpm3/trunk/hudson/hudson-home/jobs/jBPM-Matrix/config.xml 2008-09-11 13:20:13 UTC (rev 2178)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<matrix-project>
<actions class="java.util.concurrent.CopyOnWriteArrayList"/>
- <description>Build and test the @version.id@ Container Matrix</description>
+ <description>Build and test the @version.id@ Matrix</description>
<logRotator>
<daysToKeep>28</daysToKeep>
<numToKeep>-1</numToKeep>
17 years, 7 months
JBoss JBPM SVN: r2177 - in jbpm3/trunk/hudson/hudson-home/jobs: jBPM-Matrix and 1 other directory.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-09-11 06:59:17 -0400 (Thu, 11 Sep 2008)
New Revision: 2177
Added:
jbpm3/trunk/hudson/hudson-home/jobs/jBPM-Matrix/
Removed:
jbpm3/trunk/hudson/hudson-home/jobs/jBPM-Container-Matrix/
jbpm3/trunk/hudson/hudson-home/jobs/jBPM-Database-Matrix/
Modified:
jbpm3/trunk/hudson/hudson-home/jobs/jBPM-Matrix/config.xml
Log:
Go back to a single matrix
Copied: jbpm3/trunk/hudson/hudson-home/jobs/jBPM-Matrix (from rev 2169, jbpm3/trunk/hudson/hudson-home/jobs/jBPM-Container-Matrix)
Modified: jbpm3/trunk/hudson/hudson-home/jobs/jBPM-Matrix/config.xml
===================================================================
--- jbpm3/trunk/hudson/hudson-home/jobs/jBPM-Container-Matrix/config.xml 2008-09-11 00:18:38 UTC (rev 2169)
+++ jbpm3/trunk/hudson/hudson-home/jobs/jBPM-Matrix/config.xml 2008-09-11 10:59:17 UTC (rev 2177)
@@ -39,6 +39,8 @@
<name>database</name>
<values>
<string>hsqldb</string>
+ <string>mysql</string>
+ <string>postgresql</string>
</values>
</axis>
<axis>
17 years, 7 months
JBoss JBPM SVN: r2176 - jbpm3/trunk/modules/core.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-09-11 05:36:55 -0400 (Thu, 11 Sep 2008)
New Revision: 2176
Modified:
jbpm3/trunk/modules/core/pom.xml
Log:
JBPM-1718 Exclude PostgreSQL regression
Modified: jbpm3/trunk/modules/core/pom.xml
===================================================================
--- jbpm3/trunk/modules/core/pom.xml 2008-09-11 09:03:54 UTC (rev 2175)
+++ jbpm3/trunk/modules/core/pom.xml 2008-09-11 09:36:55 UTC (rev 2176)
@@ -314,6 +314,10 @@
<exclude>org/jbpm/perf/StateUpdateTest.java</exclude>
<!-- https://jira.jboss.org/jira/browse/JBPM-1724 -->
<exclude>org/jbpm/seam/SeamPageFlowTest.java</exclude>
+ <!-- https://jira.jboss.org/jira/browse/JBPM-1718 -->
+ <exclude>org/jbpm/graph/exe/SubProcessPlusConcurrencyDbTest.java</exclude>
+ <exclude>org/jbpm/job/executor/JobExecutorDbTest.java</exclude>
+ <exclude>org/jbpm/jpdl/exe/JoinDbTest.java</exclude>
</excludes>
</configuration>
</plugin>
17 years, 7 months
JBoss JBPM SVN: r2175 - in jbpm4/pvm/trunk/modules/core/src: main/java/org/jbpm/pvm/internal/jobexecutor and 1 other directories.
by do-not-reply@jboss.org
Author: porcherg
Date: 2008-09-11 05:03:54 -0400 (Thu, 11 Sep 2008)
New Revision: 2175
Modified:
jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/job/TimerImpl.java
jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/jobexecutor/ExecuteJobCmd.java
jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/jobexecutor/JobExceptionHandler.java
jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/jobexecutor/GenerateExceptionTestCommand.java
Log:
make job execution use JobDbSession (to be sure the same dbSession is used to post jobs, to fetch jobs and to execute them when there are more than one DbSession in environment)
Modified: jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/job/TimerImpl.java
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/job/TimerImpl.java 2008-09-11 08:17:40 UTC (rev 2174)
+++ jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/job/TimerImpl.java 2008-09-11 09:03:54 UTC (rev 2175)
@@ -31,6 +31,7 @@
import org.jbpm.pvm.internal.cal.Duration;
import org.jbpm.pvm.internal.env.JobContext;
import org.jbpm.pvm.internal.jobexecutor.JobAddedNotification;
+import org.jbpm.pvm.internal.jobexecutor.JobDbSession;
import org.jbpm.pvm.internal.jobexecutor.JobExecutor;
import org.jbpm.pvm.internal.log.Log;
import org.jbpm.pvm.internal.util.Clock;
@@ -119,9 +120,9 @@
if (repeat==null) {
// delete the jobImpl
if (log.isDebugEnabled()) log.debug("deleting " + this);
- DbSession dbSession = environment.get(DbSession.class);
+ JobDbSession dbSession = environment.get(JobDbSession.class);
if (dbSession==null) {
- throw new PvmException("no "+DbSession.class.getName()+" in environment");
+ throw new PvmException("no "+JobDbSession.class.getName()+" in environment");
}
dbSession.delete(this);
Modified: jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/jobexecutor/ExecuteJobCmd.java
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/jobexecutor/ExecuteJobCmd.java 2008-09-11 08:17:40 UTC (rev 2174)
+++ jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/jobexecutor/ExecuteJobCmd.java 2008-09-11 09:03:54 UTC (rev 2175)
@@ -51,9 +51,9 @@
}
public Job execute(Environment environment) throws Exception {
- Session session = environment.get(Session.class);
+ JobDbSession session = environment.get(JobDbSession.class);
if (session==null) {
- throw new PvmException("no hibernate-session configured to get job "+jobDbid+" for execution");
+ throw new PvmException("no job session configured to get job "+jobDbid+" for execution");
}
JobImpl<?> job = (JobImpl<?>) session.get(JobImpl.class, jobDbid);
Modified: jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/jobexecutor/JobExceptionHandler.java
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/jobexecutor/JobExceptionHandler.java 2008-09-11 08:17:40 UTC (rev 2174)
+++ jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/jobexecutor/JobExceptionHandler.java 2008-09-11 09:03:54 UTC (rev 2175)
@@ -69,9 +69,9 @@
log.debug("handling jobImpl "+jobDbid+" exception: "+exception.getMessage());
// load the jobImpl from the db
- Session session = environment.get(Session.class);
+ JobDbSession session = environment.get(JobDbSession.class);
if (session==null) {
- throw new PvmException("no hibernate-session configured to handle job");
+ throw new PvmException("no job-session configured to handle job");
}
JobImpl<?> job = (JobImpl<?>) session.get(JobImpl.class, jobDbid);
// serialize the stack trace
Modified: jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/jobexecutor/GenerateExceptionTestCommand.java
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/jobexecutor/GenerateExceptionTestCommand.java 2008-09-11 08:17:40 UTC (rev 2174)
+++ jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/jobexecutor/GenerateExceptionTestCommand.java 2008-09-11 09:03:54 UTC (rev 2175)
@@ -24,7 +24,6 @@
import org.jbpm.pvm.env.Environment;
import org.jbpm.pvm.internal.cmd.Command;
import org.jbpm.pvm.internal.job.CommandMessage;
-import org.jbpm.pvm.internal.log.Log;
import org.jbpm.pvm.internal.wire.descriptor.IntegerDescriptor;
import org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor;
17 years, 7 months