1、在myeclipse中建立工程
2、添加jbpm所需的jar包支持,这里我用到的是前面提到的在myeclipse中建立用户库的形式
3、建立jpdl定义文件,在工程上右键---->new-----> other----->jboss jbpm--->jbpm 4 process definition,完成后如下图:
jpdl文件的代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<process name="holiday" xmlns="http://jbpm.org/4.3/jpdl">
<start name="start1" g="38,16,48,48">
<transition name="to state1" to="state1" g="-59,-17"/>
</start>
<state name="state1" g="16,96,92,52">
<transition name="to task1" to="task1" g="-53,-17"/>
</state>
<task name="task1" assignee="wang01" g="16,180,92,52">
<transition name="to end1" to="end1" g="-47,-17"/>
</task>
<end name="end1" g="38,264,48,48"/>
</process>
4、建立java类,发布流程并开启流程实例执行。
package com.tc.test;
import java.util.Iterator;
import java.util.List;
import org.jbpm.api.Configuration;
import org.jbpm.api.Execution;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.HistoryService;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.RepositoryService;
import org.jbpm.api.TaskService;
import org.jbpm.api.history.HistoryProcessInstance;
import org.jbpm.api.task.Task;
public class HolidayTest {
/**
* @param args
*/
public static void main(String[] args) {
//replayHoliday();
executeHoliday();
}
public static void replayHoliday(){
//获得流程引擎对象
ProcessEngine pe=Configuration.getProcessEngine();
//获得流程资源对象
RepositoryService rs=pe.getRepositoryService();
//向流程资源对象中添加jpdl xml并发布流程到jbpm数据库中
String id=rs.createDeployment().addResourceFromClasspath("holiday.jpdl.xml").deploy();
//在控制台下输出已部署的流程id
System.out.println("流程已经部署:"+id);
}
public static void executeHoliday(){
//获得流程引擎对象
ProcessEngine pe=Configuration.getProcessEngine();
//获得流程执行服务接口对象
ExecutionService es=pe.getExecutionService();
//根据流程名字获取流程实例对象
ProcessInstance pi=es.startProcessInstanceByKey("holiday");
//输出流程实例id
System.out.println("新建流程实例的id为:"+pi.getId());
//查找name为state1的state
Execution state1=pi.findActiveExecutionIn("state1");
System.out.println("state1:"+state1.getName());
//通过流程执行对象把该state执行
es.signalExecutionById(state1.getId());
//重新从数据库中获取指定id的流程实例对象
pi=es.findProcessInstanceById(pi.getId());
//查找name为task1的任务
Execution task=pi.findActiveExecutionIn("task1");
System.out.println("task name:"+task.getName());
//获得任务服务接口对象
TaskService ts=pe.getTaskService();
//根据用户名wang01获得该用户的所有应处理任务中的第一个任务
// 这里并不一定是当前流程实例应该处理的Task
Task toDo=ts.findPersonalTasks("wang01").get(0);
System.out.println("ExecutionId"+toDo.getExecutionId());
System.out.println("do id:"+toDo.getId());
System.out.println("to do Name:"+toDo.getName());
//处理该任务
//注:这里处理的任务并不一定是我们刚刚创立的流程实例所应处理的任务,可能是其他流程实例未处理的任务
//因为我们上面代码是:ts.findPersonalTasks("wang01").get(0)
ts.completeTask(toDo.getId());
//获得历史服务接口对象
HistoryService hs=pe.getHistoryService();
//获取所有流程历史记录信息并输出
List<HistoryProcessInstance> hiss=hs.createHistoryProcessInstanceQuery().list();
for (Iterator iterator = hiss.iterator(); iterator.hasNext();) {
HistoryProcessInstance historyProcessInstance = (HistoryProcessInstance) iterator
.next();
System.out.println(historyProcessInstance.getKey()+"====="+historyProcessInstance.getProcessDefinitionId()
+"======"+historyProcessInstance.getProcessInstanceId()+historyProcessInstance.getState());
}
}
}
相关推荐
应用程序主引导程序,完成部署、升级等任务,使得你的软件像杀毒软件一样具有自动升级功能,改进C/S程序的部署成本问题,详细使用参见博客文章
打造最好用的OA数字化解决方案,基于Activiti6.0,集流程设计、流程部署、流程执行、任务办理、流程监控于一体的开源工作流开发平台。
RuoYi-boot是有名的开源权限管理系统,集权限管理和代码快速生成于一体,将其作为基础开发平台集成flowable框架完成工作流引擎开发,打造集流程设计、流程部署、流程执行、任务办理、流程监控于一体的强大工作流平台...
Struts2执行流程 1. web.xml 部署描述符 2. FilterDispatcher 实现StrutsStatics, Filter接口 (1)Filter:一个filter是一个对象用于执行过滤任务为每个请求资源(一个servlet或静态内容),或响应一个资源,或两者.过滤...
在.NET平台下,部署 Web 解决方案是比较方便的。我们可以利用Visual Studio.NET 2003添加一个WEB安装项目,在部署的“文件系统编辑器”中添加项目的主输出...在安装程序类中执行SQL脚本并将连接字符串写入Web.config。
ICD平台IVR流程执行第三方动态库部署方案.pdf
需求:针对以上问题我们需要实现代码与脚本同步提交SVN版本管理,并且项目启动将自动检索执行需要升级的sql脚本并自动执行,以后开发发布脚本无需在群里或邮件中发送,如能按此规范执行将有利于提升工作效率。
OpenVidu负载测试警告:当前工具正在开发中,这意味着代码中可能存在错误,您可能会期望用法上的某些更改。 该存储库包含一个分布式... 要开始负载测试,您将必须首先部署工作程序并执行控制器。 本说明假定您使用的
1.部署流程定义 ,执行此操作后 activiti 会将上边代码中指定的 bpm 文件和图片文件保存在 activiti 数据库。 2.启动一个流程实例 3.任务查询 4.完成任务
建立项目 ... 双击"应用程序文件夹"在右边的空白处右击,选择添加->文件,将你的做的应用程序的可执行文件和相应的类库和组件添加进来. 此处添加工程生成的Release下文件,另外用到的图标文件等。
Oracle 10g Release 2(10gR2)中推出的新版本Instant Client Light容量更小。它的共享库容量只有32MB。...在过去,即使可以使用Instant Client部署程序,也还需要完整的客户端开发包去连接Oracle库中的代码。
对工作流程和代码进行版本控制(即,您只需一个命令即可启动并运行任何旧版本) 与队友共享工作流程 让团队中的所有人部署到Kubernetes DevSpace可帮助您的团队标准化部署和开发工作流程,而无
在Windows下使用QT开发了一个程序,部署的时候发现比较困难,使用了很多dll文件,也不知道从哪里找。VC2005,VC2008等也一样。 花了几个小时做了这么一个简单的工具,能够将在开发机器上运行时候所需要的DLL收集起来...
semaphore完整搭建方案,包括帮助文档、程序源码、可执行程序。按照帮助文档完整搭建可视化ansible部署解决方案
使用工作流程监控代理执行工作流程规则 197 使用工作流程监控代理 198 使用工作流程行为代理 203 使用 Siebel 服务器自动启动“工作流程代理”流程 204 关于工作流程规则和 Siebel 服务器任务追踪文件 204 在 Siebel...
面向对象设计java信息系统部署,软件的MVC模型 JDBC访问数据流程 (1)加载驱动程序 (2)连接数据库 (3)创建SQL执行器 (4)执行SQL语句 (5)处理查询结果 (6)断开与数据库的连接
要打包和部署Spring Boot项目,可以按照以下步骤进行: 1. 打包项目: - 在项目根目录下使用命令行或终端运行以下命令打包项目 ...通过以上步骤,你就可以打包和部署Spring Boot项目,并在目标服务器上启动应用程序。
开发push代码到gitlab,触发jenkins自动pull代码,通过maven编译、打包,然后通过执行shell脚本使docker构建镜像并push到私服(或者阿里云)仓库,此操作完成后jenkins服务器上再执行SSH命令登录到部署服务器,...