package cn.itcast.a_helloworld;

import java.util.List;

import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.task.Task;
import org.junit.Test; public class HelloWorld_API { private static ProcessEngine processEngine;
static {
Configuration cfg = new Configuration();
cfg.setResource("jbpm.cfg.xml");
processEngine = cfg.buildProcessEngine();
} // 1,部署流程定义文档
@Test
public void testDeployProcessDefinition() throws Exception {
String id = processEngine.getRepositoryService()//
.createDeployment()//
.addResourceFromClasspath("helloworld/helloworld.jpdl.xml")//
.addResourceFromClasspath("helloworld/helloworld.png")//
.deploy();
System.out.println(id);
} // 2,启动流程实例
/**
* 根据pdkey启动流程实例,是该key下,最高版本
*/
@Test
public void testStartProcessInstance() throws Exception {
ProcessInstance instance = processEngine.getExecutionService().startProcessInstanceByKey("hellokey");
System.out.println(instance.toString());
System.out.println(instance.getId() + " " + instance.getKey() + " " + instance.getName() + " " + instance.getPriority() + " " + instance.getProcessDefinitionId() + " " + instance.getState()
+ " " + instance.getProcessInstance().toString() ) ;
} // 3,查询我的任务列表
@Test
public void testFindMyTaskList() throws Exception {
// 查询
// String userId = "员工";
String userId = "部门经理";
//String userId = "总经理";
List<Task> list = processEngine.getTaskService().findPersonalTasks(userId);
// 显示
for (Task task : list) {
System.out.println("id=" + task.getId() + ", name=" + task.getName() + ", assignee=" + task.getAssignee() + " " + task.getActivityName());
System.out.println(task.getDescription() + " " + task.getFormResourceName() + " " + task.getPriority() + " " + task.getDuedate() + " " + task.getCreateTime());
System.out.println();
}
} // 4,办理任务
@Test
public void testCompleteTask() throws Exception {
String taskId = "160002";
processEngine.getTaskService().completeTask(taskId);
}
}
<?xml version="1.0" encoding="UTF-8"?>

<process name="hellokey" key="hellokey" xmlns="http://jbpm.org/4.4/jpdl">
<start g="115,21,48,48" name="start1">
<transition g="-71,-17" name="to 提交申请" to="提交申请"/>
</start>
<end g="115,353,48,48" name="end1"/>
<task assignee="员工" g="81,101,117,52" name="提交申请">
<transition g="-78,-15" name="to 部门经理[审批]" to="部门经理[审批]"/>
</task>
<task assignee="部门经理" g="81,185,117,52" name="部门经理[审批]">
<transition g="-95,-17" name="to 总经理[审批]" to="总经理[审批]"/>
</task>
<task assignee="总经理" g="81,269,117,52" name="总经理[审批]">
<transition g="-47,-17" name="to end1" to="end1"/>
</task>
</process>

下载demo

jbpm4.4 demo1的更多相关文章

  1. jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the install tool.

    jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the ...

  2. JBPM4.4业务流程管理框架详细解读

    1. 什么是JBPM4.4业务流程管理框架? JBPM,全称是JavaBusiness Process Management(业务流程管理),它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的 ...

  3. struts2 基础demo1

    我们都知道 struts2 是基于webframework 出现的 优秀的mvc 框架, 他和struts1 完全没有联系.struts2 是一个框架, 啥叫框架呢?是一个优秀的半成品 . web的框 ...

  4. struts2&&Hibernate Demo1

    这篇文章和<struts1&&Hibernate Demo1>基本类似,我这里只是拷贝代码了. 最核心的代码:LoginAction.java package action ...

  5. Tomcat6环境JBPM4.4报错:java.lang.ClassNotFoundException: de.odysseus.el.util.SimpleResolver

    Tomcat6环境JBPM4.4报错:java.lang.ClassNotFoundException: de.odysseus.el.util.SimpleResolver 报错信息:

  6. JBPM4.4学习API

    一.流程引擎API org.jbpm.api.ProcessEngine是jbpm4所有的Service API 之源. 既所有的Service API(服务接口)都从ProcessEngine中获取 ...

  7. SSH整合JBPM4.4

    第一步:导入所需jar包: 所需的jar包(使用了hibernate annotation和struts2的convention-plugin,可能有多余的包,没做清理): 第二步:修改jbpm配置文 ...

  8. JBPM4.4+SSH 整合配置及完整实例

    整合jBPM4.4+ssh过程(spring接管struts2和hibernate,例中都整合在application.xml中,没有单独的jbpm.hibernate.cfg.xml): 1.在se ...

  9. Myeclipse10 + JBPM4.4 环境搭建图文教程

    一.软件环境 IDE:Myeclipse10.0 (jbpm4.0以上版本好像只能与Myeclipse7.5以上版本集成) JBPM:4.4 与Myeclipse集成 1.解压jbpm-4.4.zip ...

随机推荐

  1. Spring 数据源配置二:多数据源

    通过上一节  Spring 数据源配置一: 单一数据源  我们了解单一数据源的配置, 这里我们继续多个数据源的配置 如下(applicationContent.xml 内容) 一:  Spring   ...

  2. C#压缩、解压缩文件(夹)(rar、zip)

    主要是使用Rar.exe压缩解压文件(夹)(*.rar),另外还有使用SevenZipSharp.dll.zLib1.dll.7z.dll压缩解压文件(夹)(*.zip).需要注意的几点如下: 1.注 ...

  3. map(function, sequence)

    map(function, sequence) :对sequence中的item依次执行function(item),见执行结果组成一个List返回: >>> lt = range( ...

  4. POJ 1364 King

    http://poj.org/problem?id=1364 题意 :给出一个序列a1,a2,a3,a4.....ai,......at ;然后给你一个不等式使得ai+a(i+1)+a(i+2)+.. ...

  5. PHP dirname() 函数

    定义和用法 dirname() 函数返回路径中的目录部分. 语法 dirname(path) 参数 描述 path 必需.规定要检查的路径. 说明 path 参数是一个包含有指向一个文件的全路径的字符 ...

  6. Java 单链表逆序

    代码: package com.wangzhu.linkedlist; public class LinkedListDemo { /** * @param args */ public static ...

  7. php stdClass Object 问题

    Array ( [0] => stdClass Object ( [term_id] => 3 [name] => apache [slug] => apache [term_ ...

  8. 使用GDI+ DrawDriverString实现行距及字符间距控制

    主要是要将一个标题和几段文字绘制到固定大小的图片上,如果一张放不下就生成多张.在使用DrawString是发现无法控制行距 namespace TibetTest {     public class ...

  9. Medium上关于git的文章

    rebase和merge的正确使用时机 https://medium.com/@porteneuve/getting-solid-at-git-rebase-vs-merge-4fa1a48c53aa ...

  10. hadoop2.2编程:使用MapReduce编程实例(转)

    原文链接:http://www.cnblogs.com/xia520pi/archive/2012/06/04/2534533.html 从网上搜到的一篇hadoop的编程实例,对于初学者真是帮助太大 ...