[jboss-user] [jBPM] - Re: How to continue process in a web application
Jo Blithe
do-not-reply at jboss.com
Mon Jul 25 11:47:40 EDT 2011
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&containerType=14&container=2034]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20110725/80077e05/attachment-0001.html
More information about the jboss-user
mailing list