[jboss-svn-commits] JBL Code SVN: r11382 - in labs/jbossesb/trunk/product: samples/quickstarts/jbpm_simple1/src/quickstart/jbpm_simple1/test and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Apr 26 17:04:44 EDT 2007


Author: estebanschifman
Date: 2007-04-26 17:04:44 -0400 (Thu, 26 Apr 2007)
New Revision: 11382

Removed:
   labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/processimage.jpg
   labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/readme.txt
Modified:
   labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/build.xml
   labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/jboss-esb.xml
   labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/src/quickstart/jbpm_simple1/test/TestBpmProcessor.java
   labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreter.java
Log:
Work on jbpm_simple1 quickstart

Modified: labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/build.xml
===================================================================
--- labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/build.xml	2007-04-26 21:00:57 UTC (rev 11381)
+++ labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/build.xml	2007-04-26 21:04:44 UTC (rev 11382)
@@ -40,10 +40,15 @@
 
 	<target name="runtest" depends="compile"
 		description="run full jBPM process lifecycle test">
-		<echo>Example of a full jBPM process lifecycle</echo>
+		<echo>Configure and invoke several jbpm processors</echo>
 	     
-	     <java fork="yes" classname="quickstart.jbpm_simple1.test.TestCommandMessages" failonerror="true">
-			<classpath refid="exec-classpath"/>
+	     <java fork="yes" classname="quickstart.jbpm_simple1.test.TestBpmProcessor" failonerror="true">
+			<classpath>
+				<pathelement location="." />
+			    <pathelement location="${basedir}/src" />
+				<pathelement location="${classes}" />
+				<path refid="compile-classpath" />
+			</classpath>
 			<sysproperty key="log4j.configuration" value="log4j.xml" />
 	     </java>
   </target>  

Modified: labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/jboss-esb.xml
===================================================================
--- labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/jboss-esb.xml	2007-04-26 21:00:57 UTC (rev 11381)
+++ labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/jboss-esb.xml	2007-04-26 21:04:44 UTC (rev 11382)
@@ -3,61 +3,118 @@
 
     <providers>
           <fs-provider name="FSprovider1">
-          	<fs-bus busid="jbpmFileChannel" >
+          	<fs-bus busid="jbpmProcessDeployerChannel" >
           		<fs-message-filter
           			directory="/tmp"
-          			input-suffix=".toJbpmQs1"
+          			input-suffix=".deployProcess"
           			post-delete="true"
           			error-delete="true"
           		/>
           	</fs-bus>
+
+          	<fs-bus busid="jbpmProcessInstantiatorChannel" >
+          		<fs-message-filter
+          			directory="/tmp"
+          			input-suffix=".newProcessInstance"
+          			post-delete="true"
+          			error-delete="true"
+          		/>
+          	</fs-bus>
+
+          	<fs-bus busid="jbpmProcessGetterChannel" >
+          		<fs-message-filter
+          			directory="/tmp"
+          			input-suffix=".getProcessInstance"
+          			post-delete="true"
+          			error-delete="true"
+          		/>
+          	</fs-bus>
           </fs-provider>
       </providers>
       
       <services>         
         <service 
 			category="jbpmQsCat1"
-			name="jbpmQsName1"
-        	description="Hello World File Action (esb listener)" >
+			name="deployer"
+        	description="Deploys a process definition" >
             <listeners>
-            	<fs-listener name="JbpmQuickstart_1"
-            		busidref="jbpmFileChannel"
+            	<fs-listener name="OrderProcessDeployer"
+            		busidref="jbpmProcessDeployerChannel"
             		maxThreads="1"
             		poll-frequency-seconds="3"
             	/>
             </listeners>
             <actions>
-				<action	name="TestDeployFromFile" 
+				<action	name="DeployFromFile" 
 						class="org.jboss.soa.esb.services.jbpm.actions.BpmProcessor"
 				>
 						<property name="command" value="DeployProcessDefinition" />
-						<property name="process-definition-file" value="simpleProcessDefinition.xml" />
+						<property name="process-definition-file" value="/simpleProcessDefinition.xml" />
 				</action>
 			
+            </actions>
+        </service>
+
+        <service 
+			category="jbpmQsCat2"
+			name="instantiator"
+        	description="New Instance of 'simple' process" >
+            <listeners>
+            	<fs-listener name="ProcessInstantiator"
+            		busidref="jbpmProcessInstantiatorChannel"
+            		maxThreads="1"
+            		poll-frequency-seconds="3"
+            	/>
+            </listeners>
+
+            <actions>
 				<action	name="aNewInstance" 
 						class="org.jboss.soa.esb.services.jbpm.actions.BpmProcessor"
 				>
 						<property name="command" value="NewProcessInstanceCommand" />
 						<property name="process-definition-name" value="simple"/>
 						<property name="actor" value="FrankSinatra"/>
