工作流基础(JBPM)

网上jbpm教程:开发入门指南

 

 

1 流程定义

    用图形化工具来定义流程。产生xml文件。

2 部署

 

               JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();
		GraphSession graphSession = jbpmContext.getGraphSession();
		ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("edu/hust/jbpm/processdefinition.xml");
		
//部署流程定义,如果已经存在同名的定义,则版本号会自动累加
		graphSession.deployRprcessDefinition(processDefinition);

		jbpmContext.close();

 3 加载和启动流程

               JbpmContext jbpmContext = jbpmConfiguration.getInstance().createJbpmContext();
		GraphSession graphSession = jbpmContext.getGraphSession();
		//加载流程定义,根据processDefinitionId来加载
		ProcessDefinition processDefinition = graphSession.loadPrcessDefinition(processDefinitionId);
		//创建流程实例:启动流程
		ProcessInstance processInstance = new ProcessInstance(processDefinition);
		
		//此时,rootToken指向流程定义的第一个节点
		jbpmContext.save(processInstance);
		jbpmContext.close();

 4 如何获取工作列表

      获取待办列表

		JbpmContext jbpmContext = JbpmContext.getInstance().createJbpmContext();
		TaskMgmtSession taskMgmtSession = jbpmContext.getTaskMgmtSession();
		//只能获取尚未完成的任务列表(待办任务)
		List list = taskMgmtSession.findTaskInstance(userId);

		jbmpContext.close();

  5 如何执行任务

		JbpmContext jbpmContext = JbpmContext.getInstance().createJbpmContext();
		TaskMgmtSession taskMgmtSession = jbpmContext.getTaskMgmtSession();
		TaskInstance taskInstance = taskMgmtSession.loadTaskInstance(id);
		//任务开始执行
		taskInstance.start();

		//保持任务信息
		jbpmContext.save(taskInstance);

		jbmpContext.close();

 start()标准着一个任务执行的开始:任务的开始时间会被充实。

也可以带入(actionId)来主动参与任务的执行

 

6 如何任务的结束

		JbpmContext jbpmContext = JbpmContext.getInstance().createJbpmContext();
		TaskMgmtSession taskMgmtSession = jbpmContext.getTaskMgmtSession();
		TaskInstance taskInstance = taskMgmtSession.loadTaskInstance(id);
		//任务结束执行
		taskInstance.end();

		//保持任务信息
		jbpmContext.save(taskInstance);

		jbmpContext.close();

 end()标准着一个任务执行的结束:任务的结束时间会被充实。

也可以带入(actionId)来主动参与任务的执行

 

7 JBPM中主要的API

  (一)JbpmContext

    职责:对实例数据的操作,基于对事物的操作;用于获取GraphSession对象

    方法:

Connection getConnection(); 
Session getSession();
public GraphSession getGraphSession();
public TaskMgmtSession getTaskMgmtSession();
public LoggingSession getLoggingSession();
public SchedulerSession getSchedulerSession();
public void close();

   例子:

		JbpmContext jbpmContext = JbpmContext.getInstance().createJbpmContext();
		try{
			TaskInstance taskInstance = ...

				... 流程操作...
			jbpmContext.save(taskInstance);
		}catch(Throwable a){
			// process exception here
		}try{
			jbpmContext.close();
		}

 (二)GraphSession

  职责:Graph相关的数据持久化操作;主要是ProcessDefinition和ProcessInstance

  方法:

public void saveProcessDefinition(ProcessDefinition processDefinition)
public ProcessDefinition loadProcessDefinition(long processDefinitionId)
public ProcessDefinition findProcessDefinition(String name,int version)
public List findAllProcessDefinition()
public void saveProcessInstance(ProcessInstance processInstance)
public ProcessInstance loadProcessInstance(long proessInstanceId)
public List findProcessInstances(long processDefinitionId)
Delete方法

 (三)TaskMgmtSession

职责:TaskInstance相关的数据查询操作;TaskInstance数据通过ProcessInstance进行保存

方法:

public List findTaskInstances(String actorId)
public List findPooledTaskInstance(String actorId)
public List findTaskInstanceByToken(long tokenId)
public TaskInstance loadTaskInstance(long taskInstanceId)
没有save方法,save是通过对processInstance的操作实现
 

8 编程步骤总结

 

 

1 创建流程定义
2 部署路程定义
3 启动流程实例
4 获取任务列表
5 执行任务
6 结束任务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值