赵走x博客
网站访问量:151810
首页
书籍
软件
工具
古诗词
搜索
登录
28、API变量
27、查询API
26、API异常策略
25、 流程引擎API与服务
24、事件处理器
23、映射诊断上下文
22、日志
21、配置部署缓存
20、配置在表达式与脚本中可用的bean
19、配置异步历史
18、配置历史
17、作业执行器
16、数据库与表
15、支持的数据库
14、配置JNDI数据源
13、配置数据库
12、ProcessEngineConfiguration bean
11、创建ProcessEngine
10、开始使用Flowable REST API
9、使用历史数据
8、实现JavaDelegate
7、查询与完成任务
6、另一个话题:事务
5、启动流程实例
4、部署流程定义
3、构建命令行程序
2、Flowable是什么?
1、简介
10、开始使用Flowable REST API
资源编号:551118
热度:130
10、Flowable BPMN 用户手册 (v 6.3.0):开始使用Flowable REST API
这个章节展示了与上一章节相同的例子:部署一个流程定义,启动一个流程实例,获取任务列表并完成一个任务。最好先快速浏览上一章节以了解所做的事情。 这一次,将使用Flowable REST API而不是Java API。你很快就会意识到REST API与Java API紧密关联。只要了解一个,就能很快学会另一个。 可以在REST API章节找到Flowable REST API的完整细节。 # 1. 安装REST应用 从flowable.org网站下载.zip文件后,可以在wars文件夹下找到REST应用。要运行这个WAR文件,需要一个servlet容器,例如Tomcat、Jetty等。 使用Tomcat的步骤如下: - 下载并解压缩最新的Tomcat zip文件(在Tomcat网站中选择’Core’发行版)。 - 将flowable-rest.war文件从解压的Flowable发行版的wars文件夹中复制到解压的Tomcat文件夹下的webapps文件夹下。 - 使用命令行,转到Tomcat文件夹下的bin文件夹。 - 执行'./catalina run'启动Tomcat服务器。 在服务启动过程中,会显示一些Flowable日志信息。在最后显示的一条类似'INFO [main] org.apache.catalina.startup.Catalina.start Server startup in xyz ms'的消息标志着服务器已经启动,可以接受请求。请注意默认情况下,使用H2内存数据库,这意味着数据在服务器重启后会丢失。 在下面的章节中,我们使用cURL展示各种REST调用。所有的REST调用默认都使用基本认证保护,所有的调用的用户都是 rest-admin,密码为’test'。 在启动后,通过执行下列命令验证应用运行正常: ``` curl --user rest-admin:test http://localhost:8080/flowable-rest/service/management/engine ``` 如果能获得正确的json响应,则说明REST API已经启动并在工作。 # 2. 部署流程定义 第一步是部署一个流程定义。使用REST API时,需要将一个.bpmn20.xml文件(或对于多个流程引擎,一个.zip文件)作为’multipart/formdata’上传: ``` curl --user rest-admin:test -F "file=@holiday-request.bpmn20.xml" http://localhost:8080/flowable-rest/service/repository/deployments ``` 要验证流程定义已经正确部署,可以请求流程定义的列表: ``` curl --user rest-admin:test http://localhost:8080/flowable-rest/service/repository/process-definitions ``` 这将返回当前引擎中部署的所有流程定义的列表。 # 3. 启动流程实例 使用REST API启动一个流程实例与使用Java API很像:提供key作为流程定义的标识,并使用一个map作为初始化流程变量: ``` curl --user rest-admin:test -H "Content-Type: application/json" -X POST -d '{ "processDefinitionKey":"holidayRequest", "variables": [ { "name":"employee", "value": "John Doe" }, { "name":"nrOfHolidays", "value": 7 }]}' http://localhost:8080/flowable-rest/service/runtime/process-instances ``` 将返回: ``` {"id":"43","url":"http://localhost:8080/flowable-rest/service/runtime/process-instances/43","businessKey":null,"suspended":false,"ended":false,"processDefinitionId":"holidayRequest:1:42","processDefinitionUrl":"http://localhost:8080/flowable-rest/service/repository/process-definitions/holidayRequest:1:42","activityId":null,"variables":[],"tenantId":"","completed":false} ``` # 4. 任务列表与完成任务 当流程实例启动后,第一个任务会指派给’managers’组。要获取这个组的所有任务,可以通过REST API进行任务查询: ``` curl --user rest-admin:test -H "Content-Type: application/json" -X POST -d '{ "candidateGroup" : "managers" }' http://localhost:8080/flowable-rest/service/query/tasks ``` 这将返回’manager’组的所有任务的列表。 可以这样完成任务: ``` curl --user rest-admin:test -H "Content-Type: application/json" -X POST -d '{ "action" : "complete", "variables" : [ { "name" : "approved", "value" : true} ] }' http://localhost:8080/flowable-rest/service/runtime/tasks/25 ``` 然而,很可能会产生如下的错误: ``` {"message":"Internal server error","exception":"couldn't instantiate class org.flowable.CallExternalSystemDelegate"} ``` 这意味着引擎无法找到服务任务引用的CallExternalSystemDelegate类。要解决这个错误,需要将该类放在应用的classpath下(并需要重启应用)。按照上一章节的介绍创建该类,并将其打包为JAR,放在Tomcat的webapps目录下的flowable-rest目录下的WEB-INF/lib目录下。