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

jbpm开发步骤

阅读更多

1 新建一个工程项目

    加入jbpm的包

    加入Hibernate的包和支持

    加入 sturts的包和支持

2 添加一个流程

3 修改hibernate.cfg.xml的内容。

    在中加入jbpm的那写.hbm.xml支持文件。

    加入你所要求的POJO的那些.hbm.xml文件。

4 把jbpm要创建的数据表加入到数据库中(用户定义的数据表同时加入,在要传递的实体中要加入processInstanceId属性)。本内容只需创建一次即可。

  jbpmConfiguration.getInstance().createSchema();

 

5 把流程部署到数据库中。

 

JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
if(jbpmContext == null || jbpmContext.equals("")){
			jbpmContext = jbpmConfiguration.createJbpmContext();
}
ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("com/flowdemo/jbpm/expense/processdefinition.xml");;			
				//测试是否存在
System.out.println("流程定义是否加载?==="+processDefinition.toString());
			//jbpmConfiguration.getInstance().createSchema();
try {
	jbpmContext.deployProcessDefinition(processDefinition);
} catch (RuntimeException e) {
	System.out.println("流程部署错误!!!!!!!!!!!");
	e.printStackTrace();
}finally{
       jbpmContext.close();
}

    特别注意要对jbpmContext进行close()操作。否则修改内容没有进行提交

 

