官方提供的userguide从大的方面阐述了jBPM的基本流程和概念,总结一下其思路:
一:发布
1.一切从Configuration开始:Configuration configuration = new Configuration();
2.然后构建 ProcessEngine:ProcessEngine processEngine = configuration().buildProcessEngine();
3.有了ProcessEngine,一切就都有了:
RepositoryService repositoryService = processEngine.getRepositoryService();
ExecutionService executionService = processEngine.getExecutionService();
TaskService taskService = processEngine.getTaskService();
HistoryService historyService = processEngine.getHistoryService();
ManagementService = processEngine.getManagementService();
4.发布了:String deploymentId = repositoryService.createDeployment()
.addResourceFromClassPath("org/jbpm/Order.jpdl.xml")
.deploy();
5.现在删除它吧:repositoryService.deleteDeployment(deploymentId);
当然,还有另一个方法:repositoryService.deleteDeploymentCascade(deploymentId);//将删除相关instance和history。
Obtain ProcessEngine from a Configuration:
ProcessEngine processEngine = new Configuration().buildProcessEngine();
those code will load this default configuration file jbpm.cfg.xml which is expected in the root of the classpath.
Get ProcessEngine from your own configuration file by Configuration:
ProcessEngine processEngine = new Configuration().setResource("myconfigurationfile.xml").bulidProcessEngine();
Now you can obtain the following services:
RepositoryService repositoryService = processEngine.getRepositoryService();
ExecutionService executionService = processEngine.getExecutionService();
TaskService taskService = processEngine.getTaskService();
HistoryService historyService = processEngine.getHistoryService();
ManagementService managementService = processEngine.getManagementService();
Deploying a process:
String deploymentId = repositoryService.createDeployment().addResourceFromClassPath("org/jbpm/my.jpdl.xml").deploy();
Deleting a deployment:
repositoryService.deleteDeployment(deploymentId);
repositoryService.deleteDeploymentCascade(deploymentId);
Starting a new process instance
Simplest and most common way:
ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL");
Specific process version:
ProcessInstanc processInstance = executionService.startProcessInstanceById("ICL-1");
With a key:
ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL","CL92837");
With variables:
Map<String,Object> variables = new HashMap<String,Object>();
variables.put("customer","John Doe");
variables.put("type","Accident");
ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL",variables);
startProcessInstanceByKey和startProcessInstanceById的区别:
前者会根据key寻找最近的deployment版本,后者是直接寻找到特定版本。
jbpm 顺序执行一个流程
ProcessInstance processInstance = excutionService.startProcessInstanceByKey("StateSequence");
Execution executionInA = processInstance.findActiveExecutionIn("a");
processInstance = executionService.signalExecutionById(executionInA.getId());
Execution executionInB = processInstance.findActiveExecutionIn("b");
processInstance = executionService.signalExecutionById(executionInB.getId());
Execution executionInC = processInstance.findActiveExecutionIn("c");
jbpm 带分支的流程
ProcessInstance processInstance = executionService.startProcessInstanceByKey("StateChoice");
String executionId = processInstance.findActiveExecutionIn("wait for response").getId();
processInstance = executionService.signalExecutionById(executionId,"accept");
assertTrue(processInstance.isActive("submit document"));
jbpm 有关decision
Map<String,Object> variables = new HashMap<String,Object>();
variables.put("content","good");
ProcessInstance processInstance = executionService.startProcessInstanceByKey("DecisionConditions",variables);
assertTrue(processInstance.isActive("submit document"));
mysql在hibernate中的配置
<?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">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.username">root</property>
<property name="connection.url">jdbc:mysql://localhost:3306/jbpmdb</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="myeclipse.connection.profile">bbs</property>
<property name="connection.password">pwd</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="show_sql">true</property>
<mapping resource="com/bbs/hibernate/User.hbm.xml"></mapping>
</session-factory>
Hibernate之hbm2ddl
<property name="hibernate.hbm2ddl.auto">
</property>
它包含4个属性:
* create : 会根据你的model类来生成表,但是每次运行都会删除上一次的表,重新生成表,哪怕2次没有任何改变
* create-drop : 根据model类生成表,但是sessionFactory一关闭,表就自动删除
* update : 最常用的属性,也根据model类生成表,即使表结构改变了,表中的行仍然存在,不会删除以前的行
* validate : 只会和数据库中的表进行比较,不会创建新表,但是会插入新值
</hibernate-configuration>
本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/jaaj100/archive/2010/01/28/5265331.aspx