开发流程:
1.分析业务,建立流程process definition(业务人员) rose ea 活动图
2.开发人员 根据活动图建立jpdl流程定义
3.开发人员 或者是管理员部署流程
4.开发人员 编写处理这个流程的代码
5.用户 发起流程实例 processlnstance
6.用户 审批流程
实例:
部署流程定义
repositroyService.createDeployment().addResourceFromClasspath("test1.jpdl.xml").deploy()
创建流程实例
executionService.startProcessInstanceByKey("test",map);
查询当前任务实例
executionService.findProcessInstanceById("test.10001");
查询角色任务
taskService.findPersonalTasks(“科长");
完成提交
taskService.completeTask("20001");
核心对象
Configuration是jbpm的配置文件管理对象即资源加载对象.负责加载jbpm的各种配置如数据库连接配置,事务配置,身份认证,jpdl等相关配置.
ProcessEngine是一个服务工厂,有点类似hibernate的sessionFactory负责创建jbpm的每个服务.
ProcessEngine通过Configuration类构建,Configuration以单例模式获取ProcessEngine对象
ProcessEngine是线程安全的,所有的线程和请求都可以使用同一个ProcessEngine对象
ProcessEngine processEngine = Configuration.getProcessEngine();
RepositoryService
流程资源服务接口。提供对流程定义的部署、查询、删除和流程图查看等操作。
ExecutionService
流程执行服务接口。提供启动流程实例、推进、删除等操作。
TaskService
人工任务服务接口。提供对任务的创建、提交、查询、保存、删除等操作。
HistoryService
流程历史服务接口。提供对任务的管理操作。提供对流程历史库中历史流程实例、历史活动实例等记录的查询。
ManagementService
流程管理接口,通常用来管理Jop(异步服务)
IdentityService
身份认证服务接口。提供对流程用户、用户组管理
JBPM流程变量
流程实例变量 ProcessInstance >task (不同流程实例,不同任务的流程变量不能互相访问)
任务变量 Task
JBPM使用EL表达式获取变量 ${name}
流程定义语言JPDL:jPDL(JBoss jBPM Process Definition Language)是构建于jBPM框架上的流程语言之一。在jPDL中提供了任务(tasks)、待处理状态 (wait states)、计时器(timers)、自动处理(automated actions)…等术语,并通过图型化的流程定义,很直观地描述业务流程
JPDL常用活动(Activity)节点:
Start(开始活动)
State(状态活动)
Decision(判断活动)
Fork – join(分支活动)
End(结束活动)
Task(人工任务活动) :Assignee
JPDL监听
事件监听
<on event="start">
<event-listener class="com.tgb.bpm.Listener.MyListener">
</event-listener>
</on>