Jbpm4常用操作 Jbpm4常用操作
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
http://blog.chinaunix.net/u/21752/showart_2099471.html
2010-2-6
Jbpm4常用操作 - JBPM工作流 - 沉舟
页码,2/4
NET开发 学术
person php WEB UI 博客和好的网站 开源 系统工具和学习 股票 英语 我的音乐分类
<transition to="wait" /> </task> <state name="wait"/> </process>
assignee="johndoe" 表示任务会被分配给用户ID为"johndoe"的人。
assignee="#{order.owner}" 任务被分配给#{order.owner}。表示通过Order对的getOwner()方法会用来获得用户id,该用户负责完成这个
还可以根据以下顺序进行排序(org.jbpm.api.ProcessDefinitionQuery) public static final java.lang.String PROPERTY_DEPLOYMENT_TIMESTAMP "deployment.timestamp" public static final java.lang.String PROPERTY_ID "idProperty.stringValue" public static final java.lang.String PROPERTY_KEY "keyProperty.stringValue" public static final java.lang.String PROPERTY_NAME "idProperty.objectName" public static final java.lang.String PROPERTY_VERSION "versionProperty.longValue"
.processDefinitionId(id).uniqueResult(); //根据流程定义的布署ID号,删除该流程定义 //注意:jbpm4是wenku.baidu.com允许直接根据流程定义的ID来直接删除流程定义的,因为还要删除其它配置数据
repositoryService.deleteDeploymentCascade(pd.getDeploymentId());
Jbpm4常用操作 - JBPM工作流 - 沉舟
博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索:
页码,1/4
搜索 帮助
沉舟
平凡的生活如同清水一样,淡淡飘香
sinkingboat.cublog.cn
关于作者
不是每一个人都可以摆脱无知的命 运;不是每一个人都可以拥有无畏 的勇气;不是每一个人都可以经历 凤凰的涅磐;面对无知者的天真和 无畏,无言以对。
1.3根据变量启动流程实例 为一个新的流程实例启动时就提供一组对象参数。 将这些参数放在variables变量里, 然后可以在流程实例创建和
启动时使用。 Map<String,Object> variables = new HashMap<String,Object>(); variables.put("customer", "John Doe"); variables.put("type", "Accident"); variables.put("amount", new Float(763.74)); ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL", variables);
this.owner = owner; } }
1.获取任务列表 1.1根据用户ID获取任务列表
List<Task> taskList = taskService.findPersonalTasks("johndoe");
1.2根据任务候选人或候选组获取任务列表 任务可能被分配给一组用户。 其中的一个用户应该接受这个任务并完成它。 candidate-groups:一个使用逗号分隔的组id列表。 所有组内的用户将会成为这个任务的候选人。 candidate-users:一个使用逗号分隔的用户id列表。 所有的用户将会成为这个任务的候选人。 例如: <task name="review" candidate-groups="sales-dept"> <transition to="wait" /> </task> 假设:sales-dept有两个成员:johndoe和joesmoe
3.获取全部流程定义 根据流程名获取所有流程定义 List<ProcessDefinition> processDefinitions = repositoryService .createProcessDefinitionQuery().orderAsc( ProcessDefinitionQuery.PROPERTY_NAME).list();
ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL"); String pid = processInstance.getId(); 最好使用一个用户定义的key。提供给一个用户定义的key, 你可以组合流向的id,而不是执行一个基于流程变量 的搜索 - 那种方式太消耗资源了。
2.根据流程定义,查看流程实例 根据类ProcessDefinition的属性ID,查看该流程的所有实例 String pdId = request.getParameter("id"); return executionService.createProcessInstanceQuery() .processDefinitionId(pdId).list();
二、流程实例
1.启动一个流程实例 1.1根据key启动流程实例
用户必须为新启动的流程实例分配一个key, 这个key是用户执行的时候定义的且唯一。通常在业务流程领域找到 这种key。 比如,一个订单id或者一个保险单号。
ProcessInstance processInstance = executionService.startProcessInstanceByKey ("ICL", "CL92837");
3.执行实例 根据类ProcessInstance的属性ID,执行流程实例 String pid = request.getParameter("pid"); executionService.signalExecutionById(pid);
四.任务 假设流程定义4-1如下: <process name="TaskAssignee">
参见流程定义4-1,把order作为一个流程变量分配给它,启动新流程实例代码如下: Map<String, Object> variables = new HashMap<String, Object>(); variables.put("order", new Order("johndoe")); ProcessInstance processInstance = executionService.startProcessInstanceByKey("TaskAssignee", variables);
数据如下
ID
Key
hello-1 hello
名称 hello
版本 1
//获取类ProcessDefinition的属性ID
String id = request.getParameter("id"); //根据流程ID获取流程定义实例 ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
例:布署文件中的流程 //布署当前目录下pd.jpdl.xml文件 String deploymentId = repositoryService.createDeployment() .addResourceFromClasspath("pd.jpdl.xml").deploy();
例:布署网页上TextArea中的流程 <form action="jbpm?family168=deploy" method="post"> <textarea name="xml" cols=50 rows=15></textarea> <input type="submit" value="发布"/> <input type="reset" value="取消"/> </form> 在后台处理如下:
这个任务被创建时,不显示在任何人的个人任务列表中。 下面的任务列表会是空的。 taskService.getAssignedTasks("johndoe"); taskService.getAssignedTasks("joesmoe");
分组任务列表中,用户接口必须只接受对这些任务的“接受”操作。 taskService.takeTask(task.getDbid(), "johndoe"); 当一个用户接受了一个任务,这个任务的分配人就会变成当前用户。任务会从所有候选人的分组任务列表中消失,
<start> <transition to="review" />
</start> <task name="review" assignee="#{order.owner}">
<transition to="work" /> </task> <task name="review" assignee="johndoe">
任务。 public class Order implements Serializable {
String owner; public Order(String owner) { this.owner = owner;
} public String getOwner() {
return owner; } public void setOwner(String owner) {
key可以用来创建流程实例的id, 格式为{process-key}.{execution-id}。 所以上面的代码会创建一个id为 ICL.CL92837的流向 (execution)。
1.2根据数据库主键启动流程实例 如果没有提供用户定义的key,数据库就会把主键作为key。 这样可以使用如下方式获得id:
String xml = request.getParameter("xml"); repositoryService.createDeployment()
.addResourceFromString("process.jpdl.xml", xml).deploy();
2.删除流程定义 类ProcessDefinition 包含如下属性: ID:流程定义ID号 DeploymentId:流程定义的布署ID号 Key:关键字 name:流程名 version:版本号
我的分类
我的文章分类 技术与趋势评论 JAVA 性能优化 设计模式 数据库 JAVA语法 JBPM工作流 JSP oscache WEB服务器使用 调试与测试 flex 语义网 软件工程 PHP Ajax ERP Javascript 社区 开源软件学习 .net2.0
我的图片分类 设计模式 实体 FLEX Jbpm 学术 语义WEB php 本体
我的链接分类 形式化语言 社区 软件测试 软件工程 flex javascipt和ajax JAVA开发
首页 文章 相册 音乐 博客圈 收藏夹 留言 发表文章 管理博客
Jbpm4常用操作
一、流程定义 1.部署流程定义
ProcessEngine processEngine = new Configuration().buildProcessEngine(); RepositoryService repositoryService = processEngine.getRepositoryService();