jBPM4.4开发(九)-----------HQL,SQL节点
2012-07-07 18:25
302 查看
HQL节点
1.定义
hql活动能够支持使用hql直接从数据库中查询数据,并将结果返回到流程变量中。2.hql活动属性
var 存储hql执行结果的流程变量名称。unique 此属性为true时,返回结果为一行,结果将作为一个单独的对象存储;此属性为false时,返回结果为多行,结果将作为一个Set存储。
3.hql活动的子元素
query 用来设置hql查询语句。parameters 用来设置hql的外部参数。
4.Demo
流程定义文件:process.jpdl.xml<?xml version="1.0" encoding="UTF-8"?> <process name="Hql" xmlns="http://jbpm.org/4.4/jpdl"> <start g="17,20,48,48"> <transition to="get task names" /> </start> <hql name="get task names" var="tasknames with i" g="96,16,115,52"> <query> select task.name from org.jbpm.pvm.internal.task.TaskImpl as task where task.name like :taskName </query> <parameters> <string name="taskName" value="%i%" /> </parameters> <transition to="count tasks" /> </hql> <hql name="count tasks" var="tasks" unique="true" g="243,16,95,52"> <query> select count(*) from org.jbpm.pvm.internal.task.TaskImpl </query> <transition to="wait" /> </hql> <state name="wait" g="370,18,96,48"/> </process>
测试类:HqlTest.java
package com.itstudio.jbpm.hql.demo; import java.util.Collection; import java.util.HashSet; import java.util.Set; import org.jbpm.api.Configuration; import org.jbpm.api.ExecutionService; import org.jbpm.api.ProcessEngine; import org.jbpm.api.ProcessInstance; import org.jbpm.api.RepositoryService; import org.jbpm.api.TaskService; import org.jbpm.api.task.Task; public class HqlTest { public final Configuration configuration = new Configuration(); public final ProcessEngine processEngine=configuration.buildProcessEngine(); public final RepositoryService repositoryService= processEngine.getRepositoryService(); public final ExecutionService executionService=processEngine.getExecutionService(); public final TaskService taskService=processEngine.getTaskService(); String taskLaundryId; String taskDishesId; String taskIronId; private void deploy() { repositoryService.createDeployment().addResourceFromClasspath( "com/itstudio/jbpm/hql/demo/process.jpdl.xml").deploy(); System.out.println("Successful!"); // add task laundry Task task = taskService.newTask(); task.setName("laundry"); taskLaundryId = taskService.saveTask(task); // add task dishes task = taskService.newTask(); task.setName("dishes"); taskDishesId = taskService.saveTask(task); // add task iron task = taskService.newTask(); task.setName("iron"); taskIronId = taskService.saveTask(task); } private void test() { ProcessInstance processInstance = executionService .startProcessInstanceByKey("Hql"); String processInstanceId = processInstance.getId(); Set<String> expectedTaskNames = new HashSet<String>(); expectedTaskNames.add("dishes"); expectedTaskNames.add("iron"); Collection<String> taskNames = (Collection<String>) executionService .getVariable(processInstanceId, "tasknames with i"); taskNames = new HashSet<String>(taskNames); System.out.println("expectedTaskNames:"+expectedTaskNames); System.out.println("taskNames"+taskNames); Object activities = executionService.getVariable(processInstanceId, "tasks"); System.out.println("activities"+activities.toString()); } public static void main(String[] args) { HqlTest t = new HqlTest(); t.deploy(); t.test(); } }
5.sql与hql类似
请参照开发文档By Mr.Z
相关文章推荐
- jBPM4.4开发(六)-----------fork节点
- 【代码篇】JBPM4.4开发流程节点(动态代理实现流程管理业务)
- JBPM4.4开发(二)-------------决策节点decision
- jBPM4.4开发(五)-----------custom节点
- jBPM4.4开发(一)------------start,end,state活动节点
- jBPM4.4开发(四)-----------sub-process节点
- jBPM4.4开发(三)-----------task任务节点
- 【基础篇】工作流技术JBPM4.4开发入门(二)
- jBPM4.4之开发环境搭建
- 开源Jbpm4.4+ssh2+oracle10实现表单、流程自定义开发流程业务
- 【思想篇】工作流技术JBPM4.4开发入门(五)
- 【基础篇】工作流技术JBPM4.4开发入门(一)
- JBPM4.4应用开发
- JBPM 4.4 流程节点详解
- jbpm4.4根据流程定义获取所有的流程节点Activity
- JBPM4.4开发感受
- JBPM4.4开发感受
- jbpm4.4开发环境配置+请假实例
- jBPM4.4开发(八)-----------java活动
- JBPM4.4应用开发