`
gjs622520
  • 浏览: 41993 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

jbpm使用

阅读更多
流程定义文件
test.xml:
<?xml version="1.0" encoding="UTF-8"?>
<process-definition name="新流程">
   <start-state name="开始">
      <transition name="找王八" to="王八审批"></transition>
   </start-state>
   <task-node name="王八审批">
      <task name="审1">
      <assignment actor-id="王八"/>
      </task>
      <transition name="找赵明" to="赵明审批"></transition>    
   </task-node>
   <task-node name="赵明审批">
      <task name="审2">
      <assignment actor-id="赵明"/>
      </task>
      <transition name="找总经理" to="总经理审批"></transition>
   </task-node>
   <task-node name="总经理审批">
      <task name="审3">
      <assignment actor-id="总经理"/>
      </task>
      <transition name="批完" to="结束"></transition>
   </task-node>
   <end-state name="结束"></end-state>
</process-definition>

使用:

//创建数据库
JbpmConfiguration.getInstance().createSchema();

//读取流程定义文件,创建processdefinition对象
	ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("test.xml");
	//context对象类似于hibernate session对象的功能
	//创建jbpmContext对象
	JbpmContext context = jbpmConfiguration.createJbpmContext();
		try{
	//部署流程到数据库
			context.deployProcessDefinition(processDefinition);
		}finally{			
	//context对象需要关闭
			context.close();
		}


创建文档:
Session session = HibernateUtils.getSession();
		try{
			session.beginTransaction();			
			Document doc = new Document();
			doc.setTitle("测试gjs");
			doc.setContent("测试gjs的内容");
			doc.setCreator("gjs");
			session.save(doc);			
			session.getTransaction().commit();
		}catch(Exception e){
			session.getTransaction().rollback();
		}finally{
			HibernateUtils.closeSession(session);
		}


绑定流程与文档
		JbpmContext context = jbpmConfiguration.createJbpmContext();
		context.setSessionFactory(HibernateUtils.getSessionFactory());
		
		//从数据库中加载ProcessDefinition对象
		ProcessDefinition definition = context.getGraphSession().findLatestProcessDefinition("新流程");//流程文件根元素name值
		//从流程中创建一个流程实例
		ProcessInstance processInstance = new ProcessInstance(definition);
		
		//存储流程实例
		context.save(processInstance);
		
		//加载公文
		Document doc = (Document)context.getSession().load(Document.class, 1);
		
		//绑定流程实例到公文
		doc.setProcessIntanceId(processInstance.getId());
		
		//绑定公文到流程实例(ContextInstance相当于一个变量的容器)
		processInstance.getContextInstance().createVariable("document", doc.getId());
		
		context.close();


使流程到下一步:
		JbpmContext context = jbpmConfiguration.createJbpmContext();
		context.setSessionFactory(HibernateUtils.getSessionFactory());
		
		Document doc = (Document)context.getSession().load(Document.class, 1);
		
		ProcessInstance processInstance = context.getProcessInstance(doc.getProcessIntanceId());
		//触发流程实例走向下一步
		processInstance.getRootToken().signal();
		
		context.close();


获取当前结点:

		JbpmContext context = jbpmConfiguration.createJbpmContext();
		context.setSessionFactory(HibernateUtils.getSessionFactory());		
		Document doc = (Document)context.getSession().load(Document.class, 1);
		ProcessInstance processInstance = context.getProcessInstance(doc.getProcessIntanceId());		
		//当前节点?
		System.err.println(processInstance.getRootToken().getNode().getName());
		context.close();


查询特定对象拥有的文档:
		JbpmContext context = jbpmConfiguration.createJbpmContext();
		context.setSessionFactory(HibernateUtils.getSessionFactory());
		List tasks = context.getTaskMgmtSession().findTaskInstances("王八");
		System.err.println("王八的文档有:");
		for (Iterator iter = tasks.iterator(); iter.hasNext();) {
			TaskInstance taskInstance = (TaskInstance) iter.next();
			Integer docId = (Integer)taskInstance.getProcessInstance().getContextInstance().getVariable("document");
			System.err.println(docId);
		}
		context.close();

审批提交所有:
		JbpmContext context = jbpmConfiguration.createJbpmContext();
		context.setSessionFactory(HibernateUtils.getSessionFactory());
		List tasks = context.getTaskMgmtSession().findTaskInstances("总经理");
		System.err.println("总经理的文档有:");
		for (Iterator iter = tasks.iterator(); iter.hasNext();) {
			TaskInstance taskInstance = (TaskInstance) iter.next();
			Integer docId = (Integer)taskInstance.getProcessInstance().getContextInstance().getVariable("document");
			System.err.println(docId);
		}		
		//依次对张三的公文进行提交
		for (Iterator iter = tasks.iterator(); iter.hasNext();) {
			TaskInstance taskInstance = (TaskInstance) iter.next();			
			//张三已经审批结束,继续提交,这将触发流程继续向下流动!
			taskInstance.end();			
			Integer docId = (Integer)taskInstance.getProcessInstance().getContextInstance().getVariable("document");
			System.err.println(docId+"已被审批完成");
		}
		context.close();
	}


测试流程是否结果:
		JbpmContext context = jbpmConfiguration.createJbpmContext();
		context.setSessionFactory(HibernateUtils.getSessionFactory());		
		Document doc = (Document)context.getSession().load(Document.class, 1);		
		ProcessInstance processInstance = context.getProcessInstance(doc.getProcessIntanceId());		
		System.err.println("流程已结束? - "+processInstance.hasEnded());		
		context.close();
分享到:
评论
2 楼 guowei821120 2008-07-27  
错了   是  帅哥  不好意思
1 楼 guowei821120 2008-07-27  
支持  美女,  写的很好 

继续关注

相关推荐

    jbpm使用简单示例

    **jbpm简介** jbpm(Java Business ...总之,"jbpm使用简单示例"是一个很好的学习资源,通过它,开发者不仅可以了解jbpm的基本操作,还能掌握如何在实际项目中运用流程管理技术,提升业务系统的灵活性和可维护性。

    jbpm使用和说明文档v1.1_1.doc

    《jbpm使用和说明文档》是针对业务流程管理(BPM)系统jbpm的一份详细指南,旨在帮助用户从基础入门到熟练掌握该工具。jbpm是一个开源的工作流管理系统,它允许开发者通过图形化的方式设计、执行和管理业务流程。 ...

    jbpm使用手册(学习工作流流程的人可能喜欢)

    这个“jbpm使用手册”显然是一份宝贵的资源,对于想要深入了解和应用工作流流程的人来说非常有帮助。 首先,手册可能涵盖了jbpm的基本概念,如流程定义、任务管理和工作流实例。流程定义通常使用Business Process ...

    JBPM使用实例,sql spring

    1. **spring-modules-jbpm31.jar**:这是Spring与JBPM集成的一个模块,包含Spring对JBPM的封装和扩展,使得可以在Spring环境中方便地使用JBPM的功能。 2. **项目源代码(全,不含jar包).rar**:这可能是一个完整的...

    流程开发java插件jbpm 使用说明 个人总结

    在实践中,开发者可以使用JBPM提供的API来实现上述步骤。例如,加载流程定义到内存、文件或数据库,启动流程实例,处理任务实例,以及对流程实例进行监控和管理。通过这些步骤,开发者可以构建出符合业务需求的动态...

    jBPM 4使用手记

    **jBPM 4 使用手记** jBPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了全面的业务流程管理和工作流解决方案。在jBPM 4这个版本中,开发者可以利用其强大的功能来设计、执行和管理...

    JBPM4.4 使用之配置管理

    Hibernate是JBPM使用的ORM(对象关系映射)框架,用于处理数据库操作。`jbpm.hibernate.cfg.xml`是Hibernate的配置文件,它定义了数据源、数据库连接信息(URL、用户名、密码)、事务管理策略、缓存设置以及实体类...

    jbpm开发入门指南

    - **工作流模型**:jbpm使用JPDL(jBPM Process Definition Language)来定义工作流程。JPDL是一种基于XML的语言,用于描述任务的顺序、分支、循环等逻辑。 - **流程实例**:每个运行中的流程都称为一个实例,它...

    jbpm学习资料,jbpm教程

    jPDL(jBPM Process Definition Language)是jbpm使用的一种基于XML的语言,用于描述业务流程。它提供了一系列的元素和指令,让开发者能够清晰地定义流程的各个阶段、任务分配、决策逻辑以及流程间的交互。在jBPM-...

    jbpm学习笔记体会很深刻

    此外,jbpm使用Hibernate作为默认的ORM框架,因此熟悉Hibernate的使用也是很重要的。 jbpm的部署涉及到流程定义的打包和安装。通常,流程定义以.bpmn或.xml文件的形式存在,可以通过jbpm提供的工具或API进行部署。...

    jbpm-4.4.zip

    3. **持久化**:jbpm使用JPA(Java Persistence API)进行持久化,可以将流程实例和相关数据存储在数据库中,确保数据的可靠性和可恢复性。 4. **规则集成**:jbpm集成了Drools规则引擎,允许在流程中嵌入复杂的...

    jbpm-4.4.zip part03

    3. **持久化**:jbpm使用JPA(Java Persistence API)进行数据持久化,可以将流程实例、任务和变量等信息存储在数据库中,便于后续查询和管理。 4. **集成能力**:jbpm可与Java EE、Spring等框架无缝集成,也可以与...

    jbpm3.1中文文档

    6. **持久化与事务管理**:jbpm使用Hibernate作为持久化框架,确保流程实例和相关数据能够正确存储和恢复。同时,jbpm支持JTA事务管理,保证了流程的完整性和一致性。 7. **监控与审计**:jbpm提供流程实例的监控和...

    jbpm中文用户指南

    jbpm使用JPA(Java Persistence API)进行数据持久化,确保流程实例和相关数据在系统重启后能够恢复。这部分内容会讲解如何配置数据库连接和管理流程实例的数据。 7. **监控与报表** 为了更好地管理和优化业务...

    jbpm中文教程-详细

    1. 过程定义(Process Definition):jbpm使用 BPMN 2.0(Business Process Model and Notation)标准来定义流程,这是一种图形化的表示方式,使得非技术人员也能理解流程逻辑。 2. 任务(Task):在流程中,每个...

    JBPM范例 可以运行 简单易懂 快速掌握JBPM

    1. **流程建模**:JBPM使用BPMN 2.0(Business Process Model and Notation)标准,这是一种图形化表示业务流程的方法,允许开发者用直观的图表来设计流程。BPMN符号丰富,涵盖了各种流程控制结构,如任务、事件、...

    jbpm

    1. **流程定义**: jbpm使用Business Process Definition Language (BPMN 2.0)来定义业务流程。BPMN是一种图形化语言,用于描述业务流程的逻辑,包括任务、网关、事件等元素。 2. **工作流引擎**: jbpm的核心是工作...

    jbpm中文用户手册

    3. **持久化机制**:jbpm使用Hibernate作为默认的持久化框架,确保流程实例和相关数据在数据库中的存储和恢复。 4. **规则集成**:jbpm与Drools规则引擎紧密集成,允许在流程中嵌入决策逻辑,使流程更灵活。 5. **...

    jbpm 案例 jbpm jbpm

    jbpm使用案例,非常不错,大家都来看看吧。

Global site tag (gtag.js) - Google Analytics