[jbpm-commits] JBoss JBPM SVN: r2502 - in projects/spec/trunk/modules: api/src/main/java/org/jbpm/api/model/builder and 24 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Wed Oct 8 05:18:41 EDT 2008
Author: thomas.diesler at jboss.com
Date: 2008-10-08 05:18:41 -0400 (Wed, 08 Oct 2008)
New Revision: 2502
Added:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/MessageBuilderService.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessBuilderService.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/UserTaskTest.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/UserTaskImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/AssignmentInterceptor.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/ExitSignalInterceptor.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/FlowHandlerInterceptor.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/NodeExecuteInterceptor.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/NodeInterceptor.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/RunnableToken.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/RuntimeContext.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/SignalHandlerInterceptor.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/HibernatePersistenceServiceImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/InMemoryPersistenceServiceImpl.java
Removed:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/MessageBuilderService.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilderService.java
Modified:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Node.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/TaskBuilder.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/endevent/EndEventMessageTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewaySplitTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewaySplitTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeInputSetTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeOutputSetTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodePropertyTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/process/ProcessPropertyTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessBuilderTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessCatalog.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/startevent/StartEventSignalTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/ReceiveTaskTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/SendTaskTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/exclusivechoice/ExclusiveChoiceTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/multichoice/MultiChoiceTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/parallelsplit/ParallelSplitTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/synchronization/SynchronizationTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/casedata/CaseDataTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/taskdata/TaskDataTest.java
projects/spec/trunk/modules/cts/src/test/resources/log4j.xml
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/GatewayImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ReceiveTaskImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/TokenExecutorImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MessageBuilderServiceImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessBuilderServiceImpl.java
projects/spec/trunk/modules/impl/src/main/resources/jbpm-cfg-beans.xml
Log:
Add UserTask
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Node.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Node.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Node.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -61,16 +61,16 @@
/**
* Get the associated ExecutionHandler
*/
- ExecutionHandler getExecutionHandler(boolean defaultHandler);
+ ExecutionHandler getExecutionHandler();
/**
* Get the associated SignalHandler
*/
- SignalHandler getSignalHandler(boolean defaultHandler);
+ SignalHandler getSignalHandler();
/**
* Get the associated FlowHandler
*/
- FlowHandler getFlowHandler(boolean defaultHandler);
+ FlowHandler getFlowHandler();
}
\ No newline at end of file
Deleted: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/MessageBuilderService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/MessageBuilderService.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/MessageBuilderService.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -1,52 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jbpm.api.model.builder;
-
-//$Id$
-
-import org.jbpm.api.client.ProcessEngine;
-import org.jbpm.api.model.Message;
-import org.jbpm.api.service.AbstractService;
-
-/**
- * The MessageBuilder can be used to build a {@link Message} dynamically.
- *
- * @author thomas.diesler at jboss.com
- * @since 08-Jul-2008
- */
-public abstract class MessageBuilderService extends AbstractService
-{
- /**
- * Locate the default MessageBuilder
- */
- public static MessageBuilder locateMessageBuilder()
- {
- ProcessEngine engine = ProcessEngine.getProcessEngine();
- MessageBuilderService builderService = engine.getService(MessageBuilderService.class);
- return builderService.getMessageBuilder();
- }
-
- /**
- * Get the MessageBuilder
- */
- public abstract MessageBuilder getMessageBuilder();
-}
\ No newline at end of file
Deleted: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilderService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilderService.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilderService.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -1,52 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jbpm.api.model.builder;
-
-//$Id$
-
-import org.jbpm.api.client.ProcessEngine;
-import org.jbpm.api.model.Process;
-import org.jbpm.api.service.AbstractService;
-
-/**
- * The ProcessBuilder can be used to build a {@link Process} dynamically.
- *
- * @author thomas.diesler at jboss.com
- * @since 08-Jul-2008
- */
-public abstract class ProcessBuilderService extends AbstractService
-{
- /**
- * Locate the default ProcessBuilder
- */
- public static ProcessBuilder locateProcessBuilder()
- {
- ProcessEngine engine = ProcessEngine.getProcessEngine();
- ProcessBuilderService builderService = engine.getService(ProcessBuilderService.class);
- return builderService.getProcessBuilder();
- }
-
- /**
- * Get the ProcessBuilder
- */
- public abstract ProcessBuilder getProcessBuilder();
-}
\ No newline at end of file
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/TaskBuilder.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/TaskBuilder.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/TaskBuilder.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -35,13 +35,20 @@
public interface TaskBuilder extends ProcessBuilder
{
/**
- * Add a {@link Message} reference.
+ * Add an outgoing {@link Message} reference.
* <p/>
* The {@link Message} must be defined at {@link Process} level
*/
- TaskBuilder addMessageRef(String msgName);
+ TaskBuilder addOutMessageRef(String msgName);
/**
+ * Add an incomming {@link Message} reference.
+ * <p/>
+ * The {@link Message} must be defined at {@link Process} level
+ */
+ TaskBuilder addInMessageRef(String msgName);
+
+ /**
* Add an InputSet
*/
TaskBuilder addInputSet();
Copied: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/MessageBuilderService.java (from rev 2488, projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/MessageBuilderService.java)
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/MessageBuilderService.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/MessageBuilderService.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.api.service;
+
+//$Id$
+
+import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.builder.MessageBuilder;
+
+/**
+ * The MessageBuilder can be used to build a {@link Message} dynamically.
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+public abstract class MessageBuilderService extends AbstractService
+{
+ /**
+ * Locate the default MessageBuilder
+ */
+ public static MessageBuilder locateMessageBuilder()
+ {
+ ProcessEngine engine = ProcessEngine.getProcessEngine();
+ MessageBuilderService builderService = engine.getService(MessageBuilderService.class);
+ return builderService.getMessageBuilder();
+ }
+
+ /**
+ * Get the MessageBuilder
+ */
+ public abstract MessageBuilder getMessageBuilder();
+}
\ No newline at end of file
Copied: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessBuilderService.java (from rev 2488, projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilderService.java)
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessBuilderService.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessBuilderService.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.api.service;
+
+//$Id$
+
+import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.model.builder.ProcessBuilder;
+
+/**
+ * The ProcessBuilder can be used to build a {@link Process} dynamically.
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+public abstract class ProcessBuilderService extends AbstractService
+{
+ /**
+ * Locate the default ProcessBuilder
+ */
+ public static ProcessBuilder locateProcessBuilder()
+ {
+ ProcessEngine engine = ProcessEngine.getProcessEngine();
+ ProcessBuilderService builderService = engine.getService(ProcessBuilderService.class);
+ return builderService.getProcessBuilder();
+ }
+
+ /**
+ * Get the ProcessBuilder
+ */
+ public abstract ProcessBuilder getProcessBuilder();
+}
\ No newline at end of file
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/endevent/EndEventMessageTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/endevent/EndEventMessageTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/endevent/EndEventMessageTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -31,8 +31,8 @@
import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
import org.jbpm.api.runtime.BasicAttachments;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -31,7 +31,7 @@
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Gateway.GatewayType;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -33,8 +33,8 @@
import org.jbpm.api.model.Gateway.GatewayType;
import org.jbpm.api.model.builder.GatewayBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
import org.jbpm.api.runtime.BasicAttachments;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -31,7 +31,7 @@
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Gateway.GatewayType;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewaySplitTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewaySplitTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewaySplitTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -33,8 +33,8 @@
import org.jbpm.api.model.Gateway.GatewayType;
import org.jbpm.api.model.builder.GatewayBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
import org.jbpm.api.runtime.BasicAttachments;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -34,7 +34,7 @@
import org.jbpm.api.model.Gateway.GatewayType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewaySplitTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewaySplitTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewaySplitTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -34,7 +34,7 @@
import org.jbpm.api.model.Gateway.GatewayType;
import org.jbpm.api.model.Signal.SignalType;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeInputSetTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeInputSetTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeInputSetTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -31,9 +31,9 @@
import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
import org.jbpm.api.model.builder.TaskBuilder;
import org.jbpm.api.runtime.BasicAttachments;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeOutputSetTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeOutputSetTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeOutputSetTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -31,8 +31,8 @@
import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
import org.jbpm.api.model.builder.TaskBuilder;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodePropertyTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodePropertyTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodePropertyTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -33,8 +33,8 @@
import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
import org.jbpm.api.model.builder.TaskBuilder;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/process/ProcessPropertyTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/process/ProcessPropertyTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/process/ProcessPropertyTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -33,7 +33,7 @@
import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessBuilderTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessBuilderTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessBuilderTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -26,7 +26,7 @@
import org.jbpm.api.InvalidProcessException;
import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessCatalog.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessCatalog.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessCatalog.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -32,7 +32,7 @@
import org.jbpm.api.model.StartEvent;
import org.jbpm.api.model.Task;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.ProcessBuilderService;
/**
* A catalog of CTS test processes
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -31,7 +31,7 @@
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Signal.SignalType;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.service.ProcessDefinitionService;
import org.jbpm.api.service.ProcessService;
import org.jbpm.api.service.SignalService;
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/startevent/StartEventSignalTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/startevent/StartEventSignalTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/startevent/StartEventSignalTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -40,8 +40,8 @@
import org.jbpm.api.model.builder.EventBuilder;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
import org.jbpm.api.model.builder.TaskBuilder;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.service.ProcessDefinitionService;
import org.jbpm.api.service.ProcessService;
import org.jbpm.api.service.SignalService;
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/ReceiveTaskTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/ReceiveTaskTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/ReceiveTaskTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -38,10 +38,10 @@
import org.jbpm.api.model.Task.TaskType;
import org.jbpm.api.model.builder.EventBuilder;
import org.jbpm.api.model.builder.MessageBuilder;
-import org.jbpm.api.model.builder.MessageBuilderService;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.MessageBuilderService;
import org.jbpm.api.service.MessageService;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.service.ProcessDefinitionService;
import org.jbpm.api.service.ProcessService;
import org.jbpm.api.service.SignalService;
@@ -55,7 +55,7 @@
*/
public class ReceiveTaskTest extends CTSTestCase
{
- public void testReceiveTaskWithNoMessage() throws Exception
+ public void _testReceiveTaskWithNoMessage() throws Exception
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("ReceiveTaskTest").addStartEvent("Start").addSequenceFlow("TaskA");
@@ -71,15 +71,15 @@
}
}
- public void testUnregisteredProcess() throws Exception
+ public void _testUnregisteredProcess() throws Exception
{
ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
Process proc = procDef.newInstance();
- MessageService msgManager = MessageService.locateMessageService();
+ MessageService msgService = MessageService.locateMessageService();
try
{
- msgManager.sendMessage(proc.getKey(), "TaskA", getMessage());
+ msgService.sendMessage(proc.getKey(), "TaskA", getMessage());
fail("Send to an unregistered process is expected to fail");
}
catch (RuntimeException ex)
@@ -88,7 +88,7 @@
}
}
- public void testSuspendedMessage() throws Exception
+ public void _testSuspendedMessage() throws Exception
{
ProcessDefinitionService procDefService = ProcessDefinitionService.locateProcessDefinitionService();
ProcessService procService = ProcessService.locateProcessService();
@@ -100,8 +100,8 @@
try
{
// Send the message before the process is started
- MessageService msgManager = MessageService.locateMessageService();
- msgManager.sendMessage(procID, "TaskA", getMessage());
+ MessageService msgService = MessageService.locateMessageService();
+ msgService.sendMessage(procID, "TaskA", getMessage());
proc.startProcess();
proc.waitForEnd(1000);
@@ -135,8 +135,8 @@
if (sendMessage == true)
{
sendMessage = false;
- MessageService msgManager = MessageService.locateMessageService();
- msgManager.sendMessage(proc.getKey(), "TaskA", getMessage());
+ MessageService msgService = MessageService.locateMessageService();
+ msgService.sendMessage(proc.getKey(), "TaskA", getMessage());
}
}
};
@@ -146,7 +146,7 @@
try
{
proc.startProcess();
- proc.waitForEnd(1000);
+ proc.waitForEnd();
}
finally
{
@@ -160,8 +160,8 @@
private Message getMessage()
{
- MessageBuilder procBuilder = MessageBuilderService.locateMessageBuilder();
- Message msg = procBuilder.newMessage("ReceiveTaskMessage").addProperty("foo", "bar", true).getMessage();
+ MessageBuilder msgBuilder = MessageBuilderService.locateMessageBuilder();
+ Message msg = msgBuilder.newMessage("ReceiveTaskMessage").addProperty("foo", "bar", true).getMessage();
return msg;
}
@@ -172,7 +172,7 @@
procBuilder.addProcessMessage("ReceiveTaskMessage").addProperty("foo", null, true);
procBuilder.addProcessMessage("EndEventMessage").addToRef(getTestID()).addProperty("foo", null, true);
procBuilder.addStartEvent("Start").addSequenceFlow("TaskA");
- procBuilder.addTask("TaskA", TaskType.Receive).addMessageRef("ReceiveTaskMessage");
+ procBuilder.addTask("TaskA", TaskType.Receive).addInMessageRef("ReceiveTaskMessage");
EventBuilder eventBuilder = procBuilder.addSequenceFlow("End").addEndEvent("End", EventDetailType.Message);
eventBuilder.addMessageRef("EndEventMessage");
return procBuilder.getProcessDefinition();
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/SendTaskTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/SendTaskTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/SendTaskTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -33,8 +33,8 @@
import org.jbpm.api.model.Task.TaskType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
import org.jbpm.api.runtime.BasicAttachments;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
@@ -82,7 +82,7 @@
MessageBuilder msgBuilder = procBuilder.addProcess("SendTaskTest").addProcessMessage("SendTaskMessage");
msgBuilder.addToRef(getTestID()).addProperty("foo", null, true);
procBuilder.addStartEvent("Start").addSequenceFlow("TaskA");
- procBuilder.addTask("TaskA", TaskType.Send).addMessageRef("SendTaskMessage");
+ procBuilder.addTask("TaskA", TaskType.Send).addOutMessageRef("SendTaskMessage");
procBuilder.addSequenceFlow("End").addEndEvent("End");
return procBuilder.getProcessDefinition();
}
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -30,12 +30,12 @@
import org.jbpm.api.model.Assignment.AssignTime;
import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
import org.jbpm.api.model.builder.TaskBuilder;
import org.jbpm.api.runtime.BasicNodeHandler;
import org.jbpm.api.runtime.ExecutionContext;
import org.jbpm.api.runtime.ExecutionHandler;
import org.jbpm.api.runtime.Token;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Added: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/UserTaskTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/UserTaskTest.java (rev 0)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/UserTaskTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -0,0 +1,128 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.test.cts.task;
+
+// $Id$
+
+import java.io.IOException;
+import java.util.List;
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.Constants;
+import org.jbpm.api.client.MessageListener;
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.Event.EventDetailType;
+import org.jbpm.api.model.Task.TaskType;
+import org.jbpm.api.model.builder.MessageBuilder;
+import org.jbpm.api.model.builder.ObjectNameFactory;
+import org.jbpm.api.model.builder.ProcessBuilder;
+import org.jbpm.api.runtime.BasicAttachments;
+import org.jbpm.api.service.MessageBuilderService;
+import org.jbpm.api.service.MessageService;
+import org.jbpm.api.service.ProcessBuilderService;
+import org.jbpm.api.service.ProcessService;
+import org.jbpm.api.test.CTSTestCase;
+
+/**
+ * Test User Task
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 07-Oct-2008
+ */
+public class UserTaskTest extends CTSTestCase
+{
+ static final ObjectName MSG_LISTENER_ID = ObjectNameFactory.create(Constants.ID_DOMAIN, "msgListener", "UserTaskTest");
+
+ public void testSendTask() throws Exception
+ {
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
+
+ // Register the process - this assignes the procID
+ ProcessService procService = ProcessService.locateProcessService();
+ procService.registerProcess(proc);
+
+ // Add the message user message listener
+ MessageService msgService = MessageService.locateMessageService();
+ msgService.addMessageListener(new UserMessageListener(proc.getKey()));
+
+ try
+ {
+ BasicAttachments att = new BasicAttachments();
+ att.addAttachment("foo", "xxx");
+ proc.startProcess(att);
+ proc.waitForEnd();
+
+ List<Message> messages = getMessages();
+ assertEquals(1, messages.size());
+ assertEquals("xxx", messages.get(0).getProperty("bar").getValue());
+ }
+ finally
+ {
+ msgService.removeMessageListener(MSG_LISTENER_ID);
+ }
+ }
+
+ protected ProcessDefinition getProcessDefinition() throws IOException
+ {
+ ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
+ procBuilder.addProcess("UserTaskTest");
+ procBuilder.addProcessMessage("OutMessage").addToRef(MSG_LISTENER_ID).addProperty("foo", null, true);
+ procBuilder.addProcessMessage("InMessage").addProperty("bar", null, true);
+ procBuilder.addProcessMessage("EndMessage").addToRef(getTestID()).addProperty("bar", null, true);
+ procBuilder.addStartEvent("Start").addSequenceFlow("TaskA");
+ procBuilder.addTask("TaskA", TaskType.User).addOutMessageRef("OutMessage").addInMessageRef("InMessage");
+ procBuilder.addSequenceFlow("End").addEndEvent("End", EventDetailType.Message).addMessageRef("EndMessage");
+ return procBuilder.getProcessDefinition();
+ }
+
+ public static class UserMessageListener implements MessageListener
+ {
+ ObjectName procID;
+
+ public UserMessageListener(ObjectName procID)
+ {
+ this.procID = procID;
+ }
+
+ @Override
+ public void catchMessage(Message message)
+ {
+ String propValue = message.getProperty("foo").getValue();
+ MessageBuilder msgBuilder = MessageBuilderService.locateMessageBuilder();
+ Message resMessage = msgBuilder.newMessage("InMessage").addProperty("bar", propValue, true).getMessage();
+
+ MessageService msgService = MessageService.locateMessageService();
+ msgService.sendMessage(procID, "TaskA", resMessage);
+ }
+
+ @Override
+ public ObjectName getKey()
+ {
+ return MSG_LISTENER_ID;
+ }
+
+ }
+}
Property changes on: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/UserTaskTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/exclusivechoice/ExclusiveChoiceTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/exclusivechoice/ExclusiveChoiceTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/exclusivechoice/ExclusiveChoiceTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -33,8 +33,8 @@
import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.builder.GatewayBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
import org.jbpm.api.runtime.BasicAttachments;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/multichoice/MultiChoiceTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/multichoice/MultiChoiceTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/multichoice/MultiChoiceTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -33,8 +33,8 @@
import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.builder.GatewayBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
import org.jbpm.api.runtime.BasicAttachments;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/parallelsplit/ParallelSplitTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/parallelsplit/ParallelSplitTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/parallelsplit/ParallelSplitTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -34,7 +34,7 @@
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Signal.SignalType;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -31,7 +31,7 @@
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Signal.SignalType;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -31,7 +31,7 @@
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Gateway.GatewayType;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/synchronization/SynchronizationTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/synchronization/SynchronizationTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/synchronization/SynchronizationTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -34,7 +34,7 @@
import org.jbpm.api.model.Gateway.GatewayType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/casedata/CaseDataTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/casedata/CaseDataTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/casedata/CaseDataTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -33,7 +33,7 @@
import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/taskdata/TaskDataTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/taskdata/TaskDataTest.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/taskdata/TaskDataTest.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -33,8 +33,8 @@
import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
import org.jbpm.api.model.builder.TaskBuilder;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
/**
Modified: projects/spec/trunk/modules/cts/src/test/resources/log4j.xml
===================================================================
--- projects/spec/trunk/modules/cts/src/test/resources/log4j.xml 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/cts/src/test/resources/log4j.xml 2008-10-08 09:18:41 UTC (rev 2502)
@@ -32,12 +32,11 @@
<!-- Limit categories -->
<!-- ================ -->
- <!-- Apache HTTP Client -->
- <category name="org.apache.commons.httpclient">
+ <category name="org.hibernate">
<priority value="INFO" />
</category>
- <category name="httpclient.wire">
- <priority value="INFO" />
+ <category name="org.hibernate.persister">
+ <priority value="DEBUG" />
</category>
<!-- ======================= -->
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/GatewayImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/GatewayImpl.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/GatewayImpl.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -167,11 +167,6 @@
if (expectedFlows.contains(flow) == false)
throw new IllegalStateException("Unexpected token from: " + flow);
- // Call custom execution handler
- ExecutionHandler exHandler = getExecutionHandler(false);
- if (exHandler != null)
- exHandler.execute(token);
-
// Remove the flow from the expected list
expectedFlows.remove(flow);
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -57,10 +57,12 @@
import org.jbpm.api.runtime.SignalHandler;
import org.jbpm.api.runtime.Token;
import org.jbpm.api.runtime.TokenExecutor;
+import org.jbpm.api.runtime.Token.TokenStatus;
import org.jbpm.ri.model.builder.MultipleInFlowSupport;
import org.jbpm.ri.model.builder.MultipleOutFlowSupport;
import org.jbpm.ri.model.builder.SingleInFlowSupport;
import org.jbpm.ri.model.builder.SingleOutFlowSupport;
+import org.jbpm.ri.runtime.RuntimeContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -220,6 +222,15 @@
return outFlows;
}
+ public void execute(RuntimeContext rtContext)
+ {
+ Token token = rtContext.getToken();
+
+ // The default implementation calls the ExecutionHandler
+ ExecutionHandler execHandler = getExecutionHandler();
+ execHandler.execute(token);
+ }
+
public <T extends ExecutionHandler> void setExecutionHandler(Class<T> clazz)
{
this.execHandler = clazz.getName();
@@ -236,7 +247,7 @@
}
@Override
- public ExecutionHandler getExecutionHandler(boolean defaultHandler)
+ public ExecutionHandler getExecutionHandler()
{
if (customExecHandler == null && execHandler != null)
customExecHandler = loadHandlerInstance(ExecutionHandler.class, execHandler);
@@ -244,7 +255,7 @@
if (defaultExecHandler == null)
defaultExecHandler = getDefaultExecutionHandler();
- return defaultHandler ? defaultExecHandler : customExecHandler;
+ return customExecHandler != null ? customExecHandler : defaultExecHandler;
}
protected ExecutionHandler getDefaultExecutionHandler()
@@ -273,7 +284,7 @@
}
@Override
- public SignalHandler getSignalHandler(boolean defaultHandler)
+ public SignalHandler getSignalHandler()
{
if (customSignalHandler == null && sigHandler != null)
customSignalHandler = loadHandlerInstance(SignalHandler.class, sigHandler);
@@ -281,13 +292,13 @@
if (defaultSignalHandler == null)
defaultSignalHandler = getDefaultSignalHandler();
- return defaultHandler ? defaultSignalHandler : customSignalHandler;
+ return customSignalHandler != null ? customSignalHandler : defaultSignalHandler;
}
protected abstract SignalHandler getDefaultSignalHandler();
@Override
- public FlowHandler getFlowHandler(boolean defaultHandler)
+ public FlowHandler getFlowHandler()
{
if (customFlowHandler == null && flowHandler != null)
customFlowHandler = loadHandlerInstance(FlowHandler.class, flowHandler);
@@ -295,7 +306,7 @@
if (defaultFlowHandler == null)
defaultFlowHandler = getDefaultFlowHandler();
- return defaultHandler ? defaultFlowHandler : customFlowHandler;
+ return customFlowHandler != null ? customFlowHandler : defaultFlowHandler;
}
protected FlowHandler getDefaultFlowHandler()
@@ -310,7 +321,8 @@
if (getOutFlows().size() == 1)
{
SequenceFlow outFlow = getOutFlows().get(0);
- tokenExecutor.move(token, outFlow);
+ if (token.getTokenStatus() == TokenStatus.Started)
+ tokenExecutor.move(token, outFlow);
}
else
{
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ReceiveTaskImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ReceiveTaskImpl.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ReceiveTaskImpl.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -33,20 +33,18 @@
import org.jbpm.api.NotImplementedException;
import org.jbpm.api.client.MessageListener;
import org.jbpm.api.model.Message;
-import org.jbpm.api.model.Node;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.ProcessStructure;
import org.jbpm.api.runtime.ExecutionContext;
-import org.jbpm.api.runtime.ExecutionHandler;
-import org.jbpm.api.runtime.FlowHandler;
import org.jbpm.api.runtime.Token;
import org.jbpm.api.runtime.TokenExecutor;
+import org.jbpm.ri.runtime.RuntimeContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * Task that corresponds to the TaskType.None
+ * Task that corresponds to the TaskType.Receive
*
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
@@ -66,8 +64,11 @@
private List<Message> receivedMessages = new ArrayList<Message>();
@Transient
- private List<Token> suspendedTokens = new ArrayList<Token>();
+ private transient Token suspendedToken;
+ @Transient
+ private transient TokenExecutor tokenExecutor;
+
public ReceiveTaskImpl(ProcessStructure procStruct, String name)
{
super(procStruct, name, TaskType.Receive);
@@ -94,30 +95,55 @@
this.messageRef = message;
}
+
+ @Override
+ public void execute(RuntimeContext rtContext)
+ {
+ Token token = rtContext.getToken();
+ tokenExecutor = rtContext.getTokenExecutor();
+
+ if (receivedMessages.size() > 0)
+ {
+ // Copy the expected properties from the received message
+ Message msg = receivedMessages.get(0);
+ ExecutionContext exContext = token.getExecutionContext();
+ for (String key : messageRef.getPropertyNames())
+ {
+ Object value = msg.getProperty(key).getValue();
+ exContext.addAttachment(key, value);
+ }
+ }
+ else
+ {
+ tokenExecutor.suspend(token);
+ suspendedToken = token;
+ }
+ }
+
+ @Override
public synchronized void catchMessage(Message message)
{
String msgName = message.getName();
if (messageRef.getName().equals(msgName))
{
log.debug("catchMessage in " + this + " => " + message);
+
+ // Verify expected properties
for (String propName : messageRef.getPropertyNames())
{
if (message.getProperty(propName) == null)
throw new IllegalArgumentException("Received message does not contain expected property: " + propName);
}
+
+ // Store the received message
receivedMessages.add(message);
- if (suspendedTokens.size() == 0)
+ // Activate the suspended token
+ if (suspendedToken != null)
{
- log.debug("Suspend message: " + message);
+ tokenExecutor.activate(suspendedToken.getTokenID());
+ suspendedToken = null;
}
- else
- {
- Token token = suspendedTokens.remove(0);
- ExecutionContext exContext = token.getExecutionContext();
- TokenExecutor tokenExecutor = exContext.removeAttachment(TokenExecutor.class);
- tokenExecutor.activate(token.getTokenID());
- }
}
else
{
@@ -126,80 +152,6 @@
}
@Override
- protected ExecutionHandler getDefaultExecutionHandler()
- {
- final Node thisNode = this;
- return new ExecutionHandler()
- {
- private static final long serialVersionUID = 1L;
-
- public void execute(Token token)
- {
- if (receivedMessages.size() > 0)
- {
- // Copy the expected properties from the
- // received message to the execution context
- Message msg = receivedMessages.get(0);
- ExecutionContext exContext = token.getExecutionContext();
- for (String key : messageRef.getPropertyNames())
- {
- Object value = msg.getProperty(key).getValue();
- exContext.addAttachment(key, value);
- }
- }
- }
-
- @Override
- public Node getNode()
- {
- return thisNode;
- }
-
- @Override
- public void setNode(Node node)
- {
- }
- };
- }
-
- @Override
- protected FlowHandler getDefaultFlowHandler()
- {
- final Node thisNode = this;
- return new FlowHandler()
- {
- private static final long serialVersionUID = 1L;
-
- public void execute(TokenExecutor tokenExecutor, Token token)
- {
- if (receivedMessages.size() > 0)
- {
- receivedMessages.remove(0);
- tokenExecutor.move(token, getOutFlow());
- }
- else
- {
- tokenExecutor.suspend(token);
- ExecutionContext exContext = token.getExecutionContext();
- exContext.addAttachment(TokenExecutor.class, tokenExecutor);
- suspendedTokens.add(token);
- }
- }
-
- @Override
- public Node getNode()
- {
- return thisNode;
- }
-
- @Override
- public void setNode(Node node)
- {
- }
- };
- }
-
- @Override
protected void create(ProcessDefinition procDef)
{
super.create(procDef);
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskImpl.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskImpl.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -39,7 +39,7 @@
import org.slf4j.LoggerFactory;
/**
- * Task that corresponds to the TaskType.None
+ * Task that corresponds to the TaskType.Send
*
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/UserTaskImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/UserTaskImpl.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/UserTaskImpl.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -0,0 +1,191 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.model;
+
+//$Id$
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.Entity;
+import javax.persistence.Transient;
+
+import org.jbpm.api.InvalidProcessException;
+import org.jbpm.api.client.MessageListener;
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.ProcessStructure;
+import org.jbpm.api.runtime.ExecutionContext;
+import org.jbpm.api.runtime.Token;
+import org.jbpm.api.runtime.TokenExecutor;
+import org.jbpm.ri.runtime.MessageSender;
+import org.jbpm.ri.runtime.RuntimeContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Task that corresponds to the TaskType.User
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+ at Entity(name = "UserTask")
+public class UserTaskImpl extends TaskImpl implements MessageListener
+{
+ private static final long serialVersionUID = 1L;
+
+ // provide logging
+ final static Logger log = LoggerFactory.getLogger(UserTaskImpl.class);
+
+ @Transient
+ protected MessageImpl outMessageRef;
+
+ @Transient
+ protected MessageImpl inMessageRef;
+
+ @Transient
+ private List<Message> receivedMessages = new ArrayList<Message>();
+
+ @Transient
+ private transient Token suspendedToken;
+
+ @Transient
+ private transient TokenExecutor tokenExecutor;
+
+ public UserTaskImpl(ProcessStructure procStruct, String name)
+ {
+ super(procStruct, name, TaskType.User);
+ }
+
+ // Persistence ctor
+ protected UserTaskImpl()
+ {
+ }
+
+ public Message getOutMessageRef()
+ {
+ return outMessageRef;
+ }
+
+ public void setOutMessageRef(MessageImpl message)
+ {
+ this.outMessageRef = message;
+ }
+
+ public Message getInMessageRef()
+ {
+ return inMessageRef;
+ }
+
+ public void setInMessageRef(MessageImpl message)
+ {
+ this.inMessageRef = message;
+ }
+
+
+ @Override
+ public void execute(RuntimeContext rtContext)
+ {
+ Token token = rtContext.getToken();
+ tokenExecutor = rtContext.getTokenExecutor();
+
+ if (receivedMessages.size() == 0)
+ {
+ MessageSender messageSender = new MessageSender(this, outMessageRef);
+ messageSender.sendMessage(token);
+ }
+
+ if (receivedMessages.size() > 0)
+ {
+ // Copy the expected properties from the received message
+ Message msg = receivedMessages.remove(0);
+ ExecutionContext exContext = token.getExecutionContext();
+ for (String key : inMessageRef.getPropertyNames())
+ {
+ Object value = msg.getProperty(key).getValue();
+ exContext.addAttachment(key, value);
+ }
+ }
+ else
+ {
+ tokenExecutor.suspend(token);
+ suspendedToken = token;
+ }
+ }
+
+ @Override
+ public synchronized void catchMessage(Message message)
+ {
+ String msgName = message.getName();
+ if (inMessageRef.getName().equals(msgName))
+ {
+ log.debug("catchMessage in " + this + " => " + message);
+
+ // Verify expected properties
+ for (String propName : inMessageRef.getPropertyNames())
+ {
+ if (message.getProperty(propName) == null)
+ throw new IllegalArgumentException("Received message does not contain expected property: " + propName);
+ }
+
+ // Store the received message
+ receivedMessages.add(message);
+
+ // Activate the suspended token
+ if (suspendedToken != null)
+ {
+ tokenExecutor.activate(suspendedToken.getTokenID());
+ suspendedToken = null;
+ }
+ }
+ else
+ {
+ log.debug("Ignore unexpected message: " + message);
+ }
+ }
+
+ @Override
+ protected void create(ProcessDefinition procDef)
+ {
+ super.create(procDef);
+
+ if (outMessageRef == null)
+ throw new InvalidProcessException("An outgoing message ref attribute MUST be entered");
+ if (inMessageRef == null)
+ throw new InvalidProcessException("An incomming message ref attribute MUST be entered");
+
+ ProcessDefinitionImpl procDefImpl = (ProcessDefinitionImpl)procDef;
+ procDefImpl.initializeMessageRef(outMessageRef);
+ procDefImpl.initializeMessageRef(inMessageRef);
+ }
+
+ @Override
+ protected void create(Process proc)
+ {
+ super.create(proc);
+
+ ProcessDefinitionImpl procDefImpl = (ProcessDefinitionImpl)proc.getProcessDefinition();
+ procDefImpl.initializeMessageRef(outMessageRef);
+ procDefImpl.initializeMessageRef(inMessageRef);
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/UserTaskImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -57,6 +57,7 @@
import org.jbpm.ri.model.SequenceFlowImpl;
import org.jbpm.ri.model.StartEventImpl;
import org.jbpm.ri.model.TaskImpl;
+import org.jbpm.ri.model.UserTaskImpl;
/**
* The ProcessBuilder can be used to dynamically build a {@link Process}.
@@ -173,7 +174,7 @@
}
else if (type == TaskType.User)
{
- throw new NotImplementedException("JBPM-1653", "Task Type User");
+ node = new UserTaskImpl(procStruct, name);
}
else if (type == TaskType.Script)
{
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -35,6 +35,7 @@
import org.jbpm.ri.model.ReceiveTaskImpl;
import org.jbpm.ri.model.SendTaskImpl;
import org.jbpm.ri.model.TaskImpl;
+import org.jbpm.ri.model.UserTaskImpl;
/**
* The TaskBuilder can be used to dynamically build {@link Task}.
@@ -53,22 +54,43 @@
}
@Override
- public TaskBuilder addMessageRef(String msgName)
+ public TaskBuilder addOutMessageRef(String msgName)
{
TaskImpl taskImpl = getTask();
+ if (taskImpl instanceof SendTaskImpl)
+ {
+ SendTaskImpl sendTaskImpl = (SendTaskImpl)taskImpl;
+ sendTaskImpl.setMessageRef(new MessageImpl(msgName));
+ }
+ else if (taskImpl instanceof UserTaskImpl)
+ {
+ UserTaskImpl userTaskImpl = (UserTaskImpl)taskImpl;
+ userTaskImpl.setOutMessageRef(new MessageImpl(msgName));
+ }
+ else
+ {
+ throw new IllegalStateException("Cannot set outgoing message ref on task: " + taskImpl);
+ }
+ return this;
+ }
+
+ @Override
+ public TaskBuilder addInMessageRef(String msgName)
+ {
+ TaskImpl taskImpl = getTask();
if (taskImpl instanceof ReceiveTaskImpl)
{
ReceiveTaskImpl receiveTaskImpl = (ReceiveTaskImpl)taskImpl;
receiveTaskImpl.setMessageRef(new MessageImpl(msgName));
}
- else if (taskImpl instanceof SendTaskImpl)
+ else if (taskImpl instanceof UserTaskImpl)
{
- SendTaskImpl sendTaskImpl = (SendTaskImpl)taskImpl;
- sendTaskImpl.setMessageRef(new MessageImpl(msgName));
+ UserTaskImpl userTaskImpl = (UserTaskImpl)taskImpl;
+ userTaskImpl.setInMessageRef(new MessageImpl(msgName));
}
else
{
- throw new IllegalStateException("Cannot set a message ref on task: " + taskImpl);
+ throw new IllegalStateException("Cannot set incomming message ref on task: " + taskImpl);
}
return this;
}
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/AssignmentInterceptor.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/AssignmentInterceptor.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/AssignmentInterceptor.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -0,0 +1,74 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.runtime;
+
+//$Id$
+
+import org.jbpm.api.model.Assignment;
+import org.jbpm.api.model.Expression;
+import org.jbpm.api.model.Node;
+import org.jbpm.api.model.Assignment.AssignTime;
+import org.jbpm.api.runtime.ExecutionContext;
+import org.jbpm.api.runtime.Token;
+
+/**
+ * An interceptor that invokes the ExecutionHandler.execute
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 07-Oct-2008
+ */
+public class AssignmentInterceptor implements NodeInterceptor
+{
+ @Override
+ public void execute(RuntimeContext rtContext)
+ {
+ Node node = rtContext.getNode();
+ Token token = rtContext.getToken();
+
+ // Do start time assignments
+ for (Assignment ass : node.getAssignments())
+ {
+ if (ass.getAssignTime() == AssignTime.Start)
+ anyTimeAssignment(ass, token);
+ }
+
+ // Call the next Interceptor
+ rtContext.next();
+
+ // Do end time assignments
+ for (Assignment ass : node.getAssignments())
+ {
+ if (ass.getAssignTime() == AssignTime.End)
+ anyTimeAssignment(ass, token);
+ }
+ }
+
+ protected void anyTimeAssignment(Assignment ass, Token token)
+ {
+ Expression expr = ass.getFrom();
+ ExpressionEvaluator exprEvaluator = new ExpressionEvaluator(expr);
+ Object result = exprEvaluator.evaluateExpression(token);
+ String propName = ass.getTo().getName();
+ ExecutionContext exContext = token.getExecutionContext();
+ exContext.addAttachment(propName, result);
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/AssignmentInterceptor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/ExitSignalInterceptor.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/ExitSignalInterceptor.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/ExitSignalInterceptor.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -0,0 +1,47 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.runtime;
+
+//$Id$
+
+import org.jbpm.api.model.Node;
+import org.jbpm.api.runtime.SignalHandler;
+import org.jbpm.api.runtime.Token;
+
+/**
+ * An interceptor that invokes the SignalHandler.throwExitSignal
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 07-Oct-2008
+ */
+public class ExitSignalInterceptor implements NodeInterceptor
+{
+ @Override
+ public void execute(RuntimeContext rtContext)
+ {
+ Node node = rtContext.getNode();
+ Token token = rtContext.getToken();
+
+ SignalHandler sigHandler = node.getSignalHandler();
+ sigHandler.throwExitSignal(token);
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/ExitSignalInterceptor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/FlowHandlerInterceptor.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/FlowHandlerInterceptor.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/FlowHandlerInterceptor.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -0,0 +1,53 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.runtime;
+
+//$Id$
+
+import org.jbpm.api.model.Node;
+import org.jbpm.api.runtime.FlowHandler;
+import org.jbpm.api.runtime.Token;
+import org.jbpm.api.runtime.TokenExecutor;
+
+/**
+ * An interceptor that invokes the FlowHandler.execute
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 07-Oct-2008
+ */
+public class FlowHandlerInterceptor implements NodeInterceptor
+{
+ @Override
+ public void execute(RuntimeContext rtContext)
+ {
+ TokenExecutor tokenExecutor = rtContext.getTokenExecutor();
+ Node node = rtContext.getNode();
+ Token token = rtContext.getToken();
+
+ // Call the next Interceptor
+ rtContext.next();
+
+ // Call the FlowHandler
+ FlowHandler flowHandler = node.getFlowHandler();
+ flowHandler.execute(tokenExecutor, token);
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/FlowHandlerInterceptor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/NodeExecuteInterceptor.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/NodeExecuteInterceptor.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/NodeExecuteInterceptor.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.runtime;
+
+//$Id$
+
+import org.jbpm.ri.model.NodeImpl;
+
+/**
+ * An interceptor that invokes the Node.execute
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 07-Oct-2008
+ */
+public class NodeExecuteInterceptor implements NodeInterceptor
+{
+ @Override
+ public void execute(RuntimeContext rtContext)
+ {
+ NodeImpl nodeImpl = (NodeImpl)rtContext.getNode();
+ nodeImpl.execute(rtContext);
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/NodeExecuteInterceptor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/NodeInterceptor.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/NodeInterceptor.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/NodeInterceptor.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -0,0 +1,35 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.runtime;
+
+//$Id$
+
+/**
+ * A node interceptor
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 07-Oct-2008
+ */
+public interface NodeInterceptor
+{
+ void execute (RuntimeContext rtContext);
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/NodeInterceptor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/RunnableToken.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/RunnableToken.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/RunnableToken.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -0,0 +1,140 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.runtime;
+
+import org.jbpm.api.model.Node;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.model.SequenceFlow;
+import org.jbpm.api.model.Process.ProcessStatus;
+import org.jbpm.api.runtime.Token;
+import org.jbpm.api.runtime.TokenExecutor;
+import org.jbpm.api.runtime.Token.TokenStatus;
+import org.jbpm.ri.model.ProcessImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The runnable Token
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+class RunnableToken implements Runnable
+{
+ // provide logging
+ final static Logger log = LoggerFactory.getLogger(RunnableToken.class);
+
+ private RuntimeProcess rtProc;
+ private TokenExecutor tokenExecutor;
+ private MutableToken token;
+ private boolean releaseThread;
+
+ public RunnableToken(TokenExecutorImpl tokenExecutorImpl, RuntimeProcess rtProc, MutableToken token)
+ {
+ this.tokenExecutor = rtProc.getTokenExecutor();
+ this.rtProc = rtProc;
+ this.token = token;
+ }
+
+ public Token getToken()
+ {
+ return token;
+ }
+
+ void releaseThread()
+ {
+ releaseThread = true;
+ }
+
+ public void run()
+ {
+ Process proc = rtProc.getProcess();
+ try
+ {
+ SequenceFlow flow = token.getFlow();
+ if (flow == null)
+ throw new IllegalStateException("Cannot obtain initial flow");
+
+ while (continueTokenThread())
+ {
+ // Get the target node
+ Node node = token.getFlow().getTargetRef();
+
+ // Synchronize on the target Node
+ synchronized (node)
+ {
+ // Create a Token that includes node properties
+ DelegatingToken tokCopy = new DelegatingToken(token);
+ RuntimeContext rtContext = new RuntimeContext(tokenExecutor, tokCopy);
+ rtContext.addInterceptor(new SignalHandlerInterceptor());
+ rtContext.addInterceptor(new FlowHandlerInterceptor());
+ rtContext.addInterceptor(new AssignmentInterceptor());
+ rtContext.addInterceptor(new NodeExecuteInterceptor());
+
+ // Call the interceptor chain
+ rtContext.next();
+ }
+ }
+ }
+ catch (RuntimeException rte)
+ {
+ log.error("Process aborted: " + proc, rte);
+ ((ProcessImpl)proc).setRuntimeException(rte);
+
+ log.debug("Terminate all suspended tokens");
+ for (Token auxToken : tokenExecutor.getRunnableTokens())
+ {
+ if (auxToken.getTokenStatus() == TokenStatus.Suspended)
+ tokenExecutor.destroy(auxToken);
+ }
+
+ // Destroy this token
+ tokenExecutor.destroy(token);
+ }
+ finally
+ {
+ // Notify Process on token termination
+ notifyRuntimeProcess();
+ }
+ }
+
+ private boolean continueTokenThread()
+ {
+ TokenStatus tokStatus = token.getTokenStatus();
+ ProcessStatus procStatus = rtProc.getProcess().getProcessStatus();
+ return releaseThread == false && procStatus == ProcessStatus.Active && tokStatus == TokenStatus.Started;
+ }
+
+ private void notifyRuntimeProcess()
+ {
+ synchronized (rtProc)
+ {
+ rtProc.notifyAll();
+ }
+ }
+
+ @Override
+ public String toString()
+ {
+ return token.toString();
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/RunnableToken.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/RuntimeContext.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/RuntimeContext.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/RuntimeContext.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -0,0 +1,81 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.runtime;
+
+//$Id$
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jbpm.api.model.Node;
+import org.jbpm.api.runtime.Token;
+import org.jbpm.api.runtime.TokenExecutor;
+
+/**
+ * A runtime context that passes through a chain of interceptors.
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 07-Oct-2008
+ */
+public class RuntimeContext
+{
+ List<NodeInterceptor> interceptors = new ArrayList<NodeInterceptor>();
+ int itorIndex;
+
+ TokenExecutor tokenExecutor;
+ MutableToken token;
+
+ public RuntimeContext(TokenExecutor tokenExecutor, MutableToken token)
+ {
+ this.tokenExecutor = tokenExecutor;
+ this.token = token;
+ }
+
+ public TokenExecutor getTokenExecutor()
+ {
+ return tokenExecutor;
+ }
+
+ public Node getNode()
+ {
+ return token.getFlow().getTargetRef();
+ }
+
+ public Token getToken()
+ {
+ return token;
+ }
+
+ void addInterceptor(NodeInterceptor itor)
+ {
+ interceptors.add(itor);
+ }
+
+ protected void next()
+ {
+ if (itorIndex < interceptors.size())
+ {
+ NodeInterceptor itor = interceptors.get(itorIndex++);
+ itor.execute(this);
+ }
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/RuntimeContext.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/SignalHandlerInterceptor.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/SignalHandlerInterceptor.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/SignalHandlerInterceptor.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -0,0 +1,58 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.runtime;
+
+//$Id$
+
+import org.jbpm.api.model.Node;
+import org.jbpm.api.runtime.SignalHandler;
+import org.jbpm.api.runtime.Token;
+
+/**
+ * An interceptor that invokes the SignalHandler.throwEnterSignal
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 07-Oct-2008
+ */
+public class SignalHandlerInterceptor implements NodeInterceptor
+{
+ @Override
+ public void execute(RuntimeContext rtContext)
+ {
+ Node node = rtContext.getNode();
+ Token token = rtContext.getToken();
+
+ try
+ {
+ SignalHandler sigHandler = node.getSignalHandler();
+ sigHandler.throwEnterSignal(token);
+
+ // Call the next Interceptor
+ rtContext.next();
+ }
+ finally
+ {
+ SignalHandler sigHandler = node.getSignalHandler();
+ sigHandler.throwExitSignal(token);
+ }
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/SignalHandlerInterceptor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/TokenExecutorImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/TokenExecutorImpl.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/TokenExecutorImpl.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -31,21 +31,12 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-import org.jbpm.api.model.Assignment;
-import org.jbpm.api.model.Expression;
-import org.jbpm.api.model.Node;
-import org.jbpm.api.model.Process;
import org.jbpm.api.model.SequenceFlow;
-import org.jbpm.api.model.Assignment.AssignTime;
import org.jbpm.api.model.Process.ProcessStatus;
-import org.jbpm.api.runtime.ExecutionContext;
-import org.jbpm.api.runtime.ExecutionHandler;
import org.jbpm.api.runtime.FlowHandler;
-import org.jbpm.api.runtime.SignalHandler;
import org.jbpm.api.runtime.Token;
import org.jbpm.api.runtime.TokenExecutor;
import org.jbpm.api.runtime.Token.TokenStatus;
-import org.jbpm.ri.model.ProcessImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -63,7 +54,7 @@
private RuntimeProcess rtProc;
private ExecutorService executor = Executors.newCachedThreadPool();
- private Map<String, RunnableToken> runnableTokens = new HashMap<String, RunnableToken>();
+ Map<String, RunnableToken> runnableTokens = new HashMap<String, RunnableToken>();
public TokenExecutorImpl(RuntimeProcess rtProc)
{
@@ -100,7 +91,7 @@
log.debug("Create Token: " + token);
- RunnableToken rtToken = new RunnableToken(rtProc, mutableToken);
+ RunnableToken rtToken = new RunnableToken(this, rtProc, mutableToken);
runnableTokens.put(token.getTokenID(), rtToken);
}
}
@@ -113,7 +104,7 @@
if (procStatus != ProcessStatus.Ready && procStatus != ProcessStatus.Active)
throw new IllegalStateException("Cannot start token to process in state: " + procStatus);
- log.debug("Sart Token: " + token);
+ log.debug("Start Token: " + token);
MutableToken mutableToken = (MutableToken)token;
mutableToken.setTokenStatus(TokenStatus.Started);
@@ -129,6 +120,9 @@
if (flow == null)
throw new IllegalArgumentException("Flow cannot be null");
+ if (token.getTokenStatus() != TokenStatus.Started)
+ throw new IllegalStateException("Cannot move token in state: " + token.getTokenStatus());
+
MutableToken mutableToken = (MutableToken)token;
mutableToken.setFlow(flow);
}
@@ -159,9 +153,17 @@
{
synchronized (runnableTokens)
{
+ RunnableToken rtToken = runnableTokens.get(token.getTokenID());
+ if (rtToken == null)
+ throw new IllegalStateException("Not a runnable token: " + token);
+
log.debug("Suspend Token: " + token);
MutableToken mutableToken = (MutableToken)token;
mutableToken.setTokenStatus(TokenStatus.Suspended);
+
+ // Release the thread for a suspended token
+ rtToken.releaseThread();
+
return token.getTokenID();
}
}
@@ -182,170 +184,11 @@
MutableToken mutableToken = (MutableToken)token;
mutableToken.setTokenStatus(TokenStatus.Started);
+ rtToken = new RunnableToken(this, rtProc, mutableToken);
+ runnableTokens.put(token.getTokenID(), rtToken);
executor.submit(rtToken);
+
return token;
}
}
-
- /****************************************************
- * The runnable Token
- */
- class RunnableToken implements Runnable
- {
- private RuntimeProcess rtProc;
- private TokenExecutor tokenExecutor;
- private MutableToken token;
-
- public RunnableToken(RuntimeProcess rtProc, MutableToken token)
- {
- this.tokenExecutor = rtProc.getTokenExecutor();
- this.rtProc = rtProc;
- this.token = token;
- }
-
- public Token getToken()
- {
- return token;
- }
-
- public void run()
- {
- Process proc = rtProc.getProcess();
- try
- {
- SequenceFlow flow = token.getFlow();
- if (flow == null)
- throw new IllegalStateException("Cannot obtain initial flow");
-
- TokenStatus tokStatus = token.getTokenStatus();
- ProcessStatus procStatus = proc.getProcessStatus();
- while (procStatus == ProcessStatus.Active && tokStatus == TokenStatus.Started)
- {
- // Get the target and its handlers
- Node node = token.getFlow().getTargetRef();
- SignalHandler sigHandler = getSignalHandler(node);
- ExecutionHandler execHandler = getExecutionHandler(node);
- FlowHandler flowHandler = getFlowHandler(node);
-
- // Synchronize execution on the target Node
- synchronized (node)
- {
- // Create a Token that includes properties from the current Activity
- DelegatingToken tokCopy = new DelegatingToken(token);
-
- // Throw the Enter Signal
- sigHandler.throwEnterSignal(tokCopy);
-
- // Process the start time assignments
- startTimeAssignments(node, tokCopy);
-
- // Execute the target Node
- execHandler.execute(tokCopy);
-
- // Process the end time assignments
- endTimeAssignments(node, tokCopy);
-
- // Transfer the token to the FlowHandler
- flowHandler.execute(tokenExecutor, tokCopy);
-
- // Throw the Exit Signal
- sigHandler.throwExitSignal(tokCopy);
-
- tokStatus = token.getTokenStatus();
- procStatus = proc.getProcessStatus();
- }
- }
-
- // Notify Process on token termination
- terminateToken(proc);
- }
- catch (RuntimeException rte)
- {
- log.error("Process aborted: " + proc, rte);
- ((ProcessImpl)proc).setRuntimeException(rte);
-
- log.debug("Terminate all suspended tokens");
- Set<String> keySet = new HashSet<String>(runnableTokens.keySet());
- for (String tokID : keySet)
- {
- RunnableToken rtTok = runnableTokens.get(tokID);
- Token auxToken = rtTok.getToken();
- if (auxToken.getTokenStatus() == TokenStatus.Suspended)
- tokenExecutor.destroy(auxToken);
- }
-
- // Notify Process on token termination
- terminateToken(proc);
- }
- }
-
- private void terminateToken(Process proc)
- {
- // Destroy the token if not already done
- synchronized (runnableTokens)
- {
- TokenStatus status = token.getTokenStatus();
- if (status != TokenStatus.Suspended && status != TokenStatus.Destroyed)
- tokenExecutor.destroy(token);
- }
-
- // Notify the runtime process
- synchronized (rtProc)
- {
- rtProc.notifyAll();
- }
- }
-
- private void startTimeAssignments(Node node, Token token)
- {
- for (Assignment ass : node.getAssignments())
- {
- if (ass.getAssignTime() == AssignTime.Start)
- anyTimeAssignment(ass, token);
- }
- }
-
- private void endTimeAssignments(Node node, Token token)
- {
- for (Assignment ass : node.getAssignments())
- {
- if (ass.getAssignTime() == AssignTime.End)
- anyTimeAssignment(ass, token);
- }
- }
-
- private void anyTimeAssignment(Assignment ass, Token token)
- {
- Expression expr = ass.getFrom();
- ExpressionEvaluator exprEvaluator = new ExpressionEvaluator(expr);
- Object result = exprEvaluator.evaluateExpression(token);
- String propName = ass.getTo().getName();
- ExecutionContext exContext = token.getExecutionContext();
- exContext.addAttachment(propName, result);
- }
-
- private SignalHandler getSignalHandler(Node target)
- {
- SignalHandler customHandler = target.getSignalHandler(false);
- return customHandler != null ? customHandler : target.getSignalHandler(true);
- }
-
- private ExecutionHandler getExecutionHandler(Node target)
- {
- ExecutionHandler customHandler = target.getExecutionHandler(false);
- return customHandler != null ? customHandler : target.getExecutionHandler(true);
- }
-
- private FlowHandler getFlowHandler(Node target)
- {
- FlowHandler customHandler = target.getFlowHandler(false);
- return customHandler != null ? customHandler : target.getFlowHandler(true);
- }
-
- @Override
- public String toString()
- {
- return token.toString();
- }
- }
}
\ No newline at end of file
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/HibernatePersistenceServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/HibernatePersistenceServiceImpl.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/HibernatePersistenceServiceImpl.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -0,0 +1,239 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.service;
+
+// $Id$
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import javax.management.ObjectName;
+
+import org.hibernate.Hibernate;
+import org.hibernate.ObjectNotFoundException;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.hibernate.cfg.AnnotationConfiguration;
+import org.hibernate.classic.Session;
+import org.jbpm.api.ProcessNotFoundException;
+import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.service.PersistenceService;
+import org.jbpm.api.service.Service;
+import org.jbpm.ri.model.ProcessDefinitionImpl;
+import org.jbpm.ri.model.ProcessImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A Hibernate based persistence service.
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 17-Sep-2008
+ */
+public class HibernatePersistenceServiceImpl extends PersistenceService implements MutableService
+{
+ // Provide logging
+ final Logger log = LoggerFactory.getLogger(HibernatePersistenceServiceImpl.class);
+
+ private String hibernateConfig;
+ private SessionFactory sessionFactory;
+ private Set<String> annotatedClasses = new HashSet<String>();
+
+ @Override
+ public void setProcessEngine(ProcessEngine engine)
+ {
+ super.setProcessEngine(engine);
+ }
+
+ public void setHibernateConfig(String hibernateConfig)
+ {
+ this.hibernateConfig = hibernateConfig;
+ }
+
+ public void setAnnotatedClasses(Set<String> annotatedClasses)
+ {
+ this.annotatedClasses = annotatedClasses;
+ }
+
+ @Override
+ public ObjectName saveProcessDefinition(ProcessDefinition procDef)
+ {
+ log.debug("START saveProcessDefinition: " + procDef.getKey());
+ Session session = getSessionFactory().openSession();
+ Transaction tx = session.beginTransaction();
+ try
+ {
+ session.saveOrUpdate(procDef);
+ tx.commit();
+ }
+ finally
+ {
+ session.close();
+ }
+ log.debug("END saveProcessDefinition: " + procDef.getKey());
+ return procDef.getKey();
+ }
+
+ @Override
+ public ProcessDefinition loadProcessDefinition(ObjectName procDefID)
+ {
+ log.debug("START loadProcessDefinition: " + procDefID);
+ ProcessDefinitionImpl procDefImpl = null;
+ Session session = getSessionFactory().openSession();
+ try
+ {
+ Integer id = Integer.valueOf(procDefID.getKeyProperty("id"));
+ procDefImpl = (ProcessDefinitionImpl)session.load(ProcessDefinitionImpl.class, id);
+ Hibernate.initialize(procDefImpl);
+ }
+ catch (ObjectNotFoundException ex)
+ {
+ throw new ProcessNotFoundException("Cannot find process: " + procDefID);
+ }
+ finally
+ {
+ session.close();
+ }
+ log.debug("END loadProcessDefinition: " + procDefID);
+ return (ProcessDefinition)procDefImpl;
+ }
+
+ @Override
+ public void deleteProcessDefinition(ProcessDefinition procDef)
+ {
+ log.debug("START deleteProcessDefinition: " + procDef);
+ Session session = getSessionFactory().openSession();
+ Transaction tx = session.beginTransaction();
+ try
+ {
+ session.delete(procDef);
+ tx.commit();
+ }
+ finally
+ {
+ session.close();
+ }
+ log.debug("END deleteProcessDefinition: " + procDef);
+ }
+
+ @Override
+ public ObjectName saveProcess(Process proc)
+ {
+ log.debug("START saveProcess: " + proc.getKey());
+ Session session = getSessionFactory().openSession();
+ Transaction tx = session.beginTransaction();
+ try
+ {
+ session.saveOrUpdate(proc);
+ tx.commit();
+ }
+ finally
+ {
+ session.close();
+ }
+ log.debug("END saveProcess: " + proc.getKey());
+ return proc.getKey();
+ }
+
+ @Override
+ public Process loadProcess(ObjectName procID)
+ {
+ log.debug("START loadProcess: " + procID);
+ ProcessImpl procImpl = null;
+ Session session = getSessionFactory().openSession();
+ try
+ {
+ Integer id = Integer.valueOf(procID.getKeyProperty("id"));
+ procImpl = (ProcessImpl)session.load(ProcessImpl.class, id);
+ Hibernate.initialize(procImpl);
+ }
+ catch (ObjectNotFoundException ex)
+ {
+ throw new ProcessNotFoundException("Cannot find process: " + procID);
+ }
+ finally
+ {
+ session.close();
+ }
+ log.debug("END loadProcess: " + procID);
+ return (Process)procImpl;
+ }
+
+ @Override
+ public void deleteProcess(Process proc)
+ {
+ log.debug("START deleteProcess: " + proc);
+ Session session = getSessionFactory().openSession();
+ Transaction tx = session.beginTransaction();
+ try
+ {
+ session.delete(proc);
+ tx.commit();
+ }
+ finally
+ {
+ session.close();
+ }
+ log.debug("END deleteProcess: " + proc);
+ }
+
+ @SuppressWarnings("unchecked")
+ private SessionFactory getSessionFactory()
+ {
+ // If this property is not explicitly set in the beans config
+ // fall back to the -Ddatabase property that also activates
+ // the corresponding mvn profiles
+ if (hibernateConfig == null)
+ {
+ String database = System.getProperty("database", "mysql");
+ hibernateConfig = "hibernate.cfg." + database + ".xml";
+ }
+
+ if (sessionFactory == null)
+ {
+ AnnotationConfiguration anConfig = new AnnotationConfiguration();
+
+ String serviceName = null;
+ try
+ {
+ ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
+ Iterator<String> itAnn = annotatedClasses.iterator();
+ while (itAnn.hasNext())
+ {
+ serviceName = itAnn.next();
+ Class<Service> serviceClass = (Class<Service>)ctxLoader.loadClass(serviceName);
+ anConfig.addAnnotatedClass(serviceClass);
+ }
+ }
+ catch (Exception ex)
+ {
+ throw new IllegalStateException("Cannot load service: " + serviceName, ex);
+ }
+
+ sessionFactory = anConfig.configure(hibernateConfig).buildSessionFactory();
+ }
+ return sessionFactory;
+ }
+}
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/HibernatePersistenceServiceImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/InMemoryPersistenceServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/InMemoryPersistenceServiceImpl.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/InMemoryPersistenceServiceImpl.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -0,0 +1,126 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.service;
+
+// $Id$
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.ProcessNotFoundException;
+import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.service.PersistenceService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * An in-memory persistence service.
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 17-Sep-2008
+ */
+public class InMemoryPersistenceServiceImpl extends PersistenceService implements MutableService
+{
+ // Provide logging
+ final Logger log = LoggerFactory.getLogger(InMemoryPersistenceServiceImpl.class);
+
+ private Map<ObjectName, ProcessDefinition> procDefs = new HashMap<ObjectName, ProcessDefinition>();
+ private Map<ObjectName, Process> procs = new HashMap<ObjectName, Process>();
+
+ @Override
+ public void setProcessEngine(ProcessEngine engine)
+ {
+ super.setProcessEngine(engine);
+ }
+
+ @Override
+ public ObjectName saveProcessDefinition(ProcessDefinition procDef)
+ {
+ log.debug("START saveProcessDefinition: " + procDef.getKey());
+
+ procDefs.put(procDef.getKey(), procDef);
+
+ log.debug("END saveProcessDefinition: " + procDef.getKey());
+ return procDef.getKey();
+ }
+
+ @Override
+ public ProcessDefinition loadProcessDefinition(ObjectName procDefID)
+ {
+ log.debug("START loadProcessDefinition: " + procDefID);
+
+ ProcessDefinition procDef = procDefs.get(procDefID);
+ if (procDef == null)
+ throw new ProcessNotFoundException("Cannot find process: " + procDefID);
+
+ log.debug("END loadProcessDefinition: " + procDefID);
+ return procDef;
+ }
+
+ @Override
+ public void deleteProcessDefinition(ProcessDefinition procDef)
+ {
+ log.debug("START deleteProcessDefinition: " + procDef);
+
+ procDefs.remove(procDef.getKey());
+
+ log.debug("END deleteProcessDefinition: " + procDef);
+ }
+
+ @Override
+ public ObjectName saveProcess(Process proc)
+ {
+ log.debug("START saveProcess: " + proc.getKey());
+
+ procs.put(proc.getKey(), proc);
+
+ log.debug("END saveProcess: " + proc.getKey());
+ return proc.getKey();
+ }
+
+ @Override
+ public Process loadProcess(ObjectName procID)
+ {
+ log.debug("START loadProcess: " + procID);
+
+ Process proc = procs.get(procID);
+ if (proc == null)
+ throw new ProcessNotFoundException("Cannot find process: " + procID);
+
+ log.debug("END loadProcess: " + procID);
+ return proc;
+ }
+
+ @Override
+ public void deleteProcess(Process proc)
+ {
+ log.debug("START deleteProcess: " + proc);
+
+ procs.remove(proc.getKey());
+
+ log.debug("END deleteProcess: " + proc);
+ }
+}
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/InMemoryPersistenceServiceImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MessageBuilderServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MessageBuilderServiceImpl.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MessageBuilderServiceImpl.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -26,7 +26,7 @@
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Message;
import org.jbpm.api.model.builder.MessageBuilder;
-import org.jbpm.api.model.builder.MessageBuilderService;
+import org.jbpm.api.service.MessageBuilderService;
import org.jbpm.ri.model.builder.MessageBuilderImpl;
/**
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessBuilderServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessBuilderServiceImpl.java 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessBuilderServiceImpl.java 2008-10-08 09:18:41 UTC (rev 2502)
@@ -26,7 +26,7 @@
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.ri.model.builder.ProcessBuilderImpl;
/**
Modified: projects/spec/trunk/modules/impl/src/main/resources/jbpm-cfg-beans.xml
===================================================================
--- projects/spec/trunk/modules/impl/src/main/resources/jbpm-cfg-beans.xml 2008-10-07 15:00:18 UTC (rev 2501)
+++ projects/spec/trunk/modules/impl/src/main/resources/jbpm-cfg-beans.xml 2008-10-08 09:18:41 UTC (rev 2502)
@@ -21,6 +21,8 @@
</bean>
<!-- The PersistenceService -->
+ <bean name="jBPMPersistenceService" class="org.jbpm.ri.service.InMemoryPersistenceServiceImpl"/>
+ <!--
<bean name="jBPMPersistenceService" class="org.jbpm.ri.service.PersistenceServiceImpl">
<property name="annotatedClasses">
<set elementClass="java.lang.String">
@@ -44,9 +46,11 @@
<value>org.jbpm.ri.model.StartEventImpl</value>
<value>org.jbpm.ri.model.StructureDelegateImpl</value>
<value>org.jbpm.ri.model.TaskImpl</value>
+ <value>org.jbpm.ri.model.UserTaskImpl</value>
</set>
</property>
</bean>
+ -->
<!-- Other Services -->
<bean name="jBPMExecutionService" class="org.jbpm.ri.service.ExecutionServiceImpl" />
More information about the jbpm-commits
mailing list