-						<property name="variables">
-							<variable esb-name="eVar1" jbpm-name="j1"  value="AAAbbb111" />
-							<variable esb-name="eVar2" jbpm-name="vJ22"  value="998877" />
+						<property name="esb-to-jbpm">
+						  <variables>
+							<variable esb-name="eVar1" jbpm-name="orderNumber"  value="111-223344-5" />
+							<variable esb-name="eVar2" jbpm-name="orderDate"  value="2007/04/26" />
+						  </variables>
 						</property>
 				</action>
 			
-				<action	name="nowGetItBack" 
+            </actions>
+
+        </service>
+
+        <service 
+			category="jbpmQsCat3"
+			name="retriever"
+        	description="Retrieve process instance" >
+            <listeners>
+            	<fs-listener name="ProcessInterrogator"
+            		busidref="jbpmProcessGetterChannel"
+            		maxThreads="1"
+            		poll-frequency-seconds="3"
+            	/>
+            </listeners>
+
+            <actions>
+				<action	name="aInterrogate" 
 						class="org.jboss.soa.esb.services.jbpm.actions.BpmProcessor"
 				>
 						<property name="command" value="GetProcessInstanceCommand" />
-						<property name="variables">
-							<variable esb-name="yyy" jbpm-name="vJ22" />
-							<variable esb-name="xxx" jbpm-name="j1"  />
+						<property name="jbpm-to-esb">
+						  <variables>
+							<variable name="orderNumber" />
+							<variable name="orderDate"   />
+						  </variables>
 						</property>
 				</action>
 			
             </actions>
+
         </service>
+
       </services>
      
 </jbossesb>

Deleted: labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/processimage.jpg
===================================================================
(Binary files differ)

Deleted: labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/readme.txt
===================================================================
--- labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/readme.txt	2007-04-26 21:00:57 UTC (rev 11381)
+++ labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/readme.txt	2007-04-26 21:04:44 UTC (rev 11382)
@@ -1,36 +0,0 @@
-Overview:
-=========
-	This test assumes that  .../product/services/jbpm/build/jbpm.esb has been deployed
-	in the esb container deploy directory, and that the esb container is up and running
-
-	The jbpm service is configured to use JMS transport,   queue/B with a message 
-	selector:  type='toJbpm' (see .../product/services/jbpm/jboss-esb.xml)
-
-	It illustrates the lowest level method to invoke the jBPM API:  
-	  all jBPM parameters travel in the Message in a predefined format 
-	  (see org.jboss.soa.esb.services.jbpm.util.CommandVehicle)
-
-Running this quickstart:
-========================
-    Please refer to 'ant help-quickstarts' for prerequisites about the quickstarts and a
-    more detailed descripton of the different ways to run the quickstarts.
-
-To Run standalone mode:
-=======================
-    1.  In a command terminal window in the quickstart folder type 'ant deploy-jms-dests'.
-    2.  In a command terminal window in this folder ("Window1"), type 'ant run'.
-    3.  Switch to the application server console to see the output from the ESB
-
-
-What to look for in this Quickstart:
-====================================
-	1) A simple process definition (processdefinition.xml) is added to the jBPM DB
-	2) new process instance for it is created
-	3) a signal is sent to the token id returned in the previous call
-	4) a signal is sent to the current process instance id
-	5) the process instance is interrogated to see if it has ended
-
-
-	Other quickstarts will use higher level jBPM related specialized services that
-	require simpler interfaces, but that under the covers will still use this low
-	level command message interface

Modified: labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/src/quickstart/jbpm_simple1/test/TestBpmProcessor.java
===================================================================
--- labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/src/quickstart/jbpm_simple1/test/TestBpmProcessor.java	2007-04-26 21:00:57 UTC (rev 11381)
+++ labs/jbossesb/trunk/product/samples/quickstarts/jbpm_simple1/src/quickstart/jbpm_simple1/test/TestBpmProcessor.java	2007-04-26 21:04:44 UTC (rev 11382)
@@ -25,7 +25,6 @@
 import static org.junit.Assert.assertTrue;
 
 import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
 import java.io.PrintStream;
 
 import org.apache.log4j.Logger;
@@ -35,7 +34,6 @@
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.services.jbpm.Constants;
 import org.jboss.soa.esb.services.jbpm.util.Helper;
-import org.jbpm.graph.exe.Token;
 
 import com.arjuna.common.util.propertyservice.PropertyManager;
 
@@ -44,84 +42,48 @@
 
 	static Logger		_logger = Logger.getLogger(TestBpmProcessor.class);
 
