- 浏览: 457374 次
- 性别:
- 来自: 上海
最新评论
-
tomcatmeng:
请问候选用户是怎样task自己的任务,看网上说先根据任务id先 ...
jBPM4.4:ForEach的使用--动态设置参与人数 -
maoweiwer:
友情提醒:如果是在MYSQL下创建数据库,则还需要更改\jbp ...
jBPM4.4: 创建数据库表 -
zybing:
ganjiang 写道有点疑惑,请lz指点,1.那个“depl ...
jBPM4.4:如何图示化显示当前的流程执行到了哪一步骤 -
zybing:
ganjiang 写道有点疑惑,请lz指点,1.那个“depl ...
jBPM4.4:如何图示化显示当前的流程执行到了哪一步骤 -
ganjiang:
有点疑惑,请lz指点,1.那个“deployId”不知是那个i ...
jBPM4.4:如何图示化显示当前的流程执行到了哪一步骤
文章列表
jBPM4.4:
源头是Configuration,从Configuration生成引擎:ProcessEngine;
ProcessEngine可以得到以下几个Service:
RepositoryService
ExecutionService
TaskService
HistoryService
ManagementService
这几个Service都是对外提供的服务,通过CommandService ...
重新深入了解jBPM4.4的数据库表、以及之间的关系:
jBPM4.4的数据库表分成以下几类:
和系统相关:
这个只有JBPM4_PROPERTY
和ProcessDefinition相关的表:
有:JBPM4_DEPLOYMENT/JBPM4_DEPLOYPROP/JBPM4_LOB
和开启一个instance相关:
有JBPM4_EXECUTION/JBPM4_TASK/JBPM4_JOB/JBPM4_VARIABLE/JBPM4_SWIMLANE/JBPM_PARTICIPATION
和历史相关的表:
JBPM4_HIS_ACTINST/DETAIL/PROCIN ...
工作场景: 有一项任务需要完成,不同的部门领导根据实际情况,有的交给一个人完成,有的会交给2、3甚至更多的人完成,这个时候,流程就是由程序进行设置了,而无法在画流程图的时候写死了。
找到了一些资料:
如:
http://yy629.iteye.com/blog/660701
--- 比较全面
http://phoenix-clt.iteye.com/blog/428242
做了一下,可以通过设置subtask来创建会签流程,有问题正在解决:
1. 如果会签中的一员已经signal了,而其他人还没有完成,怎么把这个subtask complete掉,否则只要其他人没 ...
ProcessDefinition
:
这个最好理解,就是流程的定义,也就相当于规范。
ProcessDefinition也有id,这个id是 {key}-{version}
在部署过程中,会把一个id分配给流程定义。 这个id的格式为{key}-{version}, key和version之间使用连字符连接。
如果没有提供key, 会在名字的基础自动生成。 生成的key会把所有不是字母和数字的字符替换成下划线。
ProcessInstance
:
这个也比较好理解,就是流程的一个实例。
在系统中,也有一个Pro ...
在jBPM中,分配任务可以有几种方式:
按照分配对象,可以分为:
分配给某个/些用户
或者分配给某个/些用户组。
从分配的方式看,可以有以下几种:
在流程设计的时候,就直接指定用户/用户组:
在流程设计的时候,可以通过assignee方式,直接分配给用户
明确的分配给某用户/用户组:
<task name="task1" assignee="username" > 这样直接把工作分配给该用户,这里只能是用户
从环境变量来
<task name="task1" assignee=& ...
通过repositoryService, 获取一个ProcessDefinitionQuery,
通过ProcessDefinitionQuery.list,可以获取到现有的全部流程。
注意: 一个流程有几个版本,就会查出来几条记录。
这个查询 结合了JBPM4_DEPLOYMENT表和JBPM4_DEPLOYPROP表(打开Hibernate的show_sql可以看到查询语句),
通过 pdid、pdkey、pdversion进行联合查询。
如果只列出最新的版本,需要自己通过ProcessDefinition的key来判断是否同一个流程,然后通过vers ...
发布了流程后,创建一个实例,进行执行。
ProcessEngine processEngine = new Configuration()
.buildProcessEngine();
ExecutionService executionService = processEngine.getExecutionService();
ProcessInstance processInstance = executionService.startProcessInstanceByKey("testfile1");
执行完成后,在数据库中多了 ...
开始自己着手尝试:先发布自己第一个流程:
用Eclipse画流程图,除了开始和结束节点外,只有一个Task节点:
<process name="testfile"
xmlns="http://jbpm.org/4.4/jpdl"
key="testfile1"
version="1"
description="第一个测试程序">
....
...
Tomcat5.5中,缺省是不能使用link目录的。
可以通过修改配置,使得Tomcat支持Link的目录结构
修改方式:
在server.xml中的Context节点做如下调整:
<Context allowLinking
="true" ....原有的参数>
<Resources className="org.apache.naming.resources.FileDirContext" allowLinking="true" />
</Context&g ...
jDPL是jBPM的突出的流程语言。jPDL的目标
是尽量精简和尽可能的开发者友好
<?xml version="1.0" encoding="UTF-8"?>
<process name="Purchase order" xmlns="http://jbpm.org/4.4/jpdl">
<start>
<transi ...
从jBPM 4.0开始,一个新的API被介绍使用查询系统,
可以覆盖大多数你可以想到的查询。
开发者需要编写企业特定查询时
当然也可以使用Hibenrate。但是对大多数用例来说,
查询API是不足够的。
查询可以写成同ideas方式(?
),用于主要的jBPM概念:
流程实例,任务,发布,历史流程,等等。
List<ProcessInstance> results = executionService.createProcessInstanceQuery()
...
在流程实例执行的过程中,会不断触发事件。
从那些事件中,运行和完成流程的历史信息会被收集到历史表中。
HistoryService
提供了
对那些信息的访问功能。
如果想查找某一特定流程定义的所有流程实例,
可以像这样操作:
List<HistoryProcessInstance> historyProcessInstances = historyService
.createHistoryProcessInstanceQuery()
.processDefinitionId("ICL-1" ...
TaskService的主要目的是提供对任务列表的访问途径。
例子代码会展示出如何为id为johndoe
的用户获得任务列表
List<Task> taskList = taskService.findPersonalTasks("johndoe");
一般来说,任务会对应一个表单,然后显示在一些用户接口中。
表单需要可以读写与任务相关的数据。
// read task variables
Set<String> variableNames = taskService.getVaria ...
最新的流程实例 -- ByKey
下面是为流程定义启动一个新的流程实例的最简单也是
最常用的方法:
ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL");
上面service的方法会去查找
key为ICL的最新版本的流程定义,
然后在最新的流程定义里启动流程实例。
当key为ICL的流程部署了一个新版本,
startProcessInstanceByKey方法会自动切 ...
RepositoryService
包含了用来管理发布资源的所有方法。
Deploying a process部署流程
String deploymentid = repositoryService.createDeployment()
.addResourceFromClasspath("org/jbpm/examples/services/Order.jpdl.xml")
.deploy();
通过上面的addResourceFromClass
方法,
流程定义XML的内容可以从文件,
网址,字 ...