Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux集群 > Architecture > » 正文

jbmp装贴

来源: 未知 分享至:
JBPM入门(2010-05-24 17:58:20)转载标签: processrepositoryexecutiontasktaskserviceisactive工作流java 分类: 工作圈
jBPM是一种基于J2EE的轻量级工作流管理系统,是JBoss开源项目中的一个组成部分。

JBPM核心类及接口介绍:
ProcessEngieen:central starting point for all process engine API interactions
functions:getExecutionService(),getRepositoryService(),getTaskService()

RepositoryService:Deployments contain a set of named resources. Those resources can represent process definitions,forms,images and so on. The repository contains and manages the process definitions.

functions:deleteDeployment(java.lang.String deploymentId)

ExecutionService:manages runtime process executions.
functions:createProcessInstanceQuery(),deleteProcessInstance(java.lang.String processInstanceId),
findExecutionById(java.lang.String executionId),findProcessInstanceById(java.lang.String processInstanceId),
setVariable(java.lang.String executionId, java.lang.String name, java.lang.Object value),
setVariables(java.lang.String executionId, java.util.Map<java.lang.String,?> variables),
startProcessInstanceById(...),startProcessInstanceByKey(...),getVariableNames(java.lang.String executionId),
getVariables(java.lang.String executionId, java.util.Set<java.lang.String> variableNames)

TaskService:task management
functions:completeTask(java.lang.String taskId),deleteTask(java.lang.String taskId),
findPersonalTasks(java.lang.String userId),getVariableNames(java.lang.String taskId),
getVariables(java.lang.String taskId, java.util.Set<java.lang.String> variableNames)

Execution:The state of an execution is either active or locked.
functions:getExecution(java.lang.String name) ,isActive(java.lang.String activityName),
isEnded() ,isSuspended()

ProcessInstance:extends Execution,a process instance is one execution of a process definition. One process instance can have many concurrent executions.Executions are structured in a tree of which the ProcessInstance is the root.

ProcessDefinition:a graphical process which is deployed in the RepositoryService.
functions:getDeploymentId(),getName(),getKey()



开发中常用功能点介绍:
1.流程发布
org.jbpm.api.ProcessEngine processEngine = Configuration.getProcessEngine();
org.jbpm.api.RepositoryService repositoryService = processEngine.getRepositoryService();
ZipInputStream zis = new ZipInputStream(this.getClass().getResourceAsStream("/xx.zip"));
repositoryService.createDeployment().addResourcesFromZipInputStream(zis).deploy();
//repositoryService.createDeployment().addResourceFromClasspath("org/xx/process.xml).deploy();
2.删除已发布流程
repositoryService.deleteDeployment(processId); // processId流程定义标识
//repositoryService.deleteDeploymentCascade(deploymentId);
3.获取流程实例列表或某个实例
org.jbpm.api.ExecutionService executionService = processEngine.getExecutionService();
executionService.createProcessInstanceQuery().list();
//创建新流程,processDefinitionKey:xml中process标签的key;processInstanceKey:用户给的key,实例标识
executionService.startProcessInstanceByKey(processDefinitionKey, processInstanceKey);
//创建新流程
//processDefinitionKey:xx.xml中process标签的key ;variables:该流程实例要用到的变量;processInstanceKey(用户给定的业务key)
//executionService.startProcessInstanceByKey(processDefinitionKey, variables, processInstanceKey);
org.jbpm.api.ProcessInstance processInstance = executionService.startProcessInstanceByKey("xxx");
//对应于数据库表jbpm4_execution中的KEY_字段
//ProcessInstance processInstance =executionService.createProcessInstanceQuery().processInstanceKey(key).uniqueResult();
4.实现某个任务
Map<String, Object> map = new HashMap<String, Object>();
map.put("condtion1", 1);
map.put("condtion2", "2");
//List<Task> taskList = taskService.findPersonalTasks(name);
//获取指定用户名字的任务
String taskId = taskService.findPersonalTasks(name).get(0).getId();
taskService.setVariables(taskId, map);
//根据任务id获取指定变量值 taskService.getVariable(taskId, variableName);
//taskService.getVariable(taskId, "condtion1");
////让任务向下流转,提交任务
taskService.completeTask(taskId);
5.节点(任务)执行情况判断
task = taskService.getTask(taskId);

org.jbpm.api.Execution execution = executionService.findExecutionById(task.getExecutionId());
boolean b = execution.getProcessInstance().isActive(taskname);

//判断是否是taskname对应的节点需要处理
boolean c = execution.getProcessInstance().isActive(taskname1)
if(b){
...map
taskService.setVariables(taskId, map);
taskService.completeTask(taskId);
}else if(c){
taskService.completeTask(taskId);
}

Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
相关文章列表:
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史