-	private static final String TEST_SVC_CATEGORY	="categoryJbpmService";
-	private static final String TEST_SVC_NAME		="nameJbpmService";        	
-	private static final String TEST_PROCESS_NAME 	="simple";
-	
 	public static void main(String[] args) throws Exception
 	{
+		setupRegistry();
 		new TestBpmProcessor().run();
 	}
 	
-	
 
 	public void run() throws Exception 
 	{
-
-		setupRegistry();
-
-    	long 			instanceId=0		, tokenId=0;
-	   	 Constants.OpCode opCode = null;
 	   	 Message	request, response;
-	
-	   	 _logger.info("testFullProcessLifecycle() invoked");
+	   	 String[] curr; 
 	     try
 	     {
-	        opCode	= Constants.OpCode.DeployProcessDefinition;
-	     	request = Helper.commandMessageTemplate();
-	     	Helper.setStringValue(request, Constants.COMMAND_CODE, opCode);
-	     	Helper.setStringValue(request, Constants.PROCESS_DEFINITION_XML
-	     			, getProcessDefinitionXml("process_01.xml"));
-	
-	     	response = invokeJbpm(request);
-	 		_logger.info(dumpResponse(response, opCode));
-	 		assertTrue(Constants.RETCODE_OK.equals(Helper.getStringValue(response, Constants.RETURN_CODE)));
-	     	
-	     	opCode	= Constants.OpCode.NewProcessInstanceCommand;
-	     	request = Helper.commandMessageTemplate();
-	     	Helper.setStringValue(request, Constants.COMMAND_CODE, opCode);
-	     	Helper.setStringValue(request, Constants.PROCESS_DEFINITION_NAME, TEST_PROCESS_NAME);
-	     	response = invokeJbpm(request);
-	 		_logger.info(dumpResponse(response, opCode));
-	 		assertTrue(Constants.RETCODE_OK.equals(Helper.getStringValue(response, Constants.RETURN_CODE)));	    	
-	
-		     	instanceId	= Helper.getLongValue(response,Constants.PROCESS_INSTANCE_ID);
-		     	tokenId		= Helper.getLongValue(response,Constants.TOKEN_ID);
-	     	boolean signalToken = true;
-				for (boolean continueLooping = true; continueLooping;)
-				{
-					opCode	= Constants.OpCode.SignalCommand;
-					// for this test, alternatively signal:  token - process - token ...
-					
-		        	request = Helper.commandMessageTemplate();
-		        	Helper.setStringValue(request, Constants.COMMAND_CODE, opCode);
-		 	     	if (signalToken)
-		 	     		Helper.setLongValue(request, Constants.TOKEN_ID, tokenId);
-		 	     	else
-		 	     		Helper.setLongValue(request, Constants.PROCESS_INSTANCE_ID, instanceId);
-		 	     	response = invokeJbpm(request);
-					signalToken = ! signalToken;
-	
-		 	     	if (null!=response)
-			    		_logger.info(dumpResponse(response, opCode));
-					else
-						_logger.info("Response was not received");			
-		        	assertTrue(Constants.RETCODE_OK.equals(Helper.getObjectValue(response, Constants.RETURN_CODE)));
-		        	
-		        	Token token = (Token)Helper.getObjectValue(response, Constants.JBPM_RETURN_OBJECT);
-		        	if (token.hasEnded())
-		        		break;
-		 	     	instanceId	= Helper.getLongValue(response,Constants.PROCESS_INSTANCE_ID);
-		 	     	tokenId		= Helper.getLongValue(response,Constants.TOKEN_ID);
-				}
-	
+    		 curr = new String[]{"jbpmQsCat1"	,"deployer"}; 
+    		 request	= Helper.commandMessageTemplate();
+    		 // nothing extra required in message for 'deployer' service
+    		 response	= Invoker.invokeAndAwaitResponse(request,curr[0], curr[1], 30000);
+    		 System.out.println(dumpResponse(response));
+    		 
+    		 curr = new String[]{"jbpmQsCat2"	,"instantiator"}; 
+    		 request	= Helper.commandMessageTemplate();
+    		 // nothing extra required in message for 'instantiator' service
+    		 response	= Invoker.invokeAndAwaitResponse(request,curr[0], curr[1], 5000);
+    		 System.out.println(dumpResponse(response));
+
+    		 Long	tokenId	= Helper.getLongValue(response, Constants.TOKEN_ID);
+    		 
+    		 curr = new String[]{"jbpmQsCat3"	,"retriever"}; 
+    		 request	= Helper.commandMessageTemplate();
+    		 // we need to specify which token_id we wish to retrieve
+    		 // it was returned in the response received in the previous step
+    		 Helper.setLongValue(request, Constants.TOKEN_ID, tokenId);
+    		 
+    		 response	= Invoker.invokeAndAwaitResponse(request,curr[0], curr[1], 5000);
+    		 System.out.println(dumpResponse(response));
+    		 
 	     }
 	     catch (Exception _ex)
 	     {
 	         _ex.printStackTrace();
 	         assertTrue(false);
 	     }
-
 	}
 	
 	/**
@@ -129,7 +91,7 @@
 	 * Had to invoke it because I had trouble to have the properties loaded from jbossesb-properties.xml
 	 * Once that is solved, you can get rid of the invocation to this method (up in the run() )
 	 */
