003. kogito在spring cloud微服务项目上的应用

1. 引子

项目,就是新技术的实验田,在这互联网的时代,有新技术不用一下多可惜啊,所以新的项目,我就想用一用这个所谓的云原生的工作流引擎了。

2. 项目背景与目标

现在的项目是基于spring cloud搭建的微服务体系,比如这次示例需要用到的字典服务。所以今天的主要目标是:

  1. 创建一个自定义的kogito项目
  2. 添加spring cloud依赖
  3. 添加服务发现,通过consul找到已经注册在上面的字典服务
  4. 使用feign进行RPC调用
3. 流程建模工具

JBoss出了一个桌面的流程建模工具,Business Modeler Hub Desktop-下载地址

  • 支持Win/Linux/MacOS
  • 有VSCode的建查插件
  • 有独立的建模工具
    在这里插入图片描述
4. 过程

在本文起稿的前几天,kogito已经发布了1.0.0.Final版

4.1 创建项目

jboss有提供基于maven的项目模板,其实就是帮助指定的kogito的版本号,以及在pom.xml中配置好kogito的插件。

$ mvn archetype:generate \
    -DarchetypeGroupId=org.kie.kogito \
    -DarchetypeArtifactId=kogito-springboot-archetype \
    -DgroupId=com.taotechip.floweng -DartifactId=floweng \
    -DarchetypeVersion=1.0.0.Final \
    -Dversion=0.1.0-SNAPSHOT
# ignored log output
Confirm properties configuration:
groupId: com.taotechip.floweng
artifactId: floweng
version: 0.1.0-SNAPSHOT
package: com.taotechip.floweng
 Y: : # 看到这个Y: :记得点一下回车,不然要等到天荒地老了。
4.2 依赖问题
  1. 添加服务注册与发现,基于consul
  2. 添加open feign rpc框架
  3. 解决restful标准版本依赖冲突

添加依赖

<!-- 基于consul的服务注册与发现:START -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-config</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    <version>2.2.5.RELEASE</version>
    <exclusions>
        <exclusion>
        	<!-- 排除旧版本RESTFUL标准定义的依赖 -->
            <groupId>javax.ws.rs</groupId>
            <artifactId>jsr311-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- 基于consul的服务注册与发现:END -->

<!-- spring-cloud的远程调用依赖:START -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>
<!-- spring-cloud的远程调用依赖:END -->

<!-- 新版本RESTFUL标准定义的依赖 -->
<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.1.1</version>
    <scope>compile</scope>
</dependency>
4.3. 流程定义
  • 流程ID:receiveData
  • 流程数据:还有一个我没太明白的地方,就是所有的出入参,都要在流程图的process data这里统一定义。
    • 入参,plans,接收一个List
    • 出参,code&info是返回值,表示流程是否正确运行。

在这里插入图片描述

  • 流程定义
    1. 接收数据,并保存到数据库
    2. 返回成功code/info
      在这里插入图片描述

到目前为止,我有点把流程引擎用偏了,我把流程引擎的process当成了一个restful接口,用流程来定义这个restful的处理过程。

4.4. 远程调用

这是spring cloud的部分,只是原本需要自己在代码中处理的调用流程,现在通过kogito去触发。

@Component
public class ReceivePlanTask {

    @Autowired
    private FeignJobTitleService jobTitleService;

    public Boolean process(List inputData) {
        System.out.println(inputData);
        jobTitleService.create(Dict.JobType.Doctor, "masterCode", "masterName");
        return true;
    }
}
5. 总结

这次试验是学了几天kogito之后的一次尝试,特别是我现在的项目是spring cloud的微服务架构为主,我很想知道kogito是否能跟我现在的架构整合起来。技术本身是没什么问题的,主要是两个框架的兼容性是否好解决。

试验证明,除了kogito的restful标准和spring-cloud中用于服务注册与发现的consul-start的依赖有冲突,其他都融合的很顺利。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值