6 根据用户来返回自己需要处理的数据

	/**
	 * 根据用户来返回自己需要处理的任务
	 * @param user为自己建的PLOJ
	 * @return
	 */
	public static List getTasks(Users user){
		JbpmContext jbpmContext = jbpmConfiguration.getCurrentJbpmContext();
		if(jbpmContext == null || jbpmContext.equals("")){
			jbpmContext = jbpmConfiguration.createJbpmContext();
		}
		System.out.println("提供任务的人的名字"+user.getUserName());
		List tasks = new ArrayList();
		//List expenses = new ArrayList();
		List poAndTasks = new ArrayList();
		try{
			tasks = jbpmContext.getTaskMgmtSession().findTaskInstances(user.getUserName());
			System.out.println("需要处理的任务的多少"+tasks);
			TaskInstance taskInstance = null;
			Expenses expense = null;
			
			for(int i=0;i<tasks.size();i++){
				taskInstance = (TaskInstance)tasks.get(i);
//获得绑定到实例上的id号码
				Integer expenseId =(Integer)taskInstance.getProcessInstance().getContextInstance().getVariable("expense_id");
				System.out.println("expenseId的值是多少呢?"+expenseId);
				
				PoTaskWrapper poTask = new PoTaskWrapper();
				
				jbpmContext.setSessionFactory(HibernateSessionFactory.getSessionFactory());
				expense = (Expenses)jbpmContext.getSession().load(Expenses.class, expenseId);
				System.out.println("对应的报销单的编号、金额和理由"+expense.getExpenseId()+" "+expense.getMoney()+" "+expense.getReason());
				//expenses.add(expense);
				
				poTask.setExpense(expense);
				System.out.println("poTask获得的expense-->"+poTask.getExpense().getMoney());
				poTask.setTaskInstanceId(taskInstance.getId());
				poTask.setTokenId(taskInstance.getToken().getId());
				poAndTasks.add(poTask);
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			jbpmContext.close();
		}
		//return expenses;
		System.out.println("队列的长度 -->"+poAndTasks.size());
		return poAndTasks;
	}

 7 创建一个新的数据

 

   先把要传递的数据存入数据库中

 

   然后初始化一个流程。

	public static void initJbpm(){
		JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
		//JbpmContext jbpmContext = jbpmConfiguration.getCurrentJbpmContext();
		if(jbpmContext == null || jbpmContext.equals("")){
			jbpmContext = jbpmConfiguration.createJbpmContext();
		}
		//如果流程定义没有,则重新部署
		try{
			ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("com/flowdemo/jbpm/expense/processdefinition.xml");;			
				//测试是否存在
			System.out.println("流程定义是否加载?==="+processDefinition.toString());
			//jbpmConfiguration.getInstance().createSchema();
			try {
				jbpmContext.deployProcessDefinition(processDefinition);
			} catch (RuntimeException e) {
				// TODO Auto-generated catch block
				System.out.println("流程部署错误!!!!!!!!!!!");
				e.printStackTrace();
			}
			
			GraphSession graphSession = jbpmContext.getGraphSession();
			processDefinition = graphSession.findLatestProcessDefinition("expense");
		}finally{
			jbpmContext.close();
		}
		
	}

 

最后把新创建的内容绑定到流程当中

 

/**
	 * 绑定事情单到流程中
	 */
	public static void bindingExpenseToProcess(){
		JbpmContext jbpmContext = jbpmConfiguration.getCurrentJbpmContext();
		if(jbpmContext == null || jbpmContext.equals("")){
			jbpmContext = jbpmConfiguration.createJbpmContext();
		}
		try{
			jbpmContext.setSessionFactory(HibernateSessionFactory.getSessionFactory());
			ProcessDefinition processDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition("expense");
			
//获取一个流程具体实例
ProcessInstance processInstance = new ProcessInstance(processDefinition);
			//把该实例存入到上下文环境当中去
			jbpmContext.save(processInstance); 
			
			long processInstanceId = processInstance.getId();
			
			//用什么来get or load这个Expenses对象呢?
			Expenses expense = (Expenses)jbpmContext.getSession().createQuery("from Expenses where processInstanceId = "+null).list().get(0);
			//Expenses expense = (Expenses)jbpmContext.getSession().get(Expenses.class, 3);
			expense.setProcessInstanceId(new Long(processInstanceId).toString());
			
			jbpmContext.getSession().update(expense);
//在具体流程中加入参数
			processInstance.getContextInstance().setVariable("expense_id", expense.getExpenseId());
			//流程推进
			processInstance.signal();
		}finally{
			jbpmContext.close();
		}
		
	}
	

8 审核

	public static void approve(long taskInstanceId){
		JbpmContext jbpmContext = jbpmConfiguration.getCurrentJbpmContext();
		if(jbpmContext == null || jbpmContext.equals("")){
			jbpmContext = jbpmConfiguration.createJbpmContext();
		}
		try{
			//ProcessInstance processInstance = jbpmContext.getProcessInstance(new Long(processInstanceId).longValue());
			//ProcessDefinition processDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition("expense");
			//ProcessInstance processInstance = new ProcessInstance(processDefinition);
			//TaskInstance taskInstance = processInstance.getTaskMgmtInstance().createStartTaskInstance();
			TaskInstance taskInstance = jbpmContext.getTaskInstance(taskInstanceId);
			//taskInstance.end("manager_approve");
			taskInstance.end();
			//processInstance.signal();
			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			jbpmContext.close();
		}
	}

 

分享到:
评论

相关推荐

    J2EE OA 框架JBPM开发步骤

    ### J2EE OA框架JBPM开发步骤详解 JBPM(Java Business Process Management)是一个开源的工作流引擎,基于Java语言开发,适用于J2EE环境下的办公自动化(OA)系统设计与实现。JBPM提供了完整的业务流程管理功能,...

    JBPM4介绍开发步骤简介

    ### JBPM4开发步骤详解与服务接口功能解析 JBPM4是JBPM系列的一个版本,专注于提供一个轻量级的工作流引擎,适用于企业级应用的流程自动化。它以简单直观的方式设计,使得开发者能够轻松地定义、部署和执行业务流程...

    jbpm开发入门指南

    jbpm(Java Business Process Management)是一款开源的工作流程管理系统,它为业务流程的建模、部署、执行和监控提供了全面的解决方案。...了解和掌握上述知识点,将为你的jbpm开发之旅打下坚实的基础。

    jbpm开发实例详解

    【jbpm开发实例详解】 jbpm是一个开源的工作流管理系统,由JBoss组织开发,遵循LGPL许可证。它提供了丰富的功能,包括对流程的建模、执行和监控。自4.0版本开始,jbpm引入了Process Virtual Machine (PVM)的概念,...

    工作流JBPM开发计划书

    ### 工作流JBPM开发计划书 #### 一、项目背景与目标 在当前数字化转型的大背景下,企业越来越依赖于高效的工作流程管理来提升业务效率和服务质量。JBPM(JBoss流程管理)作为一款开源的工作流引擎,因其灵活性、可...

    jbpm示例 安装步骤

    总的来说,这个资源包提供了一个从零开始学习和实践jbpm的完整流程,从安装环境到编写流程,再到运行示例,覆盖了jbpm开发的基本步骤。通过跟随文档的指导,你将能够深入理解jbpm的工作原理,并能熟练地在实际项目中...

    jbpm4.2开发文档

    ### jbpm4.2开发知识点概述 #### 一、jbpm简介 - **定义与特点**:jbpm(Java Business Process Model)是一个开源的工作流引擎,用于自动化业务流程的执行。它提供了一种灵活的方式来定义复杂的业务流程,并通过...

    JBPM5.3开发指南

    入门指南提供了快速启动JBPM项目的步骤,包括环境搭建、配置等。 ##### 2.3 社区 JBPM拥有活跃的社区支持,用户可以在社区中寻求帮助、交流经验。 ##### 2.4 源码 - **License**:JBPM遵循LGPL许可协议。 - **...

    jBPM4.4开发实例

    3. **集成IDE**:常用IDE如Eclipse或IntelliJ IDEA,可以通过插件集成jBPM开发工具,便于流程设计和调试。 **三、jBPM4.4流程建模** 1. **使用BPMN编辑器**:通过图形化界面设计流程图,包括任务、网关、事件等...

    jBPM开发入门指南

    ### jBPM开发入门指南详解 #### 知识点一:jBPM概述与市场需求 jBPM,即Java Business Process Model,是一个用于构建业务流程管理(BPM)应用程序的开源框架,它允许开发者通过图形界面设计流程,并将这些流程...

    JBPM4 JBPM4用户指南 开发指南 安装配置 开发步骤 整合

    本指南将深入探讨JBPM4的核心知识点,包括用户指南、开发指南、安装配置、开发步骤以及如何进行系统整合。 首先,让我们来看看JBPM4的用户指南。用户指南是为初学者准备的,旨在帮助用户了解如何与JBPM4交互。其中...

    JBPM开发向导(jBPM Developer Guide)

    ### JBPM开发向导(jBPM Developer Guide) #### 概述 《JBPM开发向导》是一本专为Java开发者撰写的关于JBoss Business Process Management框架的指南书籍。该书由Mauricio "Salaboy" Salatino撰写,旨在帮助开发者...

    JBPM开发实战教程

    ### JBPM开发实战教程知识点详解 #### 一、JBPM简介与应用场景 ##### 1.1 JBPM概述 JBPM(JBoss Business Process Management)是一款开源的工作流引擎,基于Java技术,广泛应用于业务流程管理(BPM)领域。JBPM...

    jbpm jbpm3 jbpm4 用户和开发指南+教程+最佳实践全套

    "jbpm开发指南.pdf"可能是对jbpm4或更高版本的开发者指南,涵盖了jbpm的编程模型、API使用、集成策略等深入内容,帮助开发者构建基于jbpm的业务流程应用。这通常会包括如何使用jPDL(jbpm Process Definition ...

    jbpm开发工具1

    【jbpm开发工具详解】 jbpm,全称是Java Business Process Management,是一个开源的工作流管理系统,主要用于业务流程的建模、执行和管理。它提供了一套全面的框架,让开发者可以构建灵活、可扩展的业务流程应用。...

Global site tag (gtag.js) - Google Analytics