[jboss-svn-commits] JBL Code SVN: r9619 - in labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/services: jbpm and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Feb 19 16:03:17 EST 2007
Author: estebanschifman
Date: 2007-02-19 16:03:17 -0500 (Mon, 19 Feb 2007)
New Revision: 9619
Added:
labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/services/jbpm/
labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/services/jbpm/BaseActionHandler.java
Log:
New BaseActionHandler class to invoke ESB from jBPM
Added: labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/services/jbpm/BaseActionHandler.java
===================================================================
--- labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/services/jbpm/BaseActionHandler.java (rev 0)
+++ labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/services/jbpm/BaseActionHandler.java 2007-02-19 21:03:17 UTC (rev 9619)
@@ -0,0 +1,108 @@
+/*
+ * 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.net.URI;
+import java.util.UUID;
+
+import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.addressing.Call;
+import org.jboss.soa.esb.listeners.ListenerUtil;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.util.jbpm.CommandVehicle;
+import org.jbpm.graph.def.ActionHandler;
+import org.jbpm.graph.def.ProcessDefinition;
+import org.jbpm.graph.exe.ExecutionContext;
+import org.jbpm.graph.exe.ProcessInstance;
+import org.jbpm.graph.exe.Token;
+
+/**
+ *
+ * Use to send messages to ESB services from jBPM applications.
+ * <p/>Assumptions:
+ * <br/> Message payload is in the context instance in a context variable.
+ * <br/>Context variables "esbCategoryName" and "esbServiceName" will be supplied at runtime.
+ *
+ * <p/> The name of the context variable that contains the user object to include in the
+ * message payload is rendered by the getContentVariableName() method
+ * so it can be changed just by extending this class and overriding that method.
+ *
+ * <br/> This action handler will by default (whenever possible) include the process name
+ * , version, processInstance id and token ID
+ *
+ * @author <a href="mailto:schifest at heuristica.com.ar">schifest at heuristica.com.ar</a>
+ *
+ */
+
+public 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
+ {
+ 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>");
+
+ CommandVehicle command = new CommandVehicle(CommandVehicle.Operation.sendMessageToEsb);
+
+ ProcessDefinition process = context.getProcessDefinition();
+ if (null!=process)
+ {
+ command.setProcessDefinitionName(process.getName());
+ command.setProcessVersion (process.getVersion());
+ }
+
+ ProcessInstance instance = context.getProcessInstance();
+ if (null!=instance)
+ {
+ command.setInstanceId (context.getProcessInstance().getId());
+ }
+ Token token = context.getToken();
+
+ if (null!=token)
+ {
+ command.setTokenId (token.getId());
+ }
+
+ command.setUserObject(userObject);
+
+ Message message = command.toCommandMessage();
+ Call call = message.getHeader().getCall();
+ call.setMessageID(new URI(UUID.randomUUID().toString()));
+
+ ListenerUtil.tryToDeliver(message, esbCategoryName, esbServiceName);
+ }
+
+}
Property changes on: labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/services/jbpm/BaseActionHandler.java
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the jboss-svn-commits
mailing list