Jo Blithe [
http://community.jboss.org/people/johnesky] created the discussion
"Re: How to continue process in a web application"
To view the discussion, visit:
http://community.jboss.org/message/617433#617433
--------------------------------------------------------------
Thanks Demain for your reply. Here are some of my condfiguration files...
Persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="
http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence"
xmlns:orm="
http://java.sun.com/xml/ns/persistence/orm
http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd
http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm
http://java.sun.com/xml/ns/persistence/orm_1_0.xsd
http://java.sun.com/xml/ns/persistence/orm_1_0.xsd">
<persistence-unit name="org.jbpm.persistence.jpa"
transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:comp/env/jdbc/testDS1</jta-data-source>
<class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class>
<class>org.jbpm.persistence.processinstance.ProcessInstanceEventInfo</class>
<class>org.drools.persistence.info.SessionInfo</class>
<class>org.drools.persistence.info.WorkItemInfo</class>
<class>org.jbpm.process.audit.ProcessInstanceLog</class>
<class>org.jbpm.process.audit.NodeInstanceLog</class>
<class>org.jbpm.process.audit.VariableInstanceLog</class>
<properties>
<!-- CONFIGURATION TO USE H2 -->
<property name="hibernate.dialect"
value="org.hibernate.dialect.PostgreSQLDialect"/>
<!-- COMMON CONFIGURATION -->
<property name="hibernate.max_fetch_depth"
value="3"/>
<property name="hibernate.hbm2ddl.auto"
value="create-drop" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.transaction.manager_lookup_class"
value="org.hibernate.transaction.BTMTransactionManagerLookup" />
</properties>
</persistence-unit>
</persistence>
index.jsp
<%
PoolingDataSource ds1 = new PoolingDataSource();
ds1.setUniqueName("jdbc/testDS1");
ds1.setClassName("org.postgresql.xa.PGXADataSource");
ds1.setMaxPoolSize(3);
ds1.setAllowLocalTransactions(true);
ds1.getDriverProperties().put("serverName",
"localhost");
ds1.getDriverProperties().put("user",
"postgres");
ds1.getDriverProperties().put("password",
"postgres");
ds1.getDriverProperties().put("databaseName",
"jbpm5");
ds1.init();
readKnowledge redaccion = new readKnowledge();
KnowledgeBase kbase = redaccion.readKnowledgeBase();
EntityManagerFactory emf1 = Persistence
.createEntityManagerFactory("org.jbpm.persistence.jpa");
Environment env = KnowledgeBaseFactory.newEnvironment();
env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf1);
env.set(EnvironmentName.TRANSACTION_MANAGER,
TransactionManagerServices.getTransactionManager());
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("org.jbpm.task");
SystemEventListener systemEventListener =
SystemEventListenerFactory.getSystemEventListener();
TaskService taskService = new TaskService(emf,
systemEventListener);
TaskServiceSession taskSession = taskService.createSession();
taskSession.addUser(new User("Administrator"));
taskSession.addUser(new User("mina"));
MinaTaskServer server = new MinaTaskServer( taskService );
Thread thread = new Thread( server );
thread.start();
StatefulKnowledgeSession ksession =
JPAKnowledgeService.newStatefulKnowledgeSession(kbase, null,
env);
new JPAWorkingMemoryDbLogger(ksession);
KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession);
//Logger that will give information about the process state,
variables, etc
JPAProcessInstanceDbLog processLog = new
JPAProcessInstanceDbLog(ksession.getEnvironment());
ksession.getWorkItemManager().registerWorkItemHandler("Handler", new
JavaHandlerWorkItemHandler(ksession));
ksession.getWorkItemManager().registerWorkItemHandler("Human
Task", new WSHumanTaskHandler());
//KnowledgeRuntimeLogger logger =
KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");
// start a new process instance
ProcessInstance process =
ksession.createProcessInstance("com.sample.bpmn.hello",
null);
ksession.insert(process);
long processInstanceId = process.getId();
ksession.startProcessInstance(processInstanceId);
Thread.sleep(2000);
//ksession.startProcess("com.sample.bpmn.hello");
// ksession.fireAllRules();
// logger.close();
TaskClient client = new TaskClient(new
MinaTaskClientConnector("mina",
new MinaTaskClientHandler(
SystemEventListenerFactory.getSystemEventListener())));
try
{
client.connect("127.0.0.1", 9123);
BlockingTaskSummaryResponseHandler
summaryHandler = new BlockingTaskSummaryResponseHandler();
client.getTasksAssignedAsPotentialOwner("mina", "en-UK",
summaryHandler);
List <TaskSummary> tasks =
summaryHandler.getResults();
TaskSummary task = null;
for (TaskSummary taskSummary : tasks) {
System.out.println(taskSummary.getId() + "
: "
+ taskSummary.getName());
task = taskSummary;
}
if (task != null) {
BlockingTaskOperationResponseHandler
operationHandler = new BlockingTaskOperationResponseHandler();
client.release(task.getId(),
"mina", operationHandler);
client.claim(task.getId(),
"Administrator", operationHandler);
operationHandler.waitTillDone(10000);
operationHandler = new
BlockingTaskOperationResponseHandler();
client.start(task.getId(),
"Administrator", operationHandler);
operationHandler.waitTillDone(10000);
operationHandler = new
BlockingTaskOperationResponseHandler();
client.complete(task.getId(),
"Administrator", null, operationHandler);
operationHandler.waitTillDone(10000);
}
Thread.sleep(1000);
BlockingTaskSummaryResponseHandler
summaryHandler2 = new BlockingTaskSummaryResponseHandler();
client.getTasksAssignedAsPotentialOwner("mina", "en-UK",
summaryHandler2);
List <TaskSummary> tasks2 =
summaryHandler2.getResults();
TaskSummary task2 = null;
for (TaskSummary taskSummary : tasks2) {
System.out.println(taskSummary.getId() + "
: "
+ taskSummary.getName());
task2 = taskSummary;
}
if (task2 != null) {
BlockingTaskOperationResponseHandler
operationHandler2 = new BlockingTaskOperationResponseHandler();
client.release(task2.getId(),
"mina", operationHandler2);
client.claim(task2.getId(),
"Administrator", operationHandler2);
operationHandler2.waitTillDone(10000);
operationHandler2 = new
BlockingTaskOperationResponseHandler();
client.start(task2.getId(),
"Administrator", operationHandler2);
operationHandler2.waitTillDone(10000);
operationHandler2 = new
BlockingTaskOperationResponseHandler();
client.complete(task2.getId(),
"Administrator", null, operationHandler2);
operationHandler2.waitTillDone(10000);
}
//now check in the logs the process finished.
UserTransaction ut =
(UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" );
ut.begin();
ProcessInstanceLog processInstanceLog =
processLog.findProcessInstance(processInstanceId);
processInstanceLog.getEnd();
ut.commit();
Thread.sleep(1000);
client.disconnect();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
client.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
System.exit(0);
}
%>
--------------------------------------------------------------
Reply to this message by going to Community
[
http://community.jboss.org/message/617433#617433]
Start a new discussion in jBPM at Community
[
http://community.jboss.org/choose-container!input.jspa?contentType=1&...]