[JBoss jBPM] - JBPM - How to configure Application Database connections par
by trupti_pandilwar
Hello,
Can somebody tell me how do I configure Application Database connection parameters (e.g. max no. of connetions, max no. of idle connections etc)in JBPM?
I have an requirement where in I'll have MySQL for JBPM Database and Oracle for application database (to implement business logic in JBPM process which need to interact with Oracle schema). I know how to use MySQL as JBPM database. But I did not get any where how do I interact with application database using JBPM (through JDBC/Hibernate/Spring).
But how JBPM does application database transaction management and connection pooling?
Does JBPM provides any provision for application database connetion pooling across JBPM process instances?
How do JBPM handles application database transaction management?
It will be very helpful if somebody help me on this.
Thanks.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4242555#4242555
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4242555
16 years, 9 months
[JBoss jBPM] - Re: JBPM4: FOREIGN KEY problem
by shekharv
as I said, I did check it with mysql, it says so in the hibernate config.
Can you try in a different database? Hsql? the stuff that jbpm comes with default?
| <?xml version="1.0" encoding="utf-8"?>
|
| <!DOCTYPE hibernate-configuration PUBLIC
| "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
| "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
|
| <hibernate-configuration>
| <session-factory>
|
| <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
| <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
| <property name="hibernate.connection.url">jdbc:hsqldb:mem:.</property>
| <property name="hibernate.connection.username">sa</property>
| <property name="hibernate.connection.password"></property>
| <property name="hibernate.hbm2ddl.auto">create-drop</property>
| <property name="hibernate.format_sql">true</property>
| <!--<property name="hibernate.show_sql">true</property>-->
|
| <mapping resource="jbpm.repository.hbm.xml" />
| <mapping resource="jbpm.execution.hbm.xml" />
| <mapping resource="jbpm.history.hbm.xml" />
| <mapping resource="jbpm.task.hbm.xml" />
| <mapping resource="jbpm.jpdl.hbm.xml" />
| <mapping resource="jbpm.identity.hbm.xml" />
|
| </session-factory>
| </hibernate-configuration>
|
|
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4242551#4242551
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4242551
16 years, 9 months
[JBoss jBPM] - Re: JBPM4: FOREIGN KEY problem
by shekharv
OK, well I could not sleep, so I did try your code out, and it worked. Within Mysql.
Your code was unchanged except for the fact that there was a method that you did not put in the earlier post. test.PID(). You did not put that method in the post you had.
Here's the jbpm.hibernate.cfg.xml i had:
| <?xml version="1.0" encoding="utf-8"?>
|
| <!DOCTYPE hibernate-configuration PUBLIC
| "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
| "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
|
| <hibernate-configuration>
| <session-factory>
|
| <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
| <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
| <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpm</property>
| <property name="hibernate.connection.username">root</property>
| <property name="hibernate.connection.password"></property>
| <property name="hibernate.format_sql">true</property>
|
| <mapping resource="jbpm.repository.hbm.xml"/>
| <mapping resource="jbpm.execution.hbm.xml"/>
| <mapping resource="jbpm.history.hbm.xml"/>
| <mapping resource="jbpm.task.hbm.xml"/>
| <mapping resource="jbpm.jpdl.hbm.xml"/>
| <mapping resource="jbpm.identity.hbm.xml"/>
|
| </session-factory>
| </hibernate-configuration>
|
|
| package org.jbpm.examples.task.assignee;
|
| import org.jbpm.api.Configuration;
| import org.jbpm.api.ExecutionService;
| import org.jbpm.api.HistoryService;
| import org.jbpm.api.IdentityService;
| import org.jbpm.api.ManagementService;
| import org.jbpm.api.ProcessEngine;
| import org.jbpm.api.ProcessInstance;
| import org.jbpm.api.RepositoryService;
| import org.jbpm.api.TaskService;
| import org.jbpm.api.task.Task;
| import org.jbpm.api.cmd.CommandService;
|
| import java.util.ArrayList;
| import java.util.HashMap;
| import java.util.List;
| import java.util.Map;
| import java.util.Set;
|
| /**
| * Created by IntelliJ IDEA.
| * User: svemuri
| * Date: Jul 8, 2009
| * Time: 10:04:22 PM
| */
| public class TestUpdate {
|
| protected ProcessEngine processEngine = null;
|
| protected RepositoryService repositoryService;
| protected ExecutionService executionService;
| protected ManagementService managementService;
| protected TaskService taskService;
| protected HistoryService historyService;
| protected IdentityService identityService;
| protected CommandService commandService;
| long deploymentDbid;
| protected List registeredDeployments = new ArrayList();
| protected ProcessInstance processInstance;
|
| /**
| * @param args
| */
| public static void main(String[] args) {
| // TODO Auto-generated method stub
| TestUpdate test = new TestUpdate();
| test.init();
| test.doCreate();
|
| //test.doCheckTask("hexiaof");
| //test.doCheckTask("hexiaofeng");
|
| test.doTaskAssign();
| test.doCheckTask("hexiaof");
| //test.doCheckTask("hexiaofeng");
|
| //test.searchPID();
| test.doTaskReview();
| //test.doCheckTask("hexiaof");
| test.doCheckTask("hexiaofeng");
| test.doCompleteTask();
|
| test.del();
|
| }
|
| private void init() {
|
| processEngine = new Configuration().buildProcessEngine();
|
| repositoryService = processEngine.get(RepositoryService.class);
| executionService = processEngine.getExecutionService();
| historyService = processEngine.getHistoryService();
| managementService = processEngine.getManagementService();
| taskService = processEngine.getTaskService();
| identityService = processEngine.getIdentityService();
| commandService = processEngine.get(CommandService.class);
|
| deploymentDbid = repositoryService.createDeployment()
| .addResourceFromClasspath("org/jbpm/examples/task/assignee/process.jpdl.xml").deploy();
|
| processInstance = executionService
| .startProcessInstanceByKey("TaskDemo");
| processInstance = executionService
| .startProcessInstanceByKey("TaskDemo", "123345");
| System.out.println("processInstance.getId===========:" + processInstance.getId());
| System.out.println("deploymentDbid===========:" + deploymentDbid);
| }
|
|
| private void doCreate() {
| System.out.println("<<<=====doCreate=====");
| Map<String, Object> variables = new HashMap<String, Object>();
| variables.put("order", new Order("hexiaof"));
| variables.put("form", "formID");
| String executionId = processInstance.findActiveExecutionIn("create").getId();
| processInstance = executionService.signalExecutionById(executionId,
| "toTaskAssign", variables);
| System.out.println("TaskAssign is " + processInstance.isActive("TaskAssign"));
| }
|
| private void doCheckTask(String username) {
| System.out.println("<<<=====doCheckTask=====:" + username);
| List<Task> taskList = taskService.findPersonalTasks(username);
| System.out.println(username + "=====tasks number=====:" + taskList.size());
|
| Task task = null;
| long taskDBId = -1;
| for (int i = 0; i < taskList.size(); i++) {
| task = taskList.get(i);
| System.out.println("=====tasks getName=====:" + task.getName());
| System.out.println("=====tasks getForm=====:" + task.getForm());
| System.out.println("=====tasks getDescription=====:" + task.getDescription());
| System.out.println("=====tasks getPriority=====:" + task.getPriority());
| System.out.println("=====tasks getPriority=====:" + task.getAssignee());
| taskDBId = task.getDbid();
| System.out.println("=====tasks getDbid=====:" + taskDBId);
|
| Set variableNames = taskService.getVariableNames(taskDBId);
| Map<String, Object> variables = taskService.getVariables(taskDBId, variableNames);
| System.out.println("form value is " + variables.get("form"));
| taskService.completeTask(taskDBId);
|
| System.out.println(username + " complete the task:" + task.getName());
| }
| taskList = taskService.findPersonalTasks(username);
| System.out.println(username + "=====tasks number=====:" + taskList.size());
|
| }
|
| private void doTaskAssign() {
| System.out.println("<<<=====doTaskAssign=====");
| Map<String, Object> variables = new HashMap<String, Object>();
| variables.put("order", new Order("hexiaofeng"));
| variables.put("formID", "formID123123");
| String executionId = processInstance.findActiveExecutionIn("TaskAssign").getId();
| processInstance = executionService.signalExecutionById(executionId,
| "toTaskReview", variables);
| System.out.println("TaskReview is " + processInstance.isActive("TaskReview"));
| }
|
| private void doTaskReview() {
| System.out.println("<<<=====doTaskReview=====");
| ProcessInstance pi = processEngine.getExecutionService().findProcessInstanceById(this.processInstance.getId());
| String executionId = pi.findActiveExecutionIn("TaskReview").getId();
| processInstance = executionService.signalExecutionById(executionId,
| "tocompleteTask");
| System.out.println("End is " + processInstance.isActive("completeTask"));
| }
|
| private void doCompleteTask() {
| System.out.println("<<<=====docompleteTask=====");
| String executionId = processInstance.findActiveExecutionIn("completeTask").getId();
| processInstance = executionService.signalExecutionById(executionId,
| "toEnd");
| System.out.println("End is " + processInstance.isActive("End"));
| }
|
| private void del() {
| System.out.println("<<<=====del=====");
| ProcessInstance pi = processEngine.getExecutionService().findProcessInstanceById(this.processInstance.getId());
| String executionId = pi.findActiveExecutionIn("end").getId();
| processInstance = executionService.signalExecutionById(executionId);
| //
| executionService.endProcessInstance(this.processInstance.getId(), "end");
| //repositoryService.deleteDeployment(this.deploymentDbid);
| }
| }
|
The above example fails at the line that tries to load a ProcessInstance that does not even exist in the db, coz it's ended and has been deleted.
| processInstance.getId===========:TaskDemo.asdd
| deploymentDbid===========:6
| <<<=====doCreate=====
| 01:56:25,173 FIN | [Signal] signalling activity(create), signalName=toTaskAssign
| 01:56:25,173 FIN | [ScopeInstanceImpl] create variable 'form' in 'process-instance' with value 'formID'
| 01:56:25,174 FIN | [ScopeInstanceImpl] create variable 'order' in 'process-instance' with value 'org.jbpm.examples.task.assignee.Order@74b1a7a0'
| 01:56:25,267 FIN | [ExecuteActivity] executing activity(TaskAssign)
| TaskAssign is true
| <<<=====doTaskAssign=====
| 01:56:25,329 FIN | [Signal] signalling activity(TaskAssign), signalName=toTaskReview
| 01:56:25,332 FIN | [ScopeInstanceImpl] updating variable 'order' in 'process-instance' to value 'org.jbpm.examples.task.assignee.Order@38a88c32'
| 01:56:25,337 FIN | [ScopeInstanceImpl] create variable 'formID' in 'process-instance' with value 'formID123123'
| 01:56:25,345 FIN | [ExecuteActivity] executing activity(TaskReview)
| TaskReview is true
| <<<=====doCheckTask=====:hexiaof
| 01:56:25,355 FIN | [TaskQueryImpl] select distinct task from org.jbpm.pvm.internal.task.TaskImpl as task where task.state != 'suspended' and task.assignee = :assignee order by task.priority desc
| 01:56:25,362 FIN | [TaskQueryImpl] setting parameter assignee: hexiaof
| hexiaof=====tasks number=====:1
| =====tasks getName=====:TaskAssign
| =====tasks getForm=====:null
| =====tasks getDescription=====:null
| =====tasks getPriority=====:0
| =====tasks getPriority=====:hexiaof
| =====tasks getDbid=====:3
| form value is formID
| hexiaof complete the task:TaskAssign
| 01:56:25,417 FIN | [TaskQueryImpl] select distinct task from org.jbpm.pvm.internal.task.TaskImpl as task where task.state != 'suspended' and task.assignee = :assignee order by task.priority desc
| 01:56:25,417 FIN | [TaskQueryImpl] setting parameter assignee: hexiaof
| hexiaof=====tasks number=====:0
| <<<=====doTaskReview=====
| 01:56:25,427 FIN | [Signal] signalling activity(TaskReview), signalName=tocompleteTask
| 01:56:25,429 FIN | [ExecuteActivity] executing activity(completeTask)
| End is true
| <<<=====doCheckTask=====:hexiaofeng
| 01:56:25,433 FIN | [TaskQueryImpl] select distinct task from org.jbpm.pvm.internal.task.TaskImpl as task where task.state != 'suspended' and task.assignee = :assignee order by task.priority desc
| 01:56:25,433 FIN | [TaskQueryImpl] setting parameter assignee: hexiaofeng
| hexiaofeng=====tasks number=====:1
| =====tasks getName=====:TaskReview
| =====tasks getForm=====:null
| =====tasks getDescription=====:null
| =====tasks getPriority=====:0
| =====tasks getPriority=====:hexiaofeng
| =====tasks getDbid=====:4
| form value is formID
| hexiaofeng complete the task:TaskReview
| 01:56:25,465 FIN | [TaskQueryImpl] select distinct task from org.jbpm.pvm.internal.task.TaskImpl as task where task.state != 'suspended' and task.assignee = :assignee order by task.priority desc
| 01:56:25,465 FIN | [TaskQueryImpl] setting parameter assignee: hexiaofeng
| hexiaofeng=====tasks number=====:0
| <<<=====docompleteTask=====
| 01:56:25,471 FIN | [Signal] signalling activity(completeTask), signalName=toEnd
| 01:56:25,473 FIN | [ExecuteActivity] executing activity(End)
| 01:56:25,473 FIN | [Execution] process-instance ends with state ended
| 01:56:25,489 FIN | [DbSessionImpl] deleting process instance TaskDemo.asdd
| End is false
| <<<=====del=====
| Exception in thread "main" java.lang.NullPointerException
| at org.jbpm.examples.task.assignee.TestUpdate.del(TestUpdate.java:163)
| at org.jbpm.examples.task.assignee.TestUpdate.main(TestUpdate.java:64)
|
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4242548#4242548
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4242548
16 years, 9 months