JBPM工作流(一)

好久没更新blog了,不是我忙,就是有点懒...哈哈,我写的文章水平比较菜,所以没任何人评论哭


  好了,吐槽了一番觉得心情顿时开朗了,那么,接下来就进入正题把


   JBPM,学技术首先知道这个技术是做什么用的,否则学起来你就会没头没脑了...

       这里,个人的解释不是很全面,大家可以在网上搜索一下...知道个大概意思就行了


       那么,如何使用JBPM进行开发呢?


       首先,导入相关的JBPM的JAR包文件,如果不知道导入那些个JAR包就全部导入,我刚学JBPM就是全部导入的...害羞


    JAR文件导入后,我么首先创建JBPM的相关表把,JBPM总共18张表

 

@Test
	public void createTable18(){
		org.hibernate.cfg.Configuration cf = new org.hibernate.cfg.Configuration();
		//加载jbpm.hibernate.cfg.xml
		cf.configure("jbpm.hibernate.cfg.xml");
		SessionFactory sf = cf.buildSessionFactory();
		System.out.println("sf:"+sf);
	}
这样我么就可以创建JBPM的表了...


 表创建完毕之后,我么就开始进行JBPM的开发了,JBPM在牛,它也离不开一个对象,它叫做 “流程引擎”

创建流程引擎的核心对象

/**调用流程引擎,这是JBPM操作业务的核心*/
ProcessEngine processEngine = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine();

有了它,我么才可以操作其它的...


引擎已经有了,那么JBPM还有几个Service对象,它们分别是

管理部署对象和流程定义的service       管理与执行对象和流程实例相关的service      管理与任务的service  这么几个service


首先,我么需要先部署对象,那么如何部署呢?

在部署之前我么需要创建jbpm的xml文件,可以进行设置流程,

那么,下面就开始部署流程把

/**一:部署流程定义*/
	@Test
	public void deployeProcessDefinition(){
		
		String deploy = processEngine.getRepositoryService()		//管理部署对象和流程定义的service
					 .createDeployment()			//创建部署对象
					 .addResourceFromClasspath("helloword/helloword.jpdl.xml")	//加载资源文件
					 .addResourceFromClasspath("helloword/helloword.png")		//加载资源文件
					 .deploy();						//完成部署
		
		System.out.println("部署对象ID:" + deploy);		//部署表的主键
	}

当执行这段代码的时候,那么就在你的数据库中产生了相对应的数据了


JBPM4_DEPLOYMENT

存放流程定义的部署记录。

JBPM4_DEPLOYPROP

根据流程部署对象,存放已部署的流程定义的具体属性。(key,id,版本)

JBPM4_LOB

存储流程定义相关的部署信息 (配置文件、图片)

(存放当发布一个png和xml文件后的流程定义后的记录)


部署完成之后,下面我么就需要启动一个流程实例

/**二:启动流程实例*/
	@Test
	public void startProcessInstance(){
		
		String key = "helloword";
		ProcessInstance pi = processEngine.getExecutionService()				//管理与执行对象和流程实例相关的service
					 .startProcessInstanceByKey(key);	//使用流程定义的key启动流程实例,因为它可以按照最新版本的流程定义启动
		
		System.out.println("流程实例ID:" + pi.getId());		//流程实例表的主键
		System.out.println("流程定义ID:" + pi.getProcessDefinitionId());	//helloword-1
	}


我么可以到数据库中查看表

4、JBPM4_EXECUTION

主要是存放JBPM4的执行信息,Execution机制代替了JBPM3的Token机制


执行完成之后,下面我么可以查看个人任务

/**三:查看我的个人任务*/
	@Test
	public void findMyPersonalTaskList(){
		
		//指定任务办理人
		//String userId = "张三";
		String userId = "审批【总经理】";
		
		List<Task> tasks = processEngine.getTaskService()		//管理与任务的service
					 .findPersonalTasks(userId);		//查询办理人的个人任务
		
		if(tasks != null && tasks.size() > 0){
			for(Task task : tasks){
				System.out.println("任务ID:"+task.getId());		//任务表的主键        
				System.out.println("任务名称:"+task.getName()); //流程图的Name	
				System.out.println("任务的办理人:"+task.getAssignee());	//连线名称						System.out.println("任务处在当前的活动名称:"+task.getActivityName());
				System.out.println("任务的创建时间:"+task.getCreateTime());
				System.out.println("执行对象ID:"+task.getExecutionId());		//流程实例表主键 
			}
		}
		
	}
我么可以到数据库中查看

JBPM4_TASK:任务表

存放需要人来完成的任务Activities(活动),需要人来参与完成的任务Activity 被称为Task


最后一步,完成个人任务

/**四:完成我的个人任务*/
	@Test
	public void completeMyTask(){
		
		String taskId = "30001";	//任务表主键
		processEngine.getTaskService()		//任务service
					 .completeTask(taskId);		//指定任务ID完成任务
		System.out.println("完成当前任务:任务ID是:"+taskId);
	}

这个时候,你的任务就会被完成,完成之后如果有下一个节点将会指向下一个人的任务了...


    在完成之后,我么可以去历史表查看相对应的数据

     那么到底是看哪些历史表的数据呢?

JBPM4_HIST_PROCINST

存放流程实例(Process Instance)的历史记录

JBPM4_HIST_TASK

存放任务(Task)的历史信息

JBPM4_HIST_ACTINST

存放活动(Activity Instance)的历史记录

JBPM4_HIST_DETAIL


好的,今天就到此结束把...下次在见


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值