[jboss-svn-commits] JBL Code SVN: r11118 - in labs/jbossesb/trunk/product/services/jbpm: src/main/java/org/jboss/soa/esb/services/jbpm and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Apr 19 04:09:51 EDT 2007
Author: estebanschifman
Date: 2007-04-19 04:09:51 -0400 (Thu, 19 Apr 2007)
New Revision: 11118
Added:
labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/Constants.java
labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/Helper.java
labs/jbossesb/trunk/product/services/jbpm/src/test/java/log4j.xml
labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml
labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/process_01.xml
Removed:
labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/CommandVehicle.java
labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml
labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/jbpm.cfg.xml
labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/util/
labs/jbossesb/trunk/product/services/jbpm/src/test/java/processdefinition.xml
Modified:
labs/jbossesb/trunk/product/services/jbpm/build.xml
labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/BaseActionHandler.java
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/SingleCommandProcessor.java
labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreterUnitTest.java
Log:
Modified: labs/jbossesb/trunk/product/services/jbpm/build.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/build.xml 2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/build.xml 2007-04-19 08:09:51 UTC (rev 11118)
@@ -15,10 +15,11 @@
<pathelement location="build/test/classes" />
<fileset dir="lib/ext" includes="*.jar" />
<fileset dir="${esb.product.lib.dir}" includes="*.jar" /> <!-- Product Jars. -->
+ <fileset dir="../../lib/ext" includes="*.jar" />
</path>
<target name="compile" depends="prepare">
- <javac srcdir="src/main/java" destdir="build/jbpm.esb">
+ <javac srcdir="src/main/java" destdir="build/jbpm.esb" debug="on" >
<classpath refid="classpath" />
</javac>
</target>
@@ -48,9 +49,12 @@
<target name="test" depends="esb">
<mkdir dir="build/test/classes"/>
<mkdir dir="build/test/report"/>
- <javac srcdir="src/test/java" destdir="build/test/classes">
+ <javac srcdir="src/test/java" destdir="build/test/classes" debug="on" >
<classpath refid="classpath" />
</javac>
+ <copy todir="build/test/classes" >
+ <fileset dir="src/test/java" includes="**/*.xml" />
+ </copy>
<junit fork="yes" haltonfailure="true" haltonerror="true" showoutput="off">
<formatter type="plain" usefile="false" />
<classpath refid="classpath" />
Added: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/Constants.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/Constants.java (rev 0)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/Constants.java 2007-04-19 08:09:51 UTC (rev 11118)
@@ -0,0 +1,139 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, 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.soa.esb.services.jbpm;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.jboss.soa.esb.services.jbpm.actions.CommandInterpreter;
+import org.jboss.soa.esb.util.ClassUtil;
+
+public class Constants {
+
+ private static Logger _logger = Logger.getLogger(Constants.class);
+
+ // Names to be used as keys both in the ESB message and in the Jbpm context (process & token)
+ public static final String COMMAND_CODE ="jbpmCommandCode";
+
+ public static final String PROCESS_DEFINITION ="jbpmProcessDefinition";
+ public static final String PROCESS_DEFINITION_XML ="jbpmProcessDefinitionXml";
+ public static final String PROCESS_DEFINITION_NAME ="jbpmProcessDefName";
+ public static final String PROCESS_DEFINITION_VERSION ="jbpmProcessDefVersion";
+ public static final String PROCESS_INSTANCE_ID ="jbpmProcessInstId";
+ public static final String TASK_INSTANCE_ID ="jbpmTaskInstId";
+ public static final String TOKEN_ID ="jbpmTokenId";
+ public static final String CREATE_START_TASK ="jbpmCreateStartTask";
+ public static final String INCLUDE_VARIABLES ="jbpmIncludeVariables";
+ public static final String INCLUDE_LOGS ="jbpmIncludeLogs";
+ public static final String VARIABLE_NAMES_LIST ="jbpmVariableNamesList";
+ public static final String ACTOR_ID ="jbpmActorId";
+ public static final String ACTOR_LIST ="jbpmActorList";
+ public static final String OVERWRITE_SWIMLANE ="jbpmOverwriteSwim";
+
+ public static final String TRANSITION_NAME ="jbpmTransitionName";
+ public static final String CURRENT_NODE_NAME ="jbpmCurrentNodeName";
+ public static final String VARIABLE_VALUES ="jbpmVariableValuesMap";
+ public static final String JBPM_RETURN_OBJECT ="jbpmReturnObject";
+ public static final String EXCEPTION ="jbpmException";
+ public static final String ERROR_MESSAGE ="jbpmErrorMsg";
+ public static final String RETURN_CODE ="jbpmReturnCode";
+
+ // Possible values of return codes after execution of an action
+ public static final String RETCODE_OK ="jbpmReturnOK";
+ public static final String RETCODE_INVALID_OPCODE ="jbpmReturnInvalidOpCode";
+ public static final String RETCODE_EXCEPTION ="jbpmReturnExceptionThrown";
+ public static final String RETCODE_ERROR ="jbpmReturnError";
+
+ // tag names for xml configuration of actions
+ public static final String PROCESS_DEFINITION_XML_TAG ="ProcessDefinitionXml";
+ public static final String PROCESS_DEFINITION_NAME_TAG ="ProcessDefinitionName";
+ public static final String TRANSITION_NAME_TAG ="TransitionName";
+ public static final String VARIABLES_TAG ="variables";
+
+ public enum OpCode
+ {
+ DeployProcessDefinition
+// AbstractCancelCommand
+// ,AbstractGetObjectBaseCommand
+// ,AsynchronousCommand
+ ,CancelProcessInstanceCommand
+ ,CancelTokenCommand
+ ,CancelWorkOnTaskCommand
+// ,ChangeProcessInstanceVersionCommand
+// ,Command
+// ,CommandService
+// ,CompositeCommand
+// ,GetProcessDefinitionCommand
+ ,GetProcessInstanceCommand
+// ,GetProcessInstancesCommand
+ ,GetTaskInstanceCommand
+ ,GetTaskListCommand
+ ,NewProcessInstanceCommand
+ ,SignalCommand
+ ,StartProcessInstanceCommand
+ ,StartWorkOnTaskCommand
+ ,TaskInstanceEndCommand
+ ,VariablesCommand
+ ;
+ public Class getClazz() throws ClassNotFoundException
+ {
+ return _mapName2class.get(toString());
+ }
+ }
+ private static Map<String,Class> _mapName2class = new HashMap<String, Class>();
+ private static Map<Class ,String> _mapClass2name = new HashMap<Class, String>();
+
+ public static String getCommandCode(Class clazz)
+ {
+ String cmd = _mapClass2name.get(clazz);
+ if (null==cmd)
+ throw new IllegalArgumentException("No command code mapped to <"+clazz+">");
+ return cmd;
+ }
+
+ static
+ {
+ String name = null, qName= null;
+ // at present, we assume all command implementors are in the org.jbpm.commmand pkg
+ // if this changes, you'll have to replace the for loop with individual put(name,Class)
+ for(OpCode curr : OpCode.values())
+ {
+ name = curr.toString();
+ if (curr.equals(OpCode.DeployProcessDefinition))
+ qName= CommandInterpreter.DeployProcessDefCommand.class.getName();
+ else
+ qName= "org.jbpm.command."+name;
+ try
+ {
+ Class clazz = ClassUtil.forName(qName, Constants.class);
+ _mapName2class.put(name,clazz);
+ _mapClass2name.put(clazz,name);
+ }
+ catch (ClassNotFoundException e)
+ {
+ _logger.fatal("",e);
+ }
+ }
+ }
+
+}
Property changes on: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/Constants.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/BaseActionHandler.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/BaseActionHandler.java 2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/BaseActionHandler.java 2007-04-19 08:09:51 UTC (rev 11118)
@@ -22,13 +22,16 @@
package org.jboss.soa.esb.services.jbpm.actions;
import java.net.URI;
+import java.net.URISyntaxException;
import java.util.UUID;
+import org.apache.log4j.Logger;
import org.jboss.soa.esb.ConfigurationException;
import org.jboss.soa.esb.addressing.Call;
-import org.jboss.soa.esb.services.jbpm.util.CommandVehicle;
-import org.jboss.soa.esb.listeners.ListenerUtil;
import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.services.jbpm.Constants;
+import org.jboss.soa.esb.services.jbpm.util.Helper;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ExecutionContext;
@@ -53,56 +56,57 @@
*
*/
-public class BaseActionHandler implements ActionHandler
+public abstract class BaseActionHandler implements ActionHandler
{
private static final long serialVersionUID = 1L;
- public String getContentVariableName() { return "esbUserObjectVariable"; }
-
public String esbCategoryName;
public String esbServiceName;
- public void execute(ExecutionContext context) throws Exception
+ protected Logger _logger = Logger.getLogger(getClass());
+
+ public Message getTemplate(ExecutionContext context) throws Exception
{
if (null==esbCategoryName)
throw new ConfigurationException("Service category (esbCategoryName element) must not be null");
if (null==esbServiceName)
throw new ConfigurationException("Service name (esbServiceName element) must not be null");
- Object userObject = context.getContextInstance().getVariable(getContentVariableName());
- if (null==userObject)
- throw new IllegalArgumentException("User object to be sent to ESB (variable="
- +getContentVariableName()+") is <null>");
+ Message template = MessageFactory.getInstance().getMessage();
+ URI uri = null;
+ try { uri = new URI(UUID.randomUUID().toString()); }
+ catch (URISyntaxException e)
+ {
+ _logger.fatal("Problem with UUID.randomUUID() - This should not happen");
+ return null;
+ }
+ template.getHeader().getCall().setMessageID(uri);
+
- CommandVehicle command = new CommandVehicle(CommandVehicle.Operation.sendMessageToEsb);
-
ProcessDefinition process = context.getProcessDefinition();
if (null!=process)
{
- command.setProcessDefinitionName(process.getName());
- command.setProcessVersion (process.getVersion());
+ Helper.setObjectValue(template, Constants.PROCESS_DEFINITION_NAME, process.getName());
+ Helper.setIntValue(template, Constants.PROCESS_DEFINITION_VERSION, process.getVersion());
}
ProcessInstance instance = context.getProcessInstance();
if (null!=instance)
{
- command.setInstanceId (context.getProcessInstance().getId());
+ Helper.setLongValue(template,Constants.PROCESS_INSTANCE_ID,context.getProcessInstance().getId());
}
+
Token token = context.getToken();
-
if (null!=token)
{
- command.setTokenId (token.getId());
+ Helper.setLongValue(template,Constants.TOKEN_ID,token.getId());
}
- command.setUserObject(userObject);
-
- Message message = command.toCommandMessage();
- Call call = message.getHeader().getCall();
+ Call call = template.getHeader().getCall();
call.setMessageID(new URI(UUID.randomUUID().toString()));
- ListenerUtil.tryToDeliver(message, esbCategoryName, esbServiceName);
+ return template;
}
}
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-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreter.java 2007-04-19 08:09:51 UTC (rev 11118)
@@ -21,27 +21,46 @@
*/
package org.jboss.soa.esb.services.jbpm.actions;
-import java.util.HashMap;
+import java.io.Serializable;
import java.util.Map;
-import java.util.Set;
import org.apache.log4j.Logger;
import org.jboss.soa.esb.ConfigurationException;
import org.jboss.soa.esb.actions.ActionLifecycle;
import org.jboss.soa.esb.actions.ActionLifecycleException;
+import org.jboss.soa.esb.actions.ActionProcessingException;
import org.jboss.soa.esb.addressing.EPR;
import org.jboss.soa.esb.addressing.MalformedEPRException;
import org.jboss.soa.esb.couriers.Courier;
import org.jboss.soa.esb.couriers.CourierException;
import org.jboss.soa.esb.couriers.CourierFactory;
import org.jboss.soa.esb.helpers.ConfigTree;
-import org.jboss.soa.esb.services.jbpm.util.CommandVehicle;
+import org.jboss.soa.esb.message.Body;
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.jboss.soa.esb.util.Util;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
+import org.jbpm.command.CancelProcessInstanceCommand;
+import org.jbpm.command.CancelTokenCommand;
+import org.jbpm.command.CancelWorkOnTaskCommand;
+import org.jbpm.command.Command;
+import org.jbpm.command.CommandService;
+import org.jbpm.command.GetProcessInstanceCommand;
+import org.jbpm.command.GetTaskInstanceCommand;
+import org.jbpm.command.GetTaskListCommand;
+import org.jbpm.command.NewProcessInstanceCommand;
+import org.jbpm.command.SignalCommand;
+import org.jbpm.command.StartProcessInstanceCommand;
+import org.jbpm.command.StartWorkOnTaskCommand;
+import org.jbpm.command.TaskInstanceEndCommand;
+import org.jbpm.command.VariablesCommand;
+import org.jbpm.command.impl.CommandServiceImpl;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.exe.Token;
+import org.jbpm.taskmgmt.exe.TaskInstance;
/**
*
@@ -91,317 +110,375 @@
return message;
} // ________________________________
- public Message process(Message message)
- throws MalformedEPRException, CourierException
+ protected Message replyMessage(Message input, Message output)
+ throws CourierException, MalformedEPRException
{
- _command = new CommandVehicle(message);
- Enum operator = _command.getOperator();
-
-
- if (operator.equals(CommandVehicle.Operation.signalToken))
- signalToken();
- else if (operator.equals(CommandVehicle.Operation.signalProcess))
- signalProcess();
- else if (operator.equals(CommandVehicle.Operation.hasInstanceEnded))
- checkInstanceEnded();
- else if (operator.equals(CommandVehicle.Operation.getProcessInstanceVariables))
- getProcessInstanceVariabes();
- else if (operator.equals(CommandVehicle.Operation.setProcessInstanceVariables))
- setProcessInstanceVariables();
- else if (operator.equals(CommandVehicle.Operation.getTokenVariables))
- getTokenVariabes();
- else if (operator.equals(CommandVehicle.Operation.setTokenVariables))
- setTokenVariables();
- else if (operator.equals(CommandVehicle.Operation.newProcessInstance))
- newProcessInstance();
- else if (operator.equals(CommandVehicle.Operation.deployProcessDefinition))
- deployProcessDefinition();
- else
- {
- _logger.error("Unknown operator: "+operator.toString()+" - Returning message unchanged");
- _command.setReturnCode(CommandVehicle.RETCODE_INVALID_OPCODE);
- }
-
- Message retMsg = _command.toCommandMessage();
- EPR toEpr = message.getHeader().getCall().getTo();
+ EPR toEpr = input.getHeader().getCall().getTo();
if (null!=toEpr)
- retMsg.getHeader().getCall().setTo(toEpr);
- EPR replyTo = message.getHeader().getCall().getReplyTo();
+ output.getHeader().getCall().setTo(toEpr);
+ EPR replyTo = input.getHeader().getCall().getReplyTo();
if (null!=replyTo)
- retMsg.getHeader().getCall().setReplyTo (replyTo);
- EPR faultTo = message.getHeader().getCall().getFaultTo();
+ output.getHeader().getCall().setReplyTo (replyTo);
+ EPR faultTo = input.getHeader().getCall().getFaultTo();
if (null!=faultTo)
- retMsg.getHeader().getCall().setFaultTo (faultTo);
- return (null==replyTo)? retMsg : defaultReply(retMsg);
- } // ________________________________
-
- public void deployProcessDefinition()
+ output.getHeader().getCall().setFaultTo (faultTo);
+ return (null==replyTo)? output : defaultReply(output);
+ } //________________________________
+
+ public Message process(Message message)
+ throws MalformedEPRException, CourierException, ActionProcessingException
{
+ Message response = null;
try
{
- prepareJbpm();
- String xmlString = _command.getProcessDefinitionXml();
- ProcessDefinition def = ProcessDefinition.parseXmlString(xmlString);
- _jbpmCtx.deployProcessDefinition(def);
- _command.setProcessDefinitionName (def.getName());
- _command.setProcessVersion (def.getVersion());
- _command.setReturnCode(CommandVehicle.RETCODE_OK);
+ Constants.OpCode opCode =Constants.OpCode
+ .valueOf((String)message.getBody().get(Constants.COMMAND_CODE));
+ if (opCode.equals(Constants.OpCode.DeployProcessDefinition))
+ response = deployProcessDefinition(message);
+ if (opCode.equals(Constants.OpCode.CancelProcessInstanceCommand))
+ response = cancelProcessInstance(message);
+ if (opCode.equals(Constants.OpCode.CancelTokenCommand))
+ response = cancelToken(message);
+ if (opCode.equals(Constants.OpCode.CancelWorkOnTaskCommand))
+ response = cancelWorkOnTask(message);
+ if (opCode.equals(Constants.OpCode.GetProcessInstanceCommand))
+ response = getProcessInstance(message);
+ if (opCode.equals(Constants.OpCode.GetTaskInstanceCommand))
+ response = getTaskInstance(message);
+ if (opCode.equals(Constants.OpCode.GetTaskListCommand))
+ response = getTaskList(message);
+ if (opCode.equals(Constants.OpCode.NewProcessInstanceCommand))
+ response = newProcessInstance(message, false);
+ if (opCode.equals(Constants.OpCode.SignalCommand))
+ response = signal(message);
+ if (opCode.equals(Constants.OpCode.StartProcessInstanceCommand))
+ response = newProcessInstance(message, true);
+ if (opCode.equals(Constants.OpCode.StartWorkOnTaskCommand))
+ response = startWorkOnTask(message);
+ if (opCode.equals(Constants.OpCode.TaskInstanceEndCommand))
+ response = taskInstanceEnd(message);
+ if (opCode.equals(Constants.OpCode.VariablesCommand))
+ response = variables(message);
+ if (null==response)
+ {
+ // this should NEVER happen
+ Exception e = new Exception("Something VERY WRONG with this class");
+ _logger.fatal(e);
+ throw e;
+ }
}
catch (Exception e)
{
- _command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
- _command.setException(e);
+ throw new ActionProcessingException(e);
}
- finally
- {
- cleanupJbpm();
- }
+
+ return replyMessage(message,response);
} //________________________________
- public void newProcessInstance()
+
+ public Message doTheJob(Command command)
{
+ Message response = Helper.responseTemplate();
+ Body body = response.getBody();
+
try
{
- prepareJbpm();
- _processInstance = _jbpmCtx.newProcessInstance(_command.getProcessDefinitionName());
- _jbpmCtx.save(_processInstance);
-
- _command.setProcessVersion(_processInstance.getProcessDefinition().getVersion());
- _command.setInstanceId (_processInstance.getId());
- _command.setTokenId (_processInstance.getRootToken().getId());
- _command.setCurrentNodeName(_processInstance.getRootToken().getNode().getName());
- _command.setReturnCode(CommandVehicle.RETCODE_OK);
+ Object obj = getJbpmCommandService().execute(command);
+ body.add(Constants.RETURN_CODE, Constants.RETCODE_OK);
+ if (null!=obj)
+ body.add(Constants.JBPM_RETURN_OBJECT, obj);
}
catch (Exception e)
{
- _command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
- _command.setException(e);
+ body.add(Constants.RETURN_CODE, Constants.RETCODE_EXCEPTION);
+ body.add(Constants.EXCEPTION, e);
}
- finally
- {
- cleanupJbpm();
- }
+
+ return response;
} //________________________________
- public void signalProcess()
+ /**
+ * Until there is an appropriate Command for this in the jBPM api, use the local implementation
+ * @param request Message - containing either a process definition, or it's XML representation
+ * @return
+ * @throws Exception
+ */
+ public Message deployProcessDefinition(Message request) throws Exception
{
- try
+ ProcessDefinition def = null;
+
+ Object obj = Helper.getObjectValue(request, Constants.PROCESS_DEFINITION);
+ if (null!=obj)
+ def = (ProcessDefinition) obj;
+ else
{
- long id = _command.getInstanceId();
- prepareJbpm();
- _processInstance = _jbpmCtx.loadProcessInstanceForUpdate(id);
- _processInstance.signal();
- _jbpmCtx.save(_processInstance);
-
- _command.setProcessDefinitionName (_processInstance.getProcessDefinition().getName());
- _command.setProcessVersion (_processInstance.getProcessDefinition().getVersion());
- _command.setTokenId (_processInstance.getRootToken().getId());
- _command.setCurrentNodeName (_processInstance.getRootToken().getNode().getName());
- _command.setUserObject (_processInstance.hasEnded());
- _command.setReturnCode (CommandVehicle.RETCODE_OK);
+ obj = Helper.getObjectValue(request,Constants.PROCESS_DEFINITION_XML);
+ def = ProcessDefinition.parseXmlString((String)obj);
}
- catch (Exception e)
+ Message response = doTheJob(new DeployProcessDefCommand(def));
+ Helper.setObjectValue(response, Constants.PROCESS_DEFINITION_NAME, def.getName());
+ Helper.setObjectValue(response, Constants.PROCESS_DEFINITION_VERSION, def.getVersion());
+ return response;
+ } // _______________________________
+
+ public Message cancelProcessInstance(Message request) throws Exception
+ {
+ long processId = Helper.getLongValue(request,Constants.PROCESS_INSTANCE_ID);
+ return doTheJob(new CancelProcessInstanceCommand(processId));
+ } // _______________________________
+
+ public Message cancelToken(Message request) throws Exception
+ {
+ long tokenId = Helper.getLongValue(request,Constants.TOKEN_ID);
+ return doTheJob(new CancelTokenCommand(tokenId));
+ } // _______________________________
+
+ public Message cancelWorkOnTask(Message request) throws Exception
+ {
+ long taskId = Helper.getLongValue(request,Constants.TASK_INSTANCE_ID);
+ return doTheJob(new CancelWorkOnTaskCommand(taskId));
+ } // _______________________________
+
+ public Message getProcessInstance(Message request) throws Exception
+ {
+ GetProcessInstanceCommand command = new GetProcessInstanceCommand();
+ Long id = Helper.getLongValue(request,Constants.PROCESS_INSTANCE_ID);
+ if (null!=id)
+ command.setProcessInstanceId(id);
+ else
{
- _command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
- _command.setException(e);
+ id = Helper.getLongValue(request, Constants.TOKEN_ID);
+ if (null!=id)
+ command.setTokenId(id);
+ else
+ {
+ id = Helper.getLongValue(request, Constants.TASK_INSTANCE_ID);
+ if (null!=id)
+ command.setTaskInstanceId(id);
+ else
+ throw new Exception
+ ("Either <"+Constants.PROCESS_INSTANCE_ID
+ +"> or <"+Constants.TOKEN_ID
+ +"> or <"+Constants.TASK_INSTANCE_ID
+ +"> object must be specified in Message body to know what to retrieve");
+
+ }
+
}
- finally
- {
- cleanupJbpm();
- }
- } //________________________________
-
- public void signalToken()
+ Boolean includeVars = Helper.getBooleanValue(request, Constants.INCLUDE_VARIABLES);
+ if (null!=includeVars)
+ command.setIncludeAllVariables(includeVars);
+ Boolean includeLogs = Helper.getBooleanValue(request, Constants.INCLUDE_LOGS);
+ if (null!=includeLogs)
+ command.setIncludeLogs(includeLogs);
+ return doTheJob(command);
+ } // _______________________________
+
+ public Message getTaskInstance(Message request) throws Exception
{
- try
+ long taskId = Helper.getLongValue(request,Constants.TASK_INSTANCE_ID);
+ GetTaskInstanceCommand command = new GetTaskInstanceCommand(taskId);
+ String[] vars = Helper.getStringListValue(request,Constants.VARIABLE_NAMES_LIST);
+ if (null!=vars)
{
- long id = _command.getTokenId();
- prepareJbpm();
- _token = _jbpmCtx.loadTokenForUpdate(id);
- _token.signal();
- _jbpmCtx.save(_token);
-
- _processInstance = _token.getProcessInstance();
- _command.setProcessDefinitionName (_processInstance.getProcessDefinition().getName());
- _command.setProcessVersion (_processInstance.getProcessDefinition().getVersion());
- _command.setInstanceId (_processInstance.getId());
- _command.setCurrentNodeName (_token.getNode().getName());
- _command.setUserObject (_processInstance.hasEnded());
- _command.setReturnCode (CommandVehicle.RETCODE_OK);
+ if (vars.length < 1)
+ command.setIncludeAllVariables(false);
+ else
+ command.setVariablesToInclude(vars);
}
- catch (Exception e)
+ else
{
- _command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
- _command.setException(e);
+ Boolean includeVars = Helper.getBooleanValue(request, Constants.INCLUDE_VARIABLES);
+ if (null!=includeVars)
+ command.setIncludeAllVariables(includeVars);
}
- finally
- {
- cleanupJbpm();
- }
- } //________________________________
+ Boolean includeLogs = Helper.getBooleanValue(request, Constants.INCLUDE_LOGS);
+ if (null!=includeLogs)
+ command.setIncludeLogs(includeLogs);
- public void getProcessInstanceVariabes()
- {
- try
+ Message response = doTheJob(command);
+ TaskInstance tInst = (TaskInstance)Helper.getObjectValue(response, Constants.JBPM_RETURN_OBJECT);
+ if (null!=tInst)
{
- long id = _command.getInstanceId();
- prepareJbpm();
- _processInstance = _jbpmCtx.loadProcessInstance(id);
- Map allVars = _processInstance.getContextInstance().getVariables();
- _command.setVariableValues (pickVarsFromMap(allVars));
-
- _command.setProcessDefinitionName (_processInstance.getProcessDefinition().getName());
- _command.setProcessVersion (_processInstance.getProcessDefinition().getVersion());
- _command.setTokenId (_processInstance.getRootToken().getId());
- _command.setCurrentNodeName (_processInstance.getRootToken().getNode().getName());
- _command.setReturnCode (CommandVehicle.RETCODE_OK);
+ Helper.setLongValue(response, Constants.PROCESS_INSTANCE_ID ,tInst.getProcessInstance().getId());
+ Helper.setLongValue(response, Constants.TOKEN_ID ,tInst.getToken().getId());
+ Helper.setLongValue(response, Constants.TASK_INSTANCE_ID ,tInst.getId());
}
- catch (Exception e)
- {
- _command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
- _command.setException(e);
- }
- finally { cleanupJbpm(); }
- } //________________________________
- public void checkInstanceEnded()
+ return response;
+ } // _______________________________
+
+ public Message getTaskList(Message request) throws Exception
{
- try
+ String[] actors = Helper.getStringListValue(request,Constants.ACTOR_LIST);
+ if (null==actors || actors.length<1)
+ throw new Exception(Helper.argumentException(Constants.ACTOR_LIST));
+
+ GetTaskListCommand command = new GetTaskListCommand(actors);
+
+ String[] vars = Helper.getStringListValue(request,Constants.VARIABLE_NAMES_LIST);
+ if (null!=vars)
{
- long id = _command.getInstanceId();
- prepareJbpm();
- _processInstance = _jbpmCtx.loadProcessInstance(id);
- _command.setUserObject(_processInstance.hasEnded());
-
- _command.setProcessDefinitionName (_processInstance.getProcessDefinition().getName());
- _command.setProcessVersion (_processInstance.getProcessDefinition().getVersion());
- _command.setTokenId (_processInstance.getRootToken().getId());
- _command.setCurrentNodeName (_processInstance.getRootToken().getNode().getName());
- _command.setReturnCode (CommandVehicle.RETCODE_OK);
+ if (vars.length < 1)
+ command.setIncludeAllVariables(false);
+ else
+ command.setVariablesToInclude(vars);
}
- catch (Exception e)
+ else
{
- _command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
- _command.setException(e);
+ Boolean includeVars = Helper.getBooleanValue(request, Constants.INCLUDE_VARIABLES);
+ if (null!=includeVars)
+ command.setIncludeAllVariables(includeVars);
}
- finally { cleanupJbpm(); }
- } //________________________________
- public void setProcessInstanceVariables()
+ return doTheJob(command);
+ } // _______________________________
+
+ public Message newProcessInstance(Message request, boolean start) throws Exception
{
- try
+ String processName = Helper.getStringValue(request,Constants.PROCESS_DEFINITION_NAME);
+ if (Util.isNullString(processName))
+ throw new Exception(Helper.argumentException(Constants.PROCESS_DEFINITION_NAME));
+ NewProcessInstanceCommand command = null;
+ if (start)
{
- Map<String,Object>newVals = _command.getVariableValues();
- if (null==newVals || newVals.size()<1)
+ StartProcessInstanceCommand startCmd = new StartProcessInstanceCommand();
+ String transition = Helper.getStringValue(request, Constants.TRANSITION_NAME);
+ if (null!=transition)
+ startCmd.setStartTransitionName(transition);
+ command = startCmd;
+ }
+ else
+ command = new NewProcessInstanceCommand();
+
+ command.setProcessName(processName);
+
+ String actorId = Helper.getStringValue(request, Constants.ACTOR_ID);
+ if (null!=actorId)
+ command.setActorId(actorId);
+ Boolean createStartTask = Helper.getBooleanValue(request, Constants.CREATE_START_TASK);
+ if (null!=createStartTask)
+ command.setCreateStartTask(createStartTask);
+ Map<String, Serializable> variables = Helper.getVariablesMap(request, Constants.VARIABLE_VALUES);
+ if (null!=variables)
+ command.setVariables(variables);
+
+ Message response = doTheJob(command);
+
+ String retCode = Helper.getStringValue(response, Constants.RETURN_CODE);
+ if (Constants.RETCODE_OK.equals(retCode))
+ {
+ Object obj = Helper.getObjectValue(response, Constants.JBPM_RETURN_OBJECT);
+ if (obj instanceof TaskInstance)
{
- _command.setReturnCode(CommandVehicle.RETCODE_ERROR);
- _command.setErrorMessage("Null or empty variable Map");
- return;
+ TaskInstance tInst = (TaskInstance)obj;
+ Helper.setLongValue(response, Constants.PROCESS_INSTANCE_ID ,tInst.getProcessInstance().getId());
+ Helper.setLongValue(response, Constants.TOKEN_ID ,tInst.getToken().getId());
+ Helper.setLongValue(response, Constants.TASK_INSTANCE_ID ,tInst.getId());
}
- long id = _command.getInstanceId();
- prepareJbpm();
- _processInstance = _jbpmCtx.loadProcessInstanceForUpdate(id);
- _processInstance.getContextInstance().addVariables(newVals);
- _jbpmCtx.save(_processInstance);
-
- _command.setProcessDefinitionName (_processInstance.getProcessDefinition().getName());
- _command.setProcessVersion (_processInstance.getProcessDefinition().getVersion());
- _command.setInstanceId (_processInstance.getId());
- _command.setTokenId (_processInstance.getRootToken().getId());
- _command.setCurrentNodeName (_processInstance.getRootToken().getNode().getName());
- _command.setReturnCode (CommandVehicle.RETCODE_OK);
+ else if (obj instanceof ProcessInstance)
+ {
+ ProcessInstance pInst = (ProcessInstance)obj;
+ Helper.setLongValue(response, Constants.PROCESS_INSTANCE_ID, pInst.getId());
+ Helper.setLongValue(response, Constants.TOKEN_ID ,pInst.getRootToken().getId());
+ }
}
- catch (Exception e)
- {
- _command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
- _command.setException(e);
- }
- finally
- {
- cleanupJbpm();
- }
- } //________________________________
-
- public void getTokenVariabes()
+ return response;
+ } // _______________________________
+
+ public Message signal(Message request) throws Exception
{
- try
+ SignalCommand command = new SignalCommand();
+ String transition = Helper.getStringValue(request, Constants.TRANSITION_NAME);
+ if (null!=transition)
+ command.setTransitionName(transition);
+
+ // try token id first
+ Long tokenId = Helper.getLongValue(request,Constants.TOKEN_ID);
+ if (null== tokenId)
{
- long id = _command.getTokenId();
- prepareJbpm();
- _token = _jbpmCtx.loadToken(id);
- Map allVars = _token.getProcessInstance().getContextInstance().getVariables(_token);
- _command.setVariableValues(pickVarsFromMap(allVars));
-
- _processInstance = _token.getProcessInstance();
- _command.setProcessDefinitionName (_processInstance.getProcessDefinition().getName());
- _command.setProcessVersion (_processInstance.getProcessDefinition().getVersion());
- _command.setInstanceId (_processInstance.getId());
- _command.setCurrentNodeName (_token.getNode().getName());
- _command.setReturnCode (CommandVehicle.RETCODE_OK);
+ // now try with the process id (use root token)
+ Long processId = Helper.getLongValue(request,Constants.PROCESS_INSTANCE_ID);
+ if (null== processId)
+ throw new Exception("Either <"+Constants.TOKEN_ID+"> or <"+Constants.PROCESS_INSTANCE_ID
+ +"> object must be specified in Message body to know who to signal");
+ ProcessInstance inst = (ProcessInstance)getJbpmCommandService().execute(new GetProcessInstanceCommand(processId));
+ tokenId = inst.getRootToken().getId();
}
- catch (Exception e)
+ command.setTokenId(tokenId);
+
+ Message response = doTheJob(command);
+ Token token = (Token)Helper.getObjectValue(response, Constants.JBPM_RETURN_OBJECT);
+ if (null!=token)
{
- _command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
- _command.setException(e);
+ Helper.setLongValue(response, Constants.TOKEN_ID ,token.getId());
+ Helper.setLongValue(response, Constants.PROCESS_INSTANCE_ID, token.getProcessInstance().getId());
}
- finally { cleanupJbpm(); }
- } //________________________________
+ return response;
+ } // _______________________________
+
+ public Message startWorkOnTask(Message request) throws Exception
+ {
+ StartWorkOnTaskCommand command = new StartWorkOnTaskCommand();
+ Long taskId = Helper.getLongValue(request, Constants.TASK_INSTANCE_ID);
+ if (null!=taskId)
+ command.setTaskInstanceId(taskId);
+ Boolean overwrite = Helper.getBooleanValue(request, Constants.OVERWRITE_SWIMLANE);
+ if (null!=overwrite)
+ command.setOverwriteSwimlane(overwrite);
+ return doTheJob(command);
+ } // _______________________________
- public void setTokenVariables()
+ public Message taskInstanceEnd(Message request) throws Exception
{
- try
- {
- Map<String,Object>newVals = _command.getVariableValues();
- if (null==newVals || newVals.size()<1)
- {
- _command.setReturnCode(CommandVehicle.RETCODE_ERROR);
- _command.setErrorMessage("Null or empty variable Map");
- return;
- }
- long id = _command.getTokenId();
- prepareJbpm();
- _token = _jbpmCtx.loadToken(id);
- _token.getProcessInstance().getContextInstance().addVariables(newVals,_token);
- _jbpmCtx.save(_token);
+ TaskInstanceEndCommand command = new TaskInstanceEndCommand();
+ Long taskId = Helper.getLongValue(request,Constants.TASK_INSTANCE_ID);
+ if (null!=taskId)
+ command.setTaskInstanceId(taskId);
+ Map<String, Serializable> variables = Helper.getVariablesMap(request, Constants.VARIABLE_VALUES);
+ if (null!=variables)
+ command.setVariables(variables);
- _command.setProcessDefinitionName (_processInstance.getProcessDefinition().getName());
- _command.setProcessVersion (_processInstance.getProcessDefinition().getVersion());
- _command.setInstanceId (_processInstance.getId());
- _command.setTokenId (_processInstance.getRootToken().getId());
- _command.setCurrentNodeName (_processInstance.getRootToken().getNode().getName());
- _command.setReturnCode (CommandVehicle.RETCODE_OK);
- }
- catch (Exception e)
+ String transition = Helper.getStringValue(request, Constants.TRANSITION_NAME);
+ if (null!=transition)
+ command.setTransitionName(transition);
+
+ Message response = doTheJob(command);
+ TaskInstance tInst = (TaskInstance)Helper.getObjectValue(response, Constants.JBPM_RETURN_OBJECT);
+ if (null!=tInst)
{
- _command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
- _command.setException(e);
+ Helper.setLongValue(response, Constants.PROCESS_INSTANCE_ID ,tInst.getProcessInstance().getId());
+ Helper.setLongValue(response, Constants.TOKEN_ID ,tInst.getToken().getId());
+ Helper.setLongValue(response, Constants.TASK_INSTANCE_ID ,tInst.getId());
}
- finally
- {
- cleanupJbpm();
- }
- } //________________________________
+ return response;
+ } // _______________________________
- /**
- * Get list of variables requested in command, from map in arg0.
- * <br/>List of requested variables is obtained from command invoking the getVariableNames() method.
- * <br/>If the list of variable names is NULL, all variables in the map will be returned.
- * <br/>If it's an empty List, an empty map will be returned (why would anybody ask for an empty list of vars ?)
- * @param variables
- * @return
- */
- @SuppressWarnings("unchecked")
- protected Map<String,Object>pickVarsFromMap(Map variables)
+ public Message variables(Message request) throws Exception
{
- Set<String>names = _command.getVariableNames();
- if (null==names)
- return variables;
+ VariablesCommand command = new VariablesCommand();
+ Long id = Helper.getLongValue(request, Constants.TOKEN_ID);
+ if (null!=id)
+ command.setTokenId(id);
+ else
+ {
+ id = Helper.getLongValue(request, Constants.TASK_INSTANCE_ID);
+ if (null!=id)
+ command.setTaskInstanceId(id);
+ else
+ throw new Exception
+ ("Either <"+Constants.TOKEN_ID
+ +"> or <"+Constants.TASK_INSTANCE_ID
+ +"> object must be specified in Message body to know what to retrieve");
+
+ }
+
+ Map<String, Serializable> variables = Helper.getVariablesMap(request, Constants.VARIABLE_VALUES);
+ if (null!=variables)
+ command.setVariables(variables);
+
- Map<String,Object>retMap = new HashMap<String, Object>();
- for(String curr : names)
- retMap.put(curr, variables.get(curr));
-
- return retMap;
- } //________________________________
+ return doTheJob(command);
+ } // _______________________________
/**
* Should this class need any extra configuration, this is the placeholder where to check
@@ -412,24 +489,26 @@
{
} // _______________________________
- protected void prepareJbpm()
- {
- _jbpmCtx = null;
- _jbpmCtx = getJbpmConfig().createJbpmContext();
- } //________________________________
- protected void cleanupJbpm()
- {
- if (null!=_jbpmCtx) _jbpmCtx.close();
- _jbpmCtx = null;
- _processInstance= null;
- _token = null;
- } //________________________________
-
/**
- * Encapsulate obtention of jBPM configuration here.
+ * Encapsulate obtention of jBPM CommandService here
* <br/>If it can't be cached, we only need to change this method.
- * @return JbpmConfiguration
+ * @return CommandService
*/
+ protected static CommandService getJbpmCommandService()
+ {
+ if (null== s_jbpmService)
+ synchronized (s_oSynch)
+ {
+ if (null!= s_jbpmService)
+ return s_jbpmService;
+
+ if (null==s_jbpmConfig)
+ s_jbpmConfig = JbpmConfiguration.getInstance();
+ s_jbpmService = new CommandServiceImpl(s_jbpmConfig);
+ }
+ return s_jbpmService;
+ } //________________________________
+
protected static JbpmConfiguration getJbpmConfig()
{
if (null== s_jbpmConfig)
@@ -440,15 +519,48 @@
}
return s_jbpmConfig;
} //________________________________
+
+ /**
+ * Set an ad hoc jbpm configuration (generally used for testing)
+ * @param xmlConfig String - The jbpm.cfg.xml compliant xml string
+ * @throws Exception - If jbpm configuration was already set
+ */
+ public static void setJbpmConfig(String xmlConfig) throws Exception
+ {
+ if (null== s_jbpmConfig)
+ synchronized (s_oSynch)
+ {
+ if (null==s_jbpmConfig)
+ {
+ s_jbpmConfig = JbpmConfiguration.getInstance(xmlConfig);
+ return;
+ }
+ }
+ throw new Exception("Jbpm configuration has already been set");
+ } //________________________________
- protected ConfigTree _config;
- protected CommandVehicle _command;
- private static final Object s_oSynch = new Integer(0);
- private static JbpmConfiguration s_jbpmConfig;
- protected JbpmContext _jbpmCtx;
- protected ProcessInstance _processInstance;
- protected Token _token;
+ protected ConfigTree _config;
+ private static Logger _logger = Logger.getLogger(CommandInterpreter.class);
+
+ private static final Object s_oSynch = new Integer(0);
+ private static JbpmConfiguration s_jbpmConfig;
+ private static CommandService s_jbpmService;
- protected static Logger _logger = Logger.getLogger(CommandInterpreter.class);
+ public static class DeployProcessDefCommand implements Command
+ {
+ private static final long serialVersionUID = 1L;
+ ProcessDefinition _def;
+
+ public DeployProcessDefCommand(ProcessDefinition def)
+ {
+ _def = def;
+ }
+ public Object execute(JbpmContext jbpmCtx) throws Exception
+ {
+ jbpmCtx.deployProcessDefinition(_def);
+ return null;
+ }
+
+ }
}
Modified: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/SingleCommandProcessor.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/SingleCommandProcessor.java 2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/SingleCommandProcessor.java 2007-04-19 08:09:51 UTC (rev 11118)
@@ -19,92 +19,130 @@
* 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.soa.esb.services.jbpm.actions;
import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.actions.ActionProcessingException;
+import org.jboss.soa.esb.addressing.MalformedEPRException;
+import org.jboss.soa.esb.couriers.CourierException;
import org.jboss.soa.esb.helpers.ConfigTree;
-import org.jboss.soa.esb.services.jbpm.util.CommandVehicle;
-import org.jboss.soa.esb.util.Util;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.services.jbpm.Constants;
+import org.jboss.soa.esb.services.jbpm.util.Helper;
public class SingleCommandProcessor extends CommandInterpreter
{
- public static final String SINGLE_COMMAND_ELEMENT_TAG = "command";
- public static final String METHOD_TAG = "method";
+ public static final String COMMAND_ATTRIBUTE_TAG = "command";
public SingleCommandProcessor(ConfigTree config) throws ConfigurationException
{
super(config);
} // ________________________________
+
+ public Message process (Message message)
+ throws MalformedEPRException, CourierException, ActionProcessingException
+ {
+ if (null==_thisProcessor)
+ throw new ActionProcessingException("Problems with configuration - this should never happen");
+
+ return super.process(_thisProcessor.preProcess(message));
+ } //________________________________
+
protected void checkMyParms() throws ConfigurationException
{
super.checkMyParms();
- ConfigTree[] oa = _config.getChildren(SINGLE_COMMAND_ELEMENT_TAG);
- if (oa.length != 1)
- throw new ConfigurationException("Configuration must have a single <command> child element");
- _config = oa[0];
-
- String aux = _config.getAttribute(METHOD_TAG);
- if (Util.isNullString(aux))
- throw new ConfigurationException("Missing '"+METHOD_TAG+"' attribute");
-
- try { _oper = CommandVehicle.Operation.valueOf(aux); }
+
+ String sAux = _config.getRequiredAttribute(COMMAND_ATTRIBUTE_TAG);
+ try { _oper = Constants.OpCode.valueOf(sAux); }
catch (IllegalArgumentException e)
{
- throw new ConfigurationException("Attribute '"+METHOD_TAG+"' has an invalid value"
+ throw new ConfigurationException("Attribute '"+COMMAND_ATTRIBUTE_TAG+"' has an invalid value"
+"- see CommandVehicle.Operation enum for possible values");
}
- if (_oper.equals(CommandVehicle.Operation.deployProcessDefinition)) parmsProcessDef ();
- else if(_oper.equals(CommandVehicle.Operation.getProcessInstanceVariables)) parmsGetProcessVars ();
- else if(_oper.equals(CommandVehicle.Operation.getTokenVariables)) parmsGetTokenVars ();
- else if(_oper.equals(CommandVehicle.Operation.hasInstanceEnded)) parmsInstanceEnded ();
- else if(_oper.equals(CommandVehicle.Operation.newProcessInstance)) parmsNewInstance ();
- else if(_oper.equals(CommandVehicle.Operation.setProcessInstanceVariables)) parmsSetProcessVars ();
- else if(_oper.equals(CommandVehicle.Operation.setTokenVariables)) parmsSetTokenVars ();
- else if(_oper.equals(CommandVehicle.Operation.signalProcess)) parmsSignalProcess ();
- else if(_oper.equals(CommandVehicle.Operation.signalToken)) parmsSignalToken ();
- else
- throw new ConfigurationException(_oper.toString()
- +" is not a valid operation for this action class");
+
} // _______________________________
- protected void parmsProcessDef() throws ConfigurationException
+ protected void implementDeployProcessDef() throws ConfigurationException
{
+ ConfigTree[] childs = _config.getChildren(Constants.PROCESS_DEFINITION_NAME_TAG);
+ if (null==childs || childs.length<1)
+ throw new ConfigurationException("Missing or invalid <"+Constants.PROCESS_DEFINITION_NAME_TAG+"> element");
+ if (childs.length>1)
+ throw new ConfigurationException("Only one <"+Constants.PROCESS_DEFINITION_NAME_TAG+"> element can be specified");
+ final String xmlString = childs[0].toString();
+ try
+ {
+ _thisProcessor = new CommandSpecificProcessor()
+ {
+ public Message preProcess(Message message)
+ {
+ Helper.setObjectValue(message, Constants.COMMAND_CODE,Constants.OpCode.DeployProcessDefinition);
+ Helper.setObjectValue(message, Constants.PROCESS_DEFINITION_XML, xmlString);
+ return message;
+ }
+ };
+ }
+ catch (Exception e)
+ {
+ throw new ConfigurationException(e);
+ }
} // _______________________________
- protected void parmsGetProcessVars() throws ConfigurationException
+ protected void implementGetProcessVars() throws ConfigurationException
{
} // _______________________________
- protected void parmsGetTokenVars() throws ConfigurationException
+ protected void implementGetTokenVars() throws ConfigurationException
{
} // _______________________________
- protected void parmsInstanceEnded() throws ConfigurationException
+ protected void implementHasInstanceEnded() throws ConfigurationException
{
// this is just a placeholder - No extra attributes nor elements needed by this op
// process instance id must come in each incoming message
} // _______________________________
- protected void parmsNewInstance() throws ConfigurationException
+ protected void implementNewProcessInstance() throws ConfigurationException
{
} // _______________________________
- protected void parmsSetProcessVars() throws ConfigurationException
+ protected void implementSetProcessVars() throws ConfigurationException
{
} // _______________________________
- protected void parmsSetTokenVars() throws ConfigurationException
+ protected void implementSetTokenVars() throws ConfigurationException
{
} // _______________________________
- protected void parmsSignalProcess() throws ConfigurationException
+ protected void implementSignalProcess() throws ConfigurationException
{
} // _______________________________
- protected void parmsSignalToken() throws ConfigurationException
+ protected void implementSignalToken() throws ConfigurationException
{
} // _______________________________
-
- CommandVehicle.Operation _oper;
+
+
+ /**
+ * Map source variable name to target variable name - Default is same name.
+ * <br/>Depending on the operation code, this will translate jBPM context names to
+ * esb Message body object names, or vice-versa
+ * @param sourceName String - The variable name to translate
+ * @return String - The target variable name, or arg0 if it was not mapped
+ */
+ protected String getTargetVarName(String sourceName)
+ {
+ return sourceName;
+ }
+
+ protected Constants.OpCode _oper;
+ protected CommandSpecificProcessor _thisProcessor;
+
+ // Use this command pattern to specialize behaviour for each individual command
+ protected abstract class CommandSpecificProcessor
+ {
+ abstract Message preProcess(Message message) throws ActionProcessingException;
+ }
}
Deleted: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/CommandVehicle.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/CommandVehicle.java 2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/CommandVehicle.java 2007-04-19 08:09:51 UTC (rev 11118)
@@ -1,130 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, 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.soa.esb.services.jbpm.util;
-
-import java.util.Map;
-import java.util.Set;
-
-import org.jboss.soa.esb.message.Message;
-import org.jboss.soa.esb.util.AbstractCommandVehicle;
-
-/**
- *
- * Base class to use when a jBPM command should go through the wire to a jBPM aware ESB action class.
- *
- * <p/>When more commands are added to the 'Command' enumeration, corresponding action class
- * (org.jboss.soa.esb.actions.JbpmCommandInterpreter) should be modified accordingly in order to
- * execute new commands
- *
- * @author <a href="mailto:schifest at heuristica.com.ar">schifest at heuristica.com.ar</a>
- *
- */
-public class CommandVehicle extends AbstractCommandVehicle
-{
- private static final long serialVersionUID = 1L;
-
- @Override
- public String getCommandValuesTag() { return "jBPMCommandValues"; }
- @Override
- public String getCommandOpcodeKey() { return "jBPMOpCode";}
-
- public static final String PROCESS_DEFINITION_XML ="processDefinitionXml";
- public static final String PROCESS_DEFINITION_NAME ="processDefName";
- public static final String PROCESS_DEFINITION_VERSION ="processDefVersion";
- public static final String PROCESS_INSTANCE_ID ="instanceId";
- public static final String TOKEN_ID ="tokenId";
- public static final String TRANSITION_NAME ="transitionName";
- public static final String CURRENT_NODE_NAME ="currentNodeName";
- public static final String VARIABLE_NAMES_LIST ="variableNamesList";
- public static final String VARIABLE_VALUES ="variableValuesMap";
- public static final String USER_OBJECT ="userObject";
- public static final String EXCEPTION ="jbpmException";
- public static final String ERROR_MESSAGE ="errorMsg";
-
- public static final String RETURN_CODE ="returnCode";
-
- public static final String RETCODE_OK ="OK";
- public static final String RETCODE_INVALID_OPCODE ="invalidOpCode";
- public static final String RETCODE_EXCEPTION ="exceptionThrown";
- public static final String RETCODE_ERROR ="error";
-
-
- public static enum Operation
- {
- // Operations that the CommandInterpreter can perform
- deployProcessDefinition
- ,newProcessInstance
- ,signalProcess
- ,signalToken
- ,getProcessInstanceVariables
- ,setProcessInstanceVariables
- ,getTokenVariables
- ,setTokenVariables
- ,hasInstanceEnded
-
- // Operations originated in jBPM ActionHandlers
- ,responseToRequest
- ,sendMessageToEsb
- }
- @Override
- public Operation operatorFromString(String value) {return Operation.valueOf(value); }
-
- public CommandVehicle(Enum command) { super(command); }
- public CommandVehicle(Message message){ super(message); }
-
- public Object getReturnCode () { return _values.get(RETURN_CODE); }
- public String getProcessDefinitionXml() { return (String) _values.get(PROCESS_DEFINITION_XML); }
- public String getProcessDefinitionName () { return (String) _values.get(PROCESS_DEFINITION_NAME); }
- public int getProcessVersion () { return (Integer) _values.get(PROCESS_DEFINITION_VERSION); }
- public long getInstanceId () { return (Long) _values.get(PROCESS_INSTANCE_ID); }
- public long getTokenId () { return (Long) _values.get(TOKEN_ID); }
- public String getTransitionName () { return (String) _values.get(TRANSITION_NAME); }
- public String getCurrentNodeName() { return (String) _values.get(CURRENT_NODE_NAME); }
- @SuppressWarnings("unchecked")
- public Set<String> getVariableNames () { return (Set<String>)_values.get(VARIABLE_NAMES_LIST); }
- @SuppressWarnings("unchecked")
- public Map<String,Object>getVariableValues()
- {
- return (Map)_values.get(VARIABLE_VALUES);
- }
- public Object getUserObject () { return _values.get(USER_OBJECT); }
- public Exception getException () { return (Exception)_values.get(EXCEPTION); }
- public String getErrorMessage () { return (String) _values.get(ERROR_MESSAGE); }
-
- public void setReturnCode (Object obj){ super.setValue(RETURN_CODE ,obj); }
- public void setProcessDefinitionXml(String obj){ super.setValue(PROCESS_DEFINITION_XML ,obj); }
- public void setProcessDefinitionName(String obj){ super.setValue(PROCESS_DEFINITION_NAME,obj); }
- public void setProcessVersion (int obj){ super.setValue(PROCESS_DEFINITION_VERSION,obj); }
- public void setInstanceId (long obj){ super.setValue(PROCESS_INSTANCE_ID ,obj); }
- public void setTokenId (long obj){ super.setValue(TOKEN_ID ,obj); }
- public void setTransitionName (String obj){ super.setValue(TRANSITION_NAME ,obj); }
- public void setCurrentNodeName (String obj){ super.setValue(CURRENT_NODE_NAME ,obj); }
- public void setVariableNames (Set<String> obj){ super.setValue(VARIABLE_NAMES_LIST,obj); }
- public void setVariableValues(Map<String,Object>obj)
- {
- super.setValue(VARIABLE_VALUES,obj);
- }
- public void setUserObject (Object obj) { super.setValue(USER_OBJECT,obj); }
- public void setException (Exception obj) { super.setValue(EXCEPTION, obj); }
- public void setErrorMessage (String obj) { super.setValue(ERROR_MESSAGE, obj); }
-
-}
Added: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/Helper.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/Helper.java (rev 0)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/Helper.java 2007-04-19 08:09:51 UTC (rev 11118)
@@ -0,0 +1,152 @@
+package org.jboss.soa.esb.services.jbpm.util;
+
+import java.io.Serializable;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageFactory;
+
+public class Helper
+{
+ private static Logger _logger = Logger.getLogger(Helper.class);
+
+ public static String argumentException(String str) throws Exception
+ {
+ throw new Exception("Missing or invalid <"+str+"> object in Message body");
+ } //________________________________
+
+ public static Message responseTemplate()
+ {
+ Message template = MessageFactory.getInstance().getMessage();
+ URI uri = null;
+ try { uri = new URI(UUID.randomUUID().toString()); }
+ catch (URISyntaxException e)
+ {
+ _logger.fatal("Problem with UUID.randomUUID() - This should not happen");
+ return null;
+ }
+ template.getHeader().getCall().setMessageID(uri);
+
+ return template;
+ } //________________________________
+
+ public static void setLongValue(Message message, String key, Long value)
+ {
+ setObjectValue(message, key, value);
+ }
+ public static void setIntValue(Message message, String key, Integer value)
+ {
+ setObjectValue(message, key, value);
+ }
+ public static void setBooleanValue(Message message, String key, Boolean value)
+ {
+ setObjectValue(message, key, value);
+ }
+ public static void setObjectValue(Message message, String key, Serializable value)
+ {
+ message.getBody().add(key, value);
+ }
+
+ public static void setStringValue(Message msg,String key,Object obj)
+ {
+ setStringValue(msg, key, obj.toString());
+ } //________________________________
+
+ public static void setStringValue(Message msg,String key,String str)
+ {
+ setObjectValue(msg, key, str);
+ } //________________________________
+
+ public static void setStringListValue(Message msg,String key,String[] list)
+ {
+ boolean addComma = false;
+ StringBuilder sb = new StringBuilder();
+ for (String curr : list)
+ {
+ sb.append((addComma)?",":"").append(curr);
+ addComma = true;
+ }
+ setObjectValue(msg,key, sb.toString());
+ } //________________________________
+
+ public static void setVariablesMap(Message msg,String key,Map<String,Serializable> value) throws Exception
+ {
+ msg.getBody().add(key, value);
+ } //________________________________
+
+ public static Integer getIntValue(Message msg,String key) throws Exception
+ {
+ Object obj = msg.getBody().get(key);
+ if (obj instanceof Integer) return (Integer)obj;
+ if (obj instanceof String) return Integer.parseInt((String)obj);
+ throw new Exception(argumentException(key));
+ } //________________________________
+
+ public static Long getLongValue(Message msg,String key) throws Exception
+ {
+ Object obj = msg.getBody().get(key);
+ if (null==obj) return null;
+ if (obj instanceof Long) return (Long)obj;
+ if (obj instanceof String) return Long.parseLong((String)obj);
+ if (obj instanceof Integer) return new Long(obj.toString());
+ throw new Exception(argumentException(key));
+ } //________________________________
+
+ public static Boolean getBooleanValue(Message msg,String key) throws Exception
+ {
+ return getBooleanValue(msg, key, null);
+ } //________________________________
+
+ public static Boolean getBooleanValue(Message msg,String key, Boolean dflt) throws Exception
+ {
+ Object obj = msg.getBody().get(key);
+ if (null==obj) return dflt;
+ if (obj instanceof Boolean) return (Boolean)obj;
+ if (obj instanceof String) return Boolean.parseBoolean((String)obj);
+ throw new Exception(argumentException(key));
+ } //________________________________
+
+ public static String[] getStringListValue(Message msg,String key) throws Exception
+ {
+ return getStringListValue(msg, key, null);
+ } //________________________________
+
+ public static String[] getStringListValue(Message msg,String key,String[] dflt) throws Exception
+ {
+ Object obj = msg.getBody().get(key);
+ if (null==obj) return dflt;
+ if (obj instanceof String) return ((String)obj).split(",");
+ throw new Exception(argumentException(key));
+ } //________________________________
+
+ public static String getStringValue(Message msg,String key) throws Exception
+ {
+ return getStringValue(msg, key, null);
+ } //________________________________
+ public static String getStringValue(Message msg,String key, String dflt) throws Exception
+ {
+ Object obj = msg.getBody().get(key);
+ if (null==obj) return dflt;
+ if (obj instanceof String) return (String)obj;
+ throw new Exception(argumentException(key));
+ } //________________________________
+
+ @SuppressWarnings("unchecked")
+ public static Map<String,Serializable>getVariablesMap(Message msg,String key) throws Exception
+ {
+ Object obj = msg.getBody().get(key);
+ if (null==obj) return null;
+ if (obj instanceof Map) return (Map<String,Serializable>)obj;
+ throw new Exception(argumentException(key));
+ } //________________________________
+
+ public static Object getObjectValue(Message msg,String key)
+ {
+ return msg.getBody().get(key);
+ } //________________________________
+
+}
Property changes on: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/Helper.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossesb/trunk/product/services/jbpm/src/test/java/log4j.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/test/java/log4j.xml (rev 0)
+++ labs/jbossesb/trunk/product/services/jbpm/src/test/java/log4j.xml 2007-04-19 08:09:51 UTC (rev 11118)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<!-- ===================================================================== -->
+<!-- -->
+<!-- Log4j Configuration -->
+<!-- -->
+<!-- ===================================================================== -->
+
+<!-- $Id: log4j.xml,v 1.26.2.5 2005/09/15 09:31:02 dimitris Exp $ -->
+
+<!--
+ | For more configuration infromation and examples see the Jakarta Log4j
+ | owebsite: http://jakarta.apache.org/log4j
+ -->
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
+
+ <!-- ============================== -->
+ <!-- Append messages to the console -->
+ <!-- ============================== -->
+
+ <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+ <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+ <param name="Target" value="System.out"/>
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <!-- The default pattern: Date Priority [Category] Message\n -->
+ <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%t][%c{1}] %m%n"/>
+ </layout>
+ </appender>
+
+ <!-- ================ -->
+ <!-- Limit categories -->
+ <!-- ================ -->
+
+ <category name="org.jbpm">
+ <priority value="INFO"/>
+ </category>
+ <category name="org.hibernate">
+ <priority value="ERROR"/>
+ </category>
+ <category name="org.jboss">
+ <priority value="WARN"/>
+ </category>
+ <category name="org.jboss.soa.esb">
+ <priority value="ERROR"/>
+ </category>
+ <category name="org.jboss.internal.soa.esb">
+ <priority value="ERROR"/>
+ </category>
+ <category name="org.apache">
+ <priority value="ERROR"/>
+ </category>
+ <category name="org.jboss.soa.esb.services.jbpm">
+ <priority value="DEBUG"/>
+ </category>
+ <!-- ======================= -->
+ <!-- Setup the Root category -->
+ <!-- ======================= -->
+
+ <root>
+ <appender-ref ref="CONSOLE"/>
+ </root>
+
+</log4j:configuration>
Property changes on: labs/jbossesb/trunk/product/services/jbpm/src/test/java/log4j.xml
___________________________________________________________________
Name: svn:mime-type
+ text/xml
Name: svn:eol-style
+ native
Modified: labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreterUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreterUnitTest.java 2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreterUnitTest.java 2007-04-19 08:09:51 UTC (rev 11118)
@@ -19,31 +19,31 @@
* 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.soa.esb.services.jbpm.actions;
import static org.junit.Assert.assertTrue;
import java.io.ByteArrayOutputStream;
import java.io.File;
-import java.io.FileInputStream;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URISyntaxException;
import junit.framework.JUnit4TestAdapter;
import org.apache.log4j.Logger;
-import org.jboss.soa.esb.common.Environment;
-import org.jboss.soa.esb.common.ModulePropertyManager;
import org.jboss.soa.esb.helpers.ConfigTree;
-import org.jboss.soa.esb.listeners.message.Invoker;
import org.jboss.soa.esb.message.Message;
-import org.jboss.soa.esb.services.jbpm.util.CommandVehicle;
+import org.jboss.soa.esb.services.jbpm.Constants;
+import org.jboss.soa.esb.services.jbpm.util.Helper;
+import org.jbpm.JbpmConfiguration;
+import org.jbpm.graph.exe.Token;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
-import com.arjuna.common.util.propertyservice.PropertyManager;
-
/**
* Test the jBPM command interpreter class
*
@@ -57,9 +57,10 @@
private static Class thisClass = CommandInterpreterUnitTest.class;
static Logger _logger = Logger.getLogger(thisClass);
static CommandInterpreter _interp;
- static String _processDefinitionXml;
- private static final String PROCESS_DEFINITION_NAME = "simple";
+ private static final String TEST_PROCESS_NAME = "simple";
+ private static File _hibernateConfFile;
+
public static junit.framework.Test suite()
{
return new JUnit4TestAdapter(thisClass);
@@ -77,12 +78,7 @@
public static void runBeforeAllTests()
{
_logger.info("@BeforeClass invoked");
- try { _processDefinitionXml = stringFromFile("processdefinition.xml"); }
- catch (IOException e)
- {
- _logger.fatal("Unable to load process definition ",e);
- assertTrue(false);
- }
+// initializeJbpmForTest();
}
@@ -90,6 +86,12 @@
public static void runAfterAllTests() throws Exception
{
_logger.info("@AfterClass invoked");
+ // Remove the hibernate.cfg.xml file we copied to the classpath root
+ if (null!=_hibernateConfFile)
+ {
+ JbpmConfiguration.getInstance().dropSchema();
+ _hibernateConfFile.delete();
+ }
}
@Test
@@ -99,98 +101,108 @@
_logger.info("Mock test invoked");
assertTrue(true);
}
+
+ private static void initializeJbpmForTest()
+ {
+ try
+ {
+ copyHibernateCfgToRootCP();
+ JbpmConfiguration.getInstance().createSchema();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ assertTrue(false);
+ }
+ }
-// Once the hibernate.cfg.xml and jbpm.cfg.xml are properly located
-// the following line can be uncommented
-// @Test
+// @Test
public void testFullProcessLifecycle()
{
- long instanceId=0 , tokenId=0;
- CommandVehicle vhc = null ,response=null;
- CommandVehicle.Operation operation=null;
+ initializeJbpmForTest();
+ long instanceId=0 , tokenId=0;
Exception excJbpm;
+ Constants.OpCode opCode = null;
+ Message request, response;
_logger.info("testFullProcessLifecycle() invoked");
try
{
- vhc = new CommandVehicle(CommandVehicle.Operation.deployProcessDefinition);
- vhc.setProcessDefinitionXml(_processDefinitionXml);
+ opCode = Constants.OpCode.DeployProcessDefinition;
+ request = Helper.responseTemplate();
+ Helper.setStringValue(request, Constants.COMMAND_CODE, opCode);
+ Helper.setStringValue(request, Constants.PROCESS_DEFINITION_XML, stringFromFile("process_01.xml"));
- response = invokeJbpm(vhc);
+ response = invokeJbpm(request);
- _logger.info("Invoked : "+vhc.getOperator().toString());
- _logger.info("Return code = "+response.getReturnCode());
- _logger.info("Error messg = "+response.getErrorMessage());
- Exception e = response.getException();
- if (null==e)
+ _logger.info("Invoked : "+opCode.toString());
+ _logger.info("Return code = "+Helper.getStringValue(response,Constants.RETURN_CODE));
+ excJbpm = (Exception)Helper.getObjectValue(response,Constants.EXCEPTION);
+ if (null==excJbpm)
{
- _logger.info("PrcDef name = "+response.getProcessDefinitionName());
- _logger.info("PrcDef vers = "+response.getProcessVersion());
+ _logger.info("PrcDef name = "+Helper.getObjectValue(response,Constants.PROCESS_DEFINITION_NAME));
+ _logger.info("PrcDef vers = "+Helper.getObjectValue(response,Constants.PROCESS_DEFINITION_VERSION));
}
else
- _logger.error("Problems in jbpm.CommandInterpreter",e);
+ _logger.error("Problems in jbpm.CommandInterpreter",excJbpm);
_logger.info("_______________________________________________________________________");
- assertTrue(CommandVehicle.RETCODE_OK.equals(response.getReturnCode()));
+ assertTrue(Constants.RETCODE_OK.equals(Helper.getObjectValue(response, Constants.RETURN_CODE)));
- vhc = new CommandVehicle(CommandVehicle.Operation.newProcessInstance);
- vhc.setProcessDefinitionName(PROCESS_DEFINITION_NAME);
+ opCode = Constants.OpCode.NewProcessInstanceCommand;
+ request = Helper.responseTemplate();
+ Helper.setStringValue(request, Constants.COMMAND_CODE, opCode);
+ Helper.setStringValue(request, Constants.PROCESS_DEFINITION_NAME, TEST_PROCESS_NAME);
- response = invokeJbpm(vhc);
-
- _logger.info("Invoked : "+vhc.getOperator().toString());
- _logger.info("Return code = "+response.getReturnCode());
- _logger.info("Error messg = "+response.getErrorMessage());
- excJbpm = response.getException();
- if (null==excJbpm)
- {
- _logger.info("PrcDef name = "+response.getProcessDefinitionName());
- _logger.info("PrcDef vers = "+response.getProcessVersion());
- _logger.info("Instance id = "+response.getInstanceId());
- _logger.info("Token id = "+response.getTokenId());
- _logger.info("Current node= "+response.getCurrentNodeName());
-
- instanceId = response.getInstanceId();
- tokenId = response.getTokenId();
- }
- else
- _logger.error("Problems in jbpm.CommandInterpreter",excJbpm);
+ response = invokeJbpm(request);
+
+ _logger.info("Invoked : "+opCode.toString());
+ _logger.info("Return code = "+Helper.getStringValue(response,Constants.RETURN_CODE));
+ excJbpm = (Exception)Helper.getObjectValue(response,Constants.EXCEPTION);
+ if (null==excJbpm)
+ {
+ instanceId = Helper.getLongValue(response,Constants.PROCESS_INSTANCE_ID);
+ tokenId = Helper.getLongValue(response,Constants.TOKEN_ID);
+ _logger.info("Process Id = "+instanceId);
+ _logger.info("Token Id = "+tokenId);
+ }
+ else
+ _logger.error("Problems in jbpm.CommandInterpreter",excJbpm);
_logger.info("_______________________________________________________________________");
- assertTrue(CommandVehicle.RETCODE_OK.equals(response.getReturnCode()));
- boolean signalToken = true;
+ assertTrue(Constants.RETCODE_OK.equals(Helper.getObjectValue(response, Constants.RETURN_CODE)));
+
+ boolean signalToken = true;
for (boolean continueLooping = true; continueLooping;)
{
- operation = (signalToken) ? CommandVehicle.Operation.signalToken
- : CommandVehicle.Operation.signalProcess;
+ opCode = Constants.OpCode.SignalCommand;
// for this test, alternatively signal: token - process - token ...
- signalToken = ! signalToken;
- vhc = new CommandVehicle(operation);
- if (CommandVehicle.Operation.signalToken.equals(vhc.getOperator()))
- vhc.setTokenId(tokenId);
+ request = Helper.responseTemplate();
+ Helper.setStringValue(request, Constants.COMMAND_CODE, opCode);
+ if (signalToken)
+ Helper.setLongValue(request, Constants.TOKEN_ID, tokenId);
else
- vhc.setInstanceId(instanceId);
+ Helper.setLongValue(request, Constants.PROCESS_INSTANCE_ID, instanceId);
+ signalToken = ! signalToken;
- response = invokeJbpm(vhc);
+ response = invokeJbpm(request);
if (null!=response)
{
- _logger.info("Invoked : "+operation.toString());
- _logger.info("Return code = "+response.getReturnCode());
- _logger.info("Error messg = "+response.getErrorMessage());
- excJbpm = response.getException();
+ _logger.info("Invoked : "+opCode.toString());
+ _logger.info("Return code = "+Helper.getStringValue(response,Constants.RETURN_CODE));
+ excJbpm = (Exception)Helper.getObjectValue(response,Constants.EXCEPTION);
if (null==excJbpm)
{
- _logger.info("PrcDef name = "+response.getProcessDefinitionName());
- _logger.info("PrcDef vers = "+response.getProcessVersion());
- _logger.info("Instance id = "+response.getInstanceId());
- _logger.info("Token id = "+response.getTokenId());
- _logger.info("Current node= "+response.getCurrentNodeName());
- Object obj = response.getUserObject();
- String ended = (null==obj)?"<null>":obj.toString();
- _logger.info("Has ended = "+ ended);
- continueLooping = "false".equals(ended);
+ instanceId = Helper.getLongValue(response,Constants.PROCESS_INSTANCE_ID);
+ tokenId = Helper.getLongValue(response,Constants.TOKEN_ID);
+ Token token = (Token)Helper.getObjectValue(response, Constants.JBPM_RETURN_OBJECT);
+ boolean hasEnded = token.hasEnded();
+ _logger.info("Has ended = "+ hasEnded);
+ _logger.info("Current State = "+token.getNode().getName());
+
+ continueLooping = ! hasEnded;
}
else
_logger.error("Problems in jbpm.CommandInterpreter",excJbpm);
@@ -199,7 +211,7 @@
_logger.info("Response was not received");
_logger.info("_______________________________________________________________________");
- assertTrue(CommandVehicle.RETCODE_OK.equals(response.getReturnCode()));
+ assertTrue(Constants.RETCODE_OK.equals(Helper.getObjectValue(response, Constants.RETURN_CODE)));
}
}
@@ -213,60 +225,75 @@
protected static String stringFromFile(String pFileName) throws IOException
{
- String userDir = System.getProperty("user.dir");
- String baseDir = (userDir.endsWith("product"))
- ? userDir +"/services/jbpm/src/test/java"
- : userDir +"/product/services/jbpm/src/test/java";
- System.out.println("Base dir=<"+baseDir+">");
- InputStream in = new FileInputStream(new File(baseDir,pFileName));
+ InputStream in = thisClass.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);
+ in.close();
return out.toString();
}
- protected CommandVehicle invokeJbpm(CommandVehicle vhc) throws Exception
+ protected static void copyFile(String resource, File target) throws IOException
+ {
+ InputStream in = thisClass.getResourceAsStream(resource);
+ FileOutputStream out = new FileOutputStream(target);
+ byte[]ba = new byte[1000];
+ int iQ = -1;
+ while (-1<(iQ=in.read(ba)))
+ if (iQ>0) out.write(ba,0,iQ);
+ out.close();
+ in.close();
+ }
+
+ protected static void copyHibernateCfgToRootCP()
+ throws URISyntaxException, IOException
+ {
+ String configName = "hibernate.cfg.xml";
+ File localHibernateXml = new File(thisClass.getResource(configName).toURI());
+ String path = localHibernateXml.toString();
+ int i = path.indexOf("org/jboss/soa/esb/services/jbpm/actions");
+ File classRoot = new File(path.substring(0,i-1));
+ _hibernateConfFile = new File(classRoot,configName);
+ copyFile(configName, _hibernateConfFile);
+ }
+
+ protected Message invokeJbpm(Message request) throws Exception
{
- return jbpmViaService(vhc);
- }
-
- protected CommandVehicle jbpmStraight(CommandVehicle vhc) throws Exception
- {
if (null==_interp)
_interp = new CommandInterpreter(new ConfigTree("empty"));
- return new CommandVehicle (_interp.process(vhc.toCommandMessage()));
+ return _interp.process(request);
}
//TODO Once the test is able to locate hibernate.cfg.xml in the path
// get rid of what follows, and change invokeJbpm so it uses jbpmStraight()
- protected CommandVehicle jbpmViaService(CommandVehicle vhc) throws Exception
- {
- if (! _registrySet)
- setupRegistry();
- Message response = Invoker.invokeAndAwaitResponse
- (vhc, "categoryJbpmService","nameJbpmService" , 20000);
- return (null==response)?null:new CommandVehicle(response);
- } //_______________________________
+// protected CommandVehicle jbpmViaService(CommandVehicle vhc) throws Exception
+// {
+// if (! _registrySet)
+// setupRegistry();
+// Message response = Invoker.invokeAndAwaitResponse
+// (vhc, "categoryJbpmService","nameJbpmService" , 20000);
+// return (null==response)?null:new CommandVehicle(response);
+// } //_______________________________
- private static boolean _registrySet = false;
- protected static void setupRegistry()
- {
- _registrySet = true;
- PropertyManager mgr = null;
- mgr = ModulePropertyManager.getPropertyManager("registry");
- mgr.setProperty(Environment.REGISTRY_IMPEMENTATION_CLASS,"org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl");
- mgr.setProperty(Environment.REGISTRY_QUERY_MANAGER_URI,"jnp://localhost:1099/InquiryService?org.apache.juddi.registry.rmi.Inquiry#inquire");
- mgr.setProperty(Environment.REGISTRY_LIFECYCLE_MANAGER_URI,"jnp://localhost:1099/PublishService?org.apache.juddi.registry.rmi.Publish#publish");
- mgr.setProperty(Environment.REGISTRY_FACTORY_CLASS,"org.apache.ws.scout.registry.ConnectionFactoryImpl");
- mgr.setProperty(Environment.REGISTRY_SCOUT_TRANSPORT_CLASS,"org.apache.ws.scout.transport.RMITransport");
- mgr.setProperty(Environment.REGISTRY_USER,"jbossesb");
- mgr.setProperty(Environment.REGISTRY_PASSWORD,"password");
- System.setProperty("javax.xml.registry.ConnectionFactoryClass", "org.apache.ws.scout.registry.ConnectionFactoryImpl");
- mgr = ModulePropertyManager.getPropertyManager(ModulePropertyManager.CORE_MODULE) ;
- mgr.setProperty(Environment.REGISTRY_FILE_HELPER_DIR, System.getProperty("java.io.tmpdir","/tmp")) ;
- }
+// private static boolean _registrySet = false;
+// protected static void setupRegistry()
+// {
+// _registrySet = true;
+// PropertyManager mgr = null;
+// mgr = ModulePropertyManager.getPropertyManager("registry");
+// mgr.setProperty(Environment.REGISTRY_IMPEMENTATION_CLASS,"org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl");
+// mgr.setProperty(Environment.REGISTRY_QUERY_MANAGER_URI,"jnp://localhost:1099/InquiryService?org.apache.juddi.registry.rmi.Inquiry#inquire");
+// mgr.setProperty(Environment.REGISTRY_LIFECYCLE_MANAGER_URI,"jnp://localhost:1099/PublishService?org.apache.juddi.registry.rmi.Publish#publish");
+// mgr.setProperty(Environment.REGISTRY_FACTORY_CLASS,"org.apache.ws.scout.registry.ConnectionFactoryImpl");
+// mgr.setProperty(Environment.REGISTRY_SCOUT_TRANSPORT_CLASS,"org.apache.ws.scout.transport.RMITransport");
+// mgr.setProperty(Environment.REGISTRY_USER,"jbossesb");
+// mgr.setProperty(Environment.REGISTRY_PASSWORD,"password");
+// System.setProperty("javax.xml.registry.ConnectionFactoryClass", "org.apache.ws.scout.registry.ConnectionFactoryImpl");
+// mgr = ModulePropertyManager.getPropertyManager(ModulePropertyManager.CORE_MODULE) ;
+// mgr.setProperty(Environment.REGISTRY_FILE_HELPER_DIR, System.getProperty("java.io.tmpdir","/tmp")) ;
+// }
}
\ No newline at end of file
Deleted: labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml 2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml 2007-04-19 08:09:51 UTC (rev 11118)
@@ -1,179 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-
-<!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
-
-<hibernate-configuration>
- <session-factory>
- <!-- jdbc connection properties -->
- <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
- <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
- <property name="hibernate.connection.url">jdbc:hsqldb:mem:.;sql.enforce_strict_size=true</property>
- <property name="hibernate.hbm2ddl.auto">create</property>
-<!--
- <property name="hibernate.connection.url">jdbc:hsqldb:hsql://localhost/juddi</property>
--->
- <property name="hibernate.connection.username">sa</property>
- <property name="hibernate.connection.password"></property>
-<!--
- <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
- <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
- <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/JbpmDB</property>
- <property name="hibernate.connection.username">postgres</property>
- <property name="hibernate.connection.password"></property>
--->
-
-
- <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
-
- <!-- other hibernate properties
- <property name="hibernate.show_sql">true</property>
- <property name="hibernate.format_sql">true</property>
- <property name="hibernate.use_sql_comments">true</property>
- -->
-
- <!-- ############################################ -->
- <!-- # mapping files with external dependencies # -->
- <!-- ############################################ -->
-
- <!-- following mapping file has a dependendy on -->
- <!-- 'bsh-{version}.jar'. -->
- <!-- uncomment this if you don't have bsh on your -->
- <!-- classpath. you won't be able to use the -->
- <!-- script element in process definition files -->
- <mapping resource="org/jbpm/graph/action/Script.hbm.xml"/>
-
- <!-- following mapping files have a dependendy on -->
- <!-- 'jbpm-identity-{version}.jar', mapping files -->
- <!-- of the pluggable jbpm identity component. -->
- <!-- comment out the following 3 lines if you don't-->
- <!-- want to use the default jBPM identity mgmgt -->
- <!-- component -->
- <mapping resource="org/jbpm/identity/User.hbm.xml"/>
- <mapping resource="org/jbpm/identity/Group.hbm.xml"/>
- <mapping resource="org/jbpm/identity/Membership.hbm.xml"/>
-
- <!-- ###################### -->
- <!-- # jbpm mapping files # -->
- <!-- ###################### -->
-
- <!-- hql queries and type defs -->
- <mapping resource="org/jbpm/db/hibernate.queries.hbm.xml" />
-
- <!-- graph.def mapping files -->
- <mapping resource="org/jbpm/graph/def/ProcessDefinition.hbm.xml"/>
- <mapping resource="org/jbpm/graph/def/Node.hbm.xml"/>
- <mapping resource="org/jbpm/graph/def/Transition.hbm.xml"/>
- <mapping resource="org/jbpm/graph/def/Event.hbm.xml"/>
- <mapping resource="org/jbpm/graph/def/Action.hbm.xml"/>
- <mapping resource="org/jbpm/graph/def/SuperState.hbm.xml"/>
- <mapping resource="org/jbpm/graph/def/ExceptionHandler.hbm.xml"/>
- <mapping resource="org/jbpm/instantiation/Delegation.hbm.xml"/>
-
- <!-- graph.node mapping files -->
- <mapping resource="org/jbpm/graph/node/StartState.hbm.xml"/>
- <mapping resource="org/jbpm/graph/node/EndState.hbm.xml"/>
- <mapping resource="org/jbpm/graph/node/ProcessState.hbm.xml"/>
- <mapping resource="org/jbpm/graph/node/Decision.hbm.xml"/>
- <mapping resource="org/jbpm/graph/node/Fork.hbm.xml"/>
- <mapping resource="org/jbpm/graph/node/Join.hbm.xml"/>
- <mapping resource="org/jbpm/graph/node/State.hbm.xml"/>
- <mapping resource="org/jbpm/graph/node/TaskNode.hbm.xml"/>
-
- <!-- context.def mapping files -->
- <mapping resource="org/jbpm/context/def/ContextDefinition.hbm.xml"/>
- <mapping resource="org/jbpm/context/def/VariableAccess.hbm.xml"/>
-
- <!-- taskmgmt.def mapping files -->
- <mapping resource="org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml"/>
- <mapping resource="org/jbpm/taskmgmt/def/Swimlane.hbm.xml"/>
- <mapping resource="org/jbpm/taskmgmt/def/Task.hbm.xml"/>
- <mapping resource="org/jbpm/taskmgmt/def/TaskController.hbm.xml"/>
-
- <!-- module.def mapping files -->
- <mapping resource="org/jbpm/module/def/ModuleDefinition.hbm.xml"/>
-
- <!-- bytes mapping files -->
- <mapping resource="org/jbpm/bytes/ByteArray.hbm.xml"/>
-
- <!-- file.def mapping files -->
- <mapping resource="org/jbpm/file/def/FileDefinition.hbm.xml"/>
-
- <!-- scheduler.def mapping files -->
- <mapping resource="org/jbpm/scheduler/def/CreateTimerAction.hbm.xml"/>
- <mapping resource="org/jbpm/scheduler/def/CancelTimerAction.hbm.xml"/>
-
- <!-- graph.exe mapping files -->
- <mapping resource="org/jbpm/graph/exe/Comment.hbm.xml"/>
- <mapping resource="org/jbpm/graph/exe/ProcessInstance.hbm.xml"/>
- <mapping resource="org/jbpm/graph/exe/Token.hbm.xml"/>
- <mapping resource="org/jbpm/graph/exe/RuntimeAction.hbm.xml"/>
-
- <!-- module.exe mapping files -->
- <mapping resource="org/jbpm/module/exe/ModuleInstance.hbm.xml"/>
-
- <!-- context.exe mapping files -->
- <mapping resource="org/jbpm/context/exe/ContextInstance.hbm.xml"/>
- <mapping resource="org/jbpm/context/exe/TokenVariableMap.hbm.xml"/>
- <mapping resource="org/jbpm/context/exe/VariableInstance.hbm.xml"/>
- <mapping resource="org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml"/>
- <mapping resource="org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml"/>
- <mapping resource="org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml"/>
- <mapping resource="org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml"/>
- <mapping resource="org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml"/>
- <mapping resource="org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml"/>
- <mapping resource="org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml"/>
- <mapping resource="org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml"/>
-
- <!-- msg.db mapping files -->
- <mapping resource="org/jbpm/msg/Message.hbm.xml"/>
- <mapping resource="org/jbpm/msg/db/TextMessage.hbm.xml"/>
- <mapping resource="org/jbpm/command/ExecuteActionCommand.hbm.xml"/>
- <mapping resource="org/jbpm/command/ExecuteNodeCommand.hbm.xml"/>
- <mapping resource="org/jbpm/command/SignalCommand.hbm.xml"/>
- <mapping resource="org/jbpm/command/TaskInstanceEndCommand.hbm.xml"/>
-
- <!-- taskmgmt.exe mapping files -->
- <mapping resource="org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml"/>
- <mapping resource="org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml"/>
- <mapping resource="org/jbpm/taskmgmt/exe/PooledActor.hbm.xml"/>
- <mapping resource="org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml"/>
-
- <!-- scheduler.exe mapping files -->
- <mapping resource="org/jbpm/scheduler/exe/Timer.hbm.xml"/>
-
- <!-- logging mapping files -->
- <mapping resource="org/jbpm/logging/log/ProcessLog.hbm.xml"/>
- <mapping resource="org/jbpm/logging/log/MessageLog.hbm.xml"/>
- <mapping resource="org/jbpm/logging/log/CompositeLog.hbm.xml"/>
- <mapping resource="org/jbpm/graph/log/ActionLog.hbm.xml"/>
- <mapping resource="org/jbpm/graph/log/NodeLog.hbm.xml"/>
- <mapping resource="org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml"/>
- <mapping resource="org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml"/>
- <mapping resource="org/jbpm/graph/log/ProcessStateLog.hbm.xml"/>
- <mapping resource="org/jbpm/graph/log/SignalLog.hbm.xml"/>
- <mapping resource="org/jbpm/graph/log/TokenCreateLog.hbm.xml"/>
- <mapping resource="org/jbpm/graph/log/TokenEndLog.hbm.xml"/>
- <mapping resource="org/jbpm/graph/log/TransitionLog.hbm.xml"/>
- <mapping resource="org/jbpm/context/log/VariableLog.hbm.xml"/>
- <mapping resource="org/jbpm/context/log/VariableCreateLog.hbm.xml"/>
- <mapping resource="org/jbpm/context/log/VariableDeleteLog.hbm.xml"/>
- <mapping resource="org/jbpm/context/log/VariableUpdateLog.hbm.xml"/>
- <mapping resource="org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml"/>
- <mapping resource="org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml"/>
- <mapping resource="org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml"/>
- <mapping resource="org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml"/>
- <mapping resource="org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml"/>
- <mapping resource="org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml"/>
- <mapping resource="org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml"/>
- <mapping resource="org/jbpm/taskmgmt/log/TaskLog.hbm.xml"/>
- <mapping resource="org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml"/>
- <mapping resource="org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml"/>
- <mapping resource="org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml"/>
- <mapping resource="org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml"/>
- <mapping resource="org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml"/>
- <mapping resource="org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml"/>
-
- </session-factory>
-</hibernate-configuration>
Added: labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml (rev 0)
+++ labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml 2007-04-19 08:09:51 UTC (rev 11118)
@@ -0,0 +1,189 @@
+<?xml version='1.0' encoding='utf-8'?>
+
+<!DOCTYPE hibernate-configuration PUBLIC
+ "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+ <session-factory>
+
+ <!-- hibernate dialect -->
+ <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
+
+ <!-- JDBC connection properties (begin) -->
+ <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
+ <property name="hibernate.connection.url">jdbc:hsqldb:mem:jbpm</property>
+ <property name="hibernate.connection.username">sa</property>
+ <property name="hibernate.connection.password"></property>
+ <!-- JDBC connection properties (end) -->
+
+ <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
+
+ <!-- DataSource properties (begin) ===
+ <property name="hibernate.connection.datasource">java:/JbpmDS</property>
+ ==== DataSource properties (end) -->
+
+ <!-- JTA transaction properties (begin) ===
+ <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
+ <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
+ ==== JTA transaction properties (end) -->
+
+ <!-- CMT transaction properties (begin) ===
+ <property name="hibernate.transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory</property>
+ <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
+ ==== CMT transaction properties (end) -->
+
+ <!-- logging properties (begin) ===
+ <property name="hibernate.show_sql">true</property>
+ <property name="hibernate.format_sql">true</property>
+ <property name="hibernate.use_sql_comments">true</property>
+ ==== logging properties (end) -->
+
+ <!-- ############################################ -->
+ <!-- # mapping files with external dependencies # -->
+ <!-- ############################################ -->
+
+ <!-- following mapping file has a dependendy on -->
+ <!-- 'bsh-{version}.jar'. -->
+ <!-- uncomment this if you don't have bsh on your -->
+ <!-- classpath. you won't be able to use the -->
+ <!-- script element in process definition files -->
+ <mapping resource="org/jbpm/graph/action/Script.hbm.xml"/>
+
+ <!-- following mapping files have a dependendy on -->
+ <!-- 'jbpm-identity.jar', mapping files -->
+ <!-- of the pluggable jbpm identity component. -->
+ <!-- Uncomment the following 3 lines if you -->
+ <!-- want to use the jBPM identity mgmgt -->
+ <!-- component. -->
+ <!-- identity mappings (begin) -->
+ <mapping resource="org/jbpm/identity/User.hbm.xml"/>
+ <mapping resource="org/jbpm/identity/Group.hbm.xml"/>
+ <mapping resource="org/jbpm/identity/Membership.hbm.xml"/>
+ <!-- identity mappings (end) -->
+
+ <!-- following mapping files have a dependendy on -->
+ <!-- the JCR API -->
+ <!-- jcr mappings (begin) ===
+ <mapping resource="org/jbpm/context/exe/variableinstance/JcrNodeInstance.hbm.xml"/>
+ ==== jcr mappings (end) -->
+
+
+ <!-- ###################### -->
+ <!-- # jbpm mapping files # -->
+ <!-- ###################### -->
+
+ <!-- hql queries and type defs -->
+ <mapping resource="org/jbpm/db/hibernate.queries.hbm.xml" />
+
+ <!-- graph.def mapping files -->
+ <mapping resource="org/jbpm/graph/def/ProcessDefinition.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/def/Node.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/def/Transition.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/def/Event.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/def/Action.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/def/SuperState.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/def/ExceptionHandler.hbm.xml"/>
+ <mapping resource="org/jbpm/instantiation/Delegation.hbm.xml"/>
+
+ <!-- graph.node mapping files -->
+ <mapping resource="org/jbpm/graph/node/StartState.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/node/EndState.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/node/ProcessState.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/node/Decision.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/node/Fork.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/node/Join.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/node/State.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/node/TaskNode.hbm.xml"/>
+
+ <!-- context.def mapping files -->
+ <mapping resource="org/jbpm/context/def/ContextDefinition.hbm.xml"/>
+ <mapping resource="org/jbpm/context/def/VariableAccess.hbm.xml"/>
+
+ <!-- taskmgmt.def mapping files -->
+ <mapping resource="org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml"/>
+ <mapping resource="org/jbpm/taskmgmt/def/Swimlane.hbm.xml"/>
+ <mapping resource="org/jbpm/taskmgmt/def/Task.hbm.xml"/>
+ <mapping resource="org/jbpm/taskmgmt/def/TaskController.hbm.xml"/>
+
+ <!-- module.def mapping files -->
+ <mapping resource="org/jbpm/module/def/ModuleDefinition.hbm.xml"/>
+
+ <!-- bytes mapping files -->
+ <mapping resource="org/jbpm/bytes/ByteArray.hbm.xml"/>
+
+ <!-- file.def mapping files -->
+ <mapping resource="org/jbpm/file/def/FileDefinition.hbm.xml"/>
+
+ <!-- scheduler.def mapping files -->
+ <mapping resource="org/jbpm/scheduler/def/CreateTimerAction.hbm.xml"/>
+ <mapping resource="org/jbpm/scheduler/def/CancelTimerAction.hbm.xml"/>
+
+ <!-- graph.exe mapping files -->
+ <mapping resource="org/jbpm/graph/exe/Comment.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/exe/ProcessInstance.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/exe/Token.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/exe/RuntimeAction.hbm.xml"/>
+
+ <!-- module.exe mapping files -->
+ <mapping resource="org/jbpm/module/exe/ModuleInstance.hbm.xml"/>
+
+ <!-- context.exe mapping files -->
+ <mapping resource="org/jbpm/context/exe/ContextInstance.hbm.xml"/>
+ <mapping resource="org/jbpm/context/exe/TokenVariableMap.hbm.xml"/>
+ <mapping resource="org/jbpm/context/exe/VariableInstance.hbm.xml"/>
+ <mapping resource="org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml"/>
+ <mapping resource="org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml"/>
+ <mapping resource="org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml"/>
+ <mapping resource="org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml"/>
+ <mapping resource="org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml"/>
+ <mapping resource="org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml"/>
+ <mapping resource="org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml"/>
+ <mapping resource="org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml"/>
+
+ <!-- job mapping files -->
+ <mapping resource="org/jbpm/job/Job.hbm.xml"/>
+ <mapping resource="org/jbpm/job/Timer.hbm.xml"/>
+ <mapping resource="org/jbpm/job/ExecuteNodeJob.hbm.xml"/>
+ <mapping resource="org/jbpm/job/ExecuteActionJob.hbm.xml"/>
+
+ <!-- taskmgmt.exe mapping files -->
+ <mapping resource="org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml"/>
+ <mapping resource="org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml"/>
+ <mapping resource="org/jbpm/taskmgmt/exe/PooledActor.hbm.xml"/>
+ <mapping resource="org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml"/>
+
+ <!-- logging mapping files -->
+ <mapping resource="org/jbpm/logging/log/ProcessLog.hbm.xml"/>
+ <mapping resource="org/jbpm/logging/log/MessageLog.hbm.xml"/>
+ <mapping resource="org/jbpm/logging/log/CompositeLog.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/log/ActionLog.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/log/NodeLog.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/log/ProcessStateLog.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/log/SignalLog.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/log/TokenCreateLog.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/log/TokenEndLog.hbm.xml"/>
+ <mapping resource="org/jbpm/graph/log/TransitionLog.hbm.xml"/>
+ <mapping resource="org/jbpm/context/log/VariableLog.hbm.xml"/>
+ <mapping resource="org/jbpm/context/log/VariableCreateLog.hbm.xml"/>
+ <mapping resource="org/jbpm/context/log/VariableDeleteLog.hbm.xml"/>
+ <mapping resource="org/jbpm/context/log/VariableUpdateLog.hbm.xml"/>
+ <mapping resource="org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml"/>
+ <mapping resource="org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml"/>
+ <mapping resource="org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml"/>
+ <mapping resource="org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml"/>
+ <mapping resource="org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml"/>
+ <mapping resource="org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml"/>
+ <mapping resource="org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml"/>
+ <mapping resource="org/jbpm/taskmgmt/log/TaskLog.hbm.xml"/>
+ <mapping resource="org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml"/>
+ <mapping resource="org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml"/>
+ <mapping resource="org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml"/>
+ <mapping resource="org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml"/>
+ <mapping resource="org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml"/>
+ <mapping resource="org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml"/>
+
+ </session-factory>
+</hibernate-configuration>
Property changes on: labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml
___________________________________________________________________
Name: svn:mime-type
+ text/xml
Name: svn:eol-style
+ native
Deleted: labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/jbpm.cfg.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/jbpm.cfg.xml 2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/jbpm.cfg.xml 2007-04-19 08:09:51 UTC (rev 11118)
@@ -1,9 +0,0 @@
-<jbpm-configuration>
-
- <!--
- The default configurations can be found in org/jbpm/default.jbpm.cfg.xml
- Those configurations can be overwritten by putting this file called
- jbpm.cfg.xml on the root of the classpath and put in the customized values.
- -->
-
-</jbpm-configuration>
Added: labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/process_01.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/process_01.xml (rev 0)
+++ labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/process_01.xml 2007-04-19 08:09:51 UTC (rev 11118)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<process-definition
+ xmlns="urn:jbpm.org:jpdl-3.1"
+ name="simple">
+ <start-state name="start">
+ <transition name="to_state" to="first">
+
+ </transition>
+ </start-state>
+ <state name="first">
+ <transition name="to_end" to="end">
+
+ </transition>
+ </state>
+ <end-state name="end"></end-state>
+</process-definition>
\ No newline at end of file
Property changes on: labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/process_01.xml
___________________________________________________________________
Name: svn:mime-type
+ text/xml
Deleted: labs/jbossesb/trunk/product/services/jbpm/src/test/java/processdefinition.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/test/java/processdefinition.xml 2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/src/test/java/processdefinition.xml 2007-04-19 08:09:51 UTC (rev 11118)
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<process-definition
- xmlns="urn:jbpm.org:jpdl-3.1"
- name="simple">
- <start-state name="start">
- <transition name="to_state" to="first">
-
- </transition>
- </start-state>
- <state name="first">
- <transition name="to_end" to="end">
-
- </transition>
- </state>
- <end-state name="end"></end-state>
-</process-definition>
\ No newline at end of file
More information about the jboss-svn-commits
mailing list