[jbpm-commits] JBoss JBPM SVN: r1750 - jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket.
do-not-reply at jboss.org
do-not-reply at jboss.org
Tue Jul 29 11:00:31 EDT 2008
Author: thomas.diesler at jboss.com
Date: 2008-07-29 11:00:31 -0400 (Tue, 29 Jul 2008)
New Revision: 1750
Added:
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java
Modified:
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java
Log:
Externalize process builder
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java 2008-07-29 15:00:31 UTC (rev 1750)
@@ -0,0 +1,194 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.samples.airticket;
+
+// $Id$
+
+import javax.management.ObjectName;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.GatewayBuilder;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.TaskBuilder;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
+import org.jboss.bpm.model.Gateway.GatewayType;
+import org.jboss.bpm.model.Task.TaskType;
+
+/**
+ * Test the Airticket sample application
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 03-Jul-2008
+ */
+public class AirticketProcessBuilder
+{
+ private ObjectName messageListenerID;
+
+ public AirticketProcessBuilder(ObjectName listenerID)
+ {
+ this.messageListenerID = listenerID;
+ }
+
+ public Process buildProcess()
+ {
+ // Create a Process through the ProcessBuilder
+ ProcessBuilderFactory procFactory = ProcessBuilderFactory.newInstance();
+ ProcessBuilder procBuilder = procFactory.newProcessBuilder();
+ procBuilder.addProcess("Airticket").addStartEvent().addSequenceFlow("ReceiveReqTask");
+
+ // Build the ReceiveReqTask
+ TaskBuilder taskBuilder = procBuilder.addTask("ReceiveReqTask", TaskType.Receive);
+ taskBuilder.addMessageRef("ReqDataMsg", null).
+ addMessageProperty("Name", null, true).
+ addMessageProperty("From", null, true).
+ addMessageProperty("To", null, true).
+ addMessageProperty("Date", null, true).
+ addMessageProperty("Seats", null, true).
+ addSequenceFlow("ValidateTask");
+
+ // Build the ValidateTask
+ taskBuilder = procBuilder.addTask("ValidateTask", TaskType.None);
+ taskBuilder.addInputSet().
+ addPropertyInput("Name", null).
+ addPropertyInput("From", null).
+ addPropertyInput("To", null).
+ addPropertyInput("Date", null).
+ addPropertyInput("Seats", null).
+ addOutputSet().
+ addPropertyOutput("isReqDataValid", null).
+ addIORule("Name != null && From != null && To != null && Date != null && Seats > 0", ExpressionLanguage.MVEL).
+ addSequenceFlow("ValidateGateway");
+
+ // Build the ValidateGateway
+ GatewayBuilder gatewayBuilder = procBuilder.addGateway("ValidateGateway", GatewayType.Exclusive);
+ gatewayBuilder.addConditionalGate("CheckAvailabilityTask", ExpressionLanguage.MVEL, "isReqDataValid == true").
+ addDefaultGate("SendInvalidTask");
+
+ // Build the CheckAvailabilityTask
+ taskBuilder = procBuilder.addTask("CheckAvailabilityTask", TaskType.None);
+ taskBuilder.addExecutionHandler(AvailabilityHandler.class).
+ addInputSet().
+ addPropertyInput("From", null).
+ addPropertyInput("To", null).
+ addPropertyInput("Date", null).
+ addPropertyInput("Seats", null).
+ addOutputSet().
+ addPropertyOutput("isAvailable", null).
+ addPropertyOutput("Price", null).
+ addSequenceFlow("AvailabilityGateway");
+
+ // Build the SendInvalidTask
+ taskBuilder = procBuilder.addTask("SendInvalidTask", TaskType.Send);
+ taskBuilder.addMessageRef("InvalidDataMsg", messageListenerID).
+ addMessageProperty("Name", null, true).
+ addMessageProperty("From", null, true).
+ addMessageProperty("To", null, true).
+ addMessageProperty("Date", null, true).
+ addMessageProperty("Seats", null, true).
+ addSequenceFlow("ReceiveReqTask");
+
+ // Build the AvailabilityGateway
+ gatewayBuilder = procBuilder.addGateway("AvailabilityGateway", GatewayType.Exclusive);
+ gatewayBuilder.addConditionalGate("SendOfferTask", ExpressionLanguage.MVEL, "isAvailable == true").
+ addDefaultGate("SendNotAvailableTask");
+
+ // Build the SendOfferTask
+ taskBuilder = procBuilder.addTask("SendOfferTask", TaskType.Send);
+ taskBuilder.addMessageRef("OfferMsg", messageListenerID).
+ addMessageProperty("Name", null, true).
+ addMessageProperty("From", null, true).
+ addMessageProperty("To", null, true).
+ addMessageProperty("Date", null, true).
+ addMessageProperty("Seats", null, true).
+ addMessageProperty("Price", null, true).
+ addSequenceFlow("ReceiveOrderTask");
+
+ // Build the SendNotAvailableTask
+ taskBuilder = procBuilder.addTask("SendNotAvailableTask", TaskType.Send);
+ taskBuilder.addMessageRef("NotAvailableMsg", messageListenerID).
+ addMessageProperty("Name", null, true).
+ addMessageProperty("From", null, true).
+ addMessageProperty("To", null, true).
+ addMessageProperty("Date", null, true).
+ addMessageProperty("Seats", null, true).
+ addSequenceFlow("ReceiveReqTask");
+
+ // Build the ReceiveReqTask
+ taskBuilder = procBuilder.addTask("ReceiveOrderTask", TaskType.Receive);
+ taskBuilder.addMessageRef("AcceptOfferMsg", null).
+ addMessageProperty("CreditCard", null, true).
+ addMessageProperty("Expire", null, true).
+ addMessageProperty("isOfferAccepted", null, true).
+ addSequenceFlow("AcceptOfferGateway");
+
+ // Build the AcceptOfferGateway
+ gatewayBuilder = procBuilder.addGateway("AcceptOfferGateway", GatewayType.Exclusive);
+ gatewayBuilder.addConditionalGate("ParallelSplitGateway", ExpressionLanguage.MVEL, "isOfferAccepted == true").
+ addDefaultGate("ReceiveReqTask");
+
+ // Build the AcceptOfferGateway
+ gatewayBuilder = procBuilder.addGateway("ParallelSplitGateway", GatewayType.Parallel);
+ gatewayBuilder.addGate("CreditCardTask").
+ addGate("BookingTask");
+
+ // Build the CreditCardTask
+ taskBuilder = procBuilder.addTask("CreditCardTask", TaskType.None);
+ taskBuilder.addInputSet().
+ addPropertyInput("CreditCard", null).
+ addPropertyInput("Expire", null).
+ addPropertyInput("Price", null).
+ addSequenceFlow("SynchronizedJoinGateway");
+
+ // Build the BookingTask
+ taskBuilder = procBuilder.addTask("BookingTask", TaskType.None);
+ taskBuilder.addInputSet().
+ addPropertyInput("Name", null).
+ addPropertyInput("From", null).
+ addPropertyInput("To", null).
+ addPropertyInput("Date", null).
+ addPropertyInput("Seats", null).
+ addSequenceFlow("SynchronizedJoinGateway");
+
+ // Build the SynchronizedJoinGateway
+ gatewayBuilder = procBuilder.addGateway("SynchronizedJoinGateway", GatewayType.Parallel);
+ gatewayBuilder.addGate("SendConfirmTask");
+
+ // Build the SendConfirmTask
+ taskBuilder = procBuilder.addTask("SendConfirmTask", TaskType.Send);
+ taskBuilder.addMessageRef("ConfirmMsg", messageListenerID).
+ addMessageProperty("Name", null, true).
+ addMessageProperty("From", null, true).
+ addMessageProperty("To", null, true).
+ addMessageProperty("Date", null, true).
+ addMessageProperty("Seats", null, true).
+ addMessageProperty("Price", null, true).
+ addSequenceFlow("End");
+
+ // Add the EndEvent
+ Process proc = procBuilder.addEndEvent("End").getProcess();
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ pm.registerProcess(proc);
+ return proc;
+ }
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java 2008-07-29 14:55:18 UTC (rev 1749)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java 2008-07-29 15:00:31 UTC (rev 1750)
@@ -32,18 +32,11 @@
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.client.SignalListener;
import org.jboss.bpm.client.SignalManager;
-import org.jboss.bpm.model.GatewayBuilder;
import org.jboss.bpm.model.Message;
import org.jboss.bpm.model.MessageBuilder;
import org.jboss.bpm.model.MessageBuilderFactory;
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
-import org.jboss.bpm.model.TaskBuilder;
-import org.jboss.bpm.model.Expression.ExpressionLanguage;
-import org.jboss.bpm.model.Gateway.GatewayType;
-import org.jboss.bpm.model.Task.TaskType;
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
@@ -120,7 +113,8 @@
public void testValidRequest() throws Exception
{
- final Process proc = buildDynamicProcess();
+ AirticketProcessBuilder builder = new AirticketProcessBuilder(getMessageListenerID());
+ Process proc = builder.buildProcess();
proc.startProcess();
ObjectName listenerID = getMessageListenerID();
@@ -139,7 +133,8 @@
public void testInvalidRequest() throws Exception
{
- final Process proc = buildDynamicProcess();
+ AirticketProcessBuilder builder = new AirticketProcessBuilder(getMessageListenerID());
+ Process proc = builder.buildProcess();
proc.startProcess();
ObjectName listenerID = getMessageListenerID();
@@ -156,148 +151,6 @@
assertEquals("222", price);
}
- private Process buildDynamicProcess()
- {
- // Create a Process through the ProcessBuilder
- ProcessBuilderFactory procFactory = ProcessBuilderFactory.newInstance();
- ProcessBuilder procBuilder = procFactory.newProcessBuilder();
- procBuilder.addProcess("Airticket").addStartEvent().addSequenceFlow("ReceiveReqTask");
-
- // Build the ReceiveReqTask
- TaskBuilder taskBuilder = procBuilder.addTask("ReceiveReqTask", TaskType.Receive);
- taskBuilder.addMessageRef("ReqDataMsg", null).
- addMessageProperty("Name", null, true).
- addMessageProperty("From", null, true).
- addMessageProperty("To", null, true).
- addMessageProperty("Date", null, true).
- addMessageProperty("Seats", null, true).
- addSequenceFlow("ValidateTask");
-
- // Build the ValidateTask
- taskBuilder = procBuilder.addTask("ValidateTask", TaskType.None);
- taskBuilder.addInputSet().
- addPropertyInput("Name", null).
- addPropertyInput("From", null).
- addPropertyInput("To", null).
- addPropertyInput("Date", null).
- addPropertyInput("Seats", null).
- addOutputSet().
- addPropertyOutput("isReqDataValid", null).
- addIORule("Name != null && From != null && To != null && Date != null && Seats > 0", ExpressionLanguage.MVEL).
- addSequenceFlow("ValidateGateway");
-
- // Build the ValidateGateway
- GatewayBuilder gatewayBuilder = procBuilder.addGateway("ValidateGateway", GatewayType.Exclusive);
- gatewayBuilder.addConditionalGate("CheckAvailabilityTask", ExpressionLanguage.MVEL, "isReqDataValid == true").
- addDefaultGate("SendInvalidTask");
-
- // Build the CheckAvailabilityTask
- taskBuilder = procBuilder.addTask("CheckAvailabilityTask", TaskType.None);
- taskBuilder.addExecutionHandler(AvailabilityHandler.class).
- addInputSet().
- addPropertyInput("From", null).
- addPropertyInput("To", null).
- addPropertyInput("Date", null).
- addPropertyInput("Seats", null).
- addOutputSet().
- addPropertyOutput("isAvailable", null).
- addPropertyOutput("Price", null).
- addSequenceFlow("AvailabilityGateway");
-
- // Build the SendInvalidTask
- taskBuilder = procBuilder.addTask("SendInvalidTask", TaskType.Send);
- taskBuilder.addMessageRef("InvalidDataMsg", getMessageListenerID()).
- addMessageProperty("Name", null, true).
- addMessageProperty("From", null, true).
- addMessageProperty("To", null, true).
- addMessageProperty("Date", null, true).
- addMessageProperty("Seats", null, true).
- addSequenceFlow("ReceiveReqTask");
-
- // Build the AvailabilityGateway
- gatewayBuilder = procBuilder.addGateway("AvailabilityGateway", GatewayType.Exclusive);
- gatewayBuilder.addConditionalGate("SendOfferTask", ExpressionLanguage.MVEL, "isAvailable == true").
- addDefaultGate("SendNotAvailableTask");
-
- // Build the SendOfferTask
- taskBuilder = procBuilder.addTask("SendOfferTask", TaskType.Send);
- taskBuilder.addMessageRef("OfferMsg", getMessageListenerID()).
- addMessageProperty("Name", null, true).
- addMessageProperty("From", null, true).
- addMessageProperty("To", null, true).
- addMessageProperty("Date", null, true).
- addMessageProperty("Seats", null, true).
- addMessageProperty("Price", null, true).
- addSequenceFlow("ReceiveOrderTask");
-
- // Build the SendNotAvailableTask
- taskBuilder = procBuilder.addTask("SendNotAvailableTask", TaskType.Send);
- taskBuilder.addMessageRef("NotAvailableMsg", getMessageListenerID()).
- addMessageProperty("Name", null, true).
- addMessageProperty("From", null, true).
- addMessageProperty("To", null, true).
- addMessageProperty("Date", null, true).
- addMessageProperty("Seats", null, true).
- addSequenceFlow("ReceiveReqTask");
-
- // Build the ReceiveReqTask
- taskBuilder = procBuilder.addTask("ReceiveOrderTask", TaskType.Receive);
- taskBuilder.addMessageRef("AcceptOfferMsg", null).
- addMessageProperty("CreditCard", null, true).
- addMessageProperty("Expire", null, true).
- addMessageProperty("isOfferAccepted", null, true).
- addSequenceFlow("AcceptOfferGateway");
-
- // Build the AcceptOfferGateway
- gatewayBuilder = procBuilder.addGateway("AcceptOfferGateway", GatewayType.Exclusive);
- gatewayBuilder.addConditionalGate("ParallelSplitGateway", ExpressionLanguage.MVEL, "isOfferAccepted == true").
- addDefaultGate("ReceiveReqTask");
-
- // Build the AcceptOfferGateway
- gatewayBuilder = procBuilder.addGateway("ParallelSplitGateway", GatewayType.Parallel);
- gatewayBuilder.addGate("CreditCardTask").
- addGate("BookingTask");
-
- // Build the CreditCardTask
- taskBuilder = procBuilder.addTask("CreditCardTask", TaskType.None);
- taskBuilder.addInputSet().
- addPropertyInput("CreditCard", null).
- addPropertyInput("Expire", null).
- addPropertyInput("Price", null).
- addSequenceFlow("SynchronizedJoinGateway");
-
- // Build the BookingTask
- taskBuilder = procBuilder.addTask("BookingTask", TaskType.None);
- taskBuilder.addInputSet().
- addPropertyInput("Name", null).
- addPropertyInput("From", null).
- addPropertyInput("To", null).
- addPropertyInput("Date", null).
- addPropertyInput("Seats", null).
- addSequenceFlow("SynchronizedJoinGateway");
-
- // Build the SynchronizedJoinGateway
- gatewayBuilder = procBuilder.addGateway("SynchronizedJoinGateway", GatewayType.Parallel);
- gatewayBuilder.addGate("SendConfirmTask");
-
- // Build the SendConfirmTask
- taskBuilder = procBuilder.addTask("SendConfirmTask", TaskType.Send);
- taskBuilder.addMessageRef("ConfirmMsg", getMessageListenerID()).
- addMessageProperty("Name", null, true).
- addMessageProperty("From", null, true).
- addMessageProperty("To", null, true).
- addMessageProperty("Date", null, true).
- addMessageProperty("Seats", null, true).
- addMessageProperty("Price", null, true).
- addSequenceFlow("End");
-
- // Add the EndEvent
- Process proc = procBuilder.addEndEvent("End").getProcess();
- ProcessManager pm = ProcessManager.locateProcessManager();
- pm.registerProcess(proc);
- return proc;
- }
-
private Message getValidRequestMessage()
{
MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
More information about the jbpm-commits
mailing list