-	protected void setupRegistry() {
+	protected static void setupRegistry() {
 		PropertyManager mgr = null;
 		
 		mgr = ModulePropertyManager.getPropertyManager("registry");
@@ -147,41 +109,28 @@
 
 	}
 	
-   protected Message invokeJbpm(Message request) throws Exception
-   {
-	   return Invoker.invokeAndAwaitResponse(request,TEST_SVC_CATEGORY, TEST_SVC_NAME, 20000);
-   }
-
-	
-	protected String getProcessDefinitionXml(String pFileName) throws Exception
+	public static String dumpResponse(Message response)
 	{
-	    InputStream in = this.getClass().getClassLoader().getResourceAsStream(pFileName);
-		ByteArrayOutputStream out = new ByteArrayOutputStream();
-		byte[]ba = new byte[1000];
-		int iQ = -1;
-		while (-1<(iQ=in.read(ba)))
-			if (iQ>0)	out.write(ba,0,iQ);
-		return out.toString();
-	}
+		if (null==response)
+			return "No response received";
+		StringBuilder sb = new StringBuilder("\nResponse from service:\n");
+		sb.append(getObject(response,Constants.RETURN_CODE));
+		sb.append(getObject(response,Constants.ERROR_MESSAGE));
+		sb.append(getObject(response,Constants.EXCEPTION));
+		sb.append(getObject(response,Constants.ACTOR_ID));
+		sb.append(getObject(response,Constants.ACTOR_NAMES_ARRAY));
+		sb.append(getObject(response,Constants.CURRENT_NODE_NAME));
+		sb.append(getObject(response,Constants.JBPM_RETURN_OBJECT));
+		sb.append(getObject(response,Constants.PROCESS_DEFINITION_NAME));
+		sb.append(getObject(response,Constants.PROCESS_DEFINITION_VERSION));
+		sb.append(getObject(response,Constants.PROCESS_INSTANCE_ID));
+		sb.append(getObject(response,Constants.TASK_INSTANCE_ID));
+		sb.append(getObject(response,Constants.TOKEN_ID));
+		sb.append(getObject(response,Constants.HAS_ENDED));
 
-	public static String dumpResponse(Message message, Constants.OpCode opCode)
-	{
-		StringBuilder sb = new StringBuilder("\nInvoked: ").append(opCode.toString()).append("\n");
-		if (null==message)
-			return sb.append(" - No response received").toString();
-		sb.append(getObject(message,Constants.RETURN_CODE));
-		sb.append(getObject(message,Constants.ERROR_MESSAGE));
-		sb.append(getObject(message,Constants.EXCEPTION));
-		sb.append(getObject(message,Constants.ACTOR_ID));
-		sb.append(getObject(message,Constants.ACTOR_NAMES_ARRAY));
-		sb.append(getObject(message,Constants.CURRENT_NODE_NAME));
-		sb.append(getObject(message,Constants.JBPM_RETURN_OBJECT));
-		sb.append(getObject(message,Constants.PROCESS_DEFINITION_NAME));
-		sb.append(getObject(message,Constants.PROCESS_DEFINITION_VERSION));
-		sb.append(getObject(message,Constants.PROCESS_INSTANCE_ID));
-		sb.append(getObject(message,Constants.TASK_INSTANCE_ID));
-		sb.append(getObject(message,Constants.TOKEN_ID));
-		sb.append(getObject(message,Constants.HAS_ENDED));
+		sb.append(getObject(response,"orderDate"));
+		sb.append(getObject(response,"orderNumber"));
+		
 		return sb.append("_______________________________________________________________________")
 			.toString();		
 	}

Modified: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreter.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreter.java	2007-04-26 21:00:57 UTC (rev 11381)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreter.java	2007-04-26 21:04:44 UTC (rev 11382)
@@ -52,10 +52,10 @@
 public class CommandInterpreter implements ActionLifecycle
 {
 	public void destroy() throws ActionLifecycleException {
-		System.out.println("destroy() invoked");
+		_logger.info("destroy() invoked");
 	}
 	public void initialise() throws ActionLifecycleException {
-		System.out.println("initialise() invoked - config="+_config);
+		_logger.info("initialise() invoked - config="+_config);
 		if (null==_config)
 			_config = new ConfigTree("autoGenerated");
 		




More information about the jboss-svn-commits mailing list