您的位置:首页 > 产品设计 > 产品经理

jbpm教程(二)创建公文 并把公文与流程定义文件相互绑定

2012-08-26 13:57 309 查看
创建公文 并把公文与流程定义文件相互绑定

首先创建公文类文件

package com.sxito.jbpm;

public class Document {
private int id;
private String title;
private String context;
private long processInstanceId;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContext() {
return context;
}
public void setContext(String context) {
this.context = context;
}
public long getProcessInstanceId() {
return processInstanceId;
}
public void setProcessInstanceId(long processInstanceId) {
this.processInstanceId = processInstanceId;
}
}
配置Document.hbm.xml文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="com.sxito.jbpm.Document" table="_document">
<id name="id" >
<generator class="native"></generator>
</id>
<property name="title" />
<property name="context" />
<property name="processInstanceId" />
</class>

</hibernate-mapping>
在hibernate.cfg.xml文件中最后一个<property>标签后加入以下代码

<!-- mapping 要放在property后面 不能放在前面 -->
<mapping resource="com/sxito/jbpm/Document.hbm.xml"/>


然后创建公文

package com.sxito.jbpm;

import java.util.Random;

import junit.framework.TestCase;

import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;

public class Jbpm_03_CreateDocument extends TestCase {
//获取jbpm配置
static JbpmConfiguration jbpmConfiguration =  JbpmConfiguration.getInstance();
/**
* 创建公文
* 通过jbpmConfiguration得到JbpmComtext
* 创建新公文 并保存
* 通过流程定义名称取到流程定义对象
* 根据流程定义对象创建新的流程实例  保存流程实例
* 把流程实例编号绑定在公文上
* 把公文Id绑定到流程实例中去
* 把日期放到流程实例里去
*/
public void testCreateDocument(){

//创建jbpm上下文对象
JbpmContext context = jbpmConfiguration.createJbpmContext();

try{
//创建公文对象
Document doc = new Document();
doc.setTitle("测试公文"+new Random().nextInt(999));
//保存公文
context.getSession().save(doc);
//创建流程实例对象
//1.首先从数据库中根据流程定义对象名称 加载ProcessDeinition对象
ProcessDefinition def = context.getGraphSession().findLatestProcessDefinition("test05");
//2.根据流程定义对象创建新的流程实例
ProcessInstance  instance = new ProcessInstance(def);
//保存流程实例
context.save(instance);
//互相绑定
//把流程实例编号绑定到公文上
doc.setProcessInstanceId(instance.getId());
//把文档编号绑定到流程实例上
instance.getContextInstance().setVariable("documentId",doc.getId());
//将days变量放到流程实例里面
instance.getContextInstance().setVariable("days", 2);
System.err.println("新创建的公文Id为【"+doc.getId()+"】公文名称为【"+doc.getTitle()+"】");
}catch(Exception e){
e.printStackTrace();
//			如果部署不成功则回滚
context.setRollbackOnly();
//			System.err.println("exception!!!");
}finally{
context.close();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: