001. kogito初体验-环境准备及HelloWorld运行

血红的双手。 提交于 2020-12-05 09:59:07

工作流引擎一直都没有纳入我的知识范围,所以我并没有玩过jbpm, activiti这种传统的工作流引擎。无奈业务永远都做不完,所以终于要对BPM下手了。


1. 环境准备

截止到2020年10月19日,kogito最新版本是Pre-release 0.17.0,正式版1.0还在beta阶段。中文资料还太少,学习主要是从官方文档下手。还好kogito提供了很多的示例来满足一个工作流小白对这个框架的初体验。

$ git clone https://github.com/kiegroup/kogito-examples.git

准备工作可没这么简单,你还需要

  • IDE: VSCODE(官方推荐)+ kogito插件
    在这里插入图片描述
  • JDK 11,为了避免一些可能存在的麻烦,我使用了openjdk 当下最新的15版。
  • MAVEN 3.6.2 or later

2. 示例:hello-world

2.1 运行示例

example项目下第一个示例,定义了一个脚本流程,如下图所示。

我们为这个流程指定一个唯一的process-id叫作:
在这里插入图片描述

// 流程说明
1.开始-入参name
2.脚本任务-SayHello,java,System.out.println("Hello " + name);
3.脚本任务-UpdateMessage,java,kcontext.setVariable("message", "Hello " + name);
4.结束

如果前面环境都准备好,可以通过下面的命令,运行这个服务了。

$ cd /process-scripts-springboot
$ mvn spring-boot:run

2.2 流程调用

流程通过bpmn文件定义,包含了要处理的数据,工作步骤的定义。在这个示例中,这个流程通过springboot封装为一个http服务。调用的uri就是上面指定的process-id。

  1. 发出请求
    打开另一个terminal,通过curl请求,当然也可以使用postman
# http request 
$ curl --location --request POST '127.0.0.1:8080/scripts' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "GG"
}'
  1. 服务端输出
    这是脚本任务1的输出
# output from console
Hello GG
  1. http返回的响应
# http response
{
   
    "id":"2bf9ca54-4b66-4a75-8147-b823659ebad1","name":"GG","message":"Hello GG"}

2. 流程图解析

既然我是工作流引擎的小白,自然是不懂工作流建模语言了。所以bpmn文件自然是要学一下的。

在这个HelloWorld示例中,仅涉及到了三个不同的对象

  • 开始节点,标记一个流程的开始
    在这里插入图片描述
  • 脚本任务,任务类型的一种,意为通过脚本完成固定的操作。
    在这里插入图片描述
  • 结束,是一个十万年魂环
    在这里插入图片描述
  • 数据
    在这个示例中,声明了两个参数,作为入参和出参。后面可以看到更复杂的对象定义和引用。
String name
String message

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!