Kstry框架一种服务编排的实现

2022-03-24  本文已影响0人  f50d2aa3580c

Kstry能做什么?

如果您遇到了以下问题:

那么可以尝试一下Kstry框架,因为其具备:

可视化

image-20211219163429668.png

服务编排

image-20211219163540179

支持并发

image-20211213145202846

RBAC( Role-based access control )模式

详见:RBAC模式

流程回溯

流程回溯可以在链路执行完之后,拿到结果或者异常之前,打印节点执行日志或执行自定义回调方法,可以应对如下问题:

简化测试

Kstry如何使用?

下面步骤仅为简单介绍,具体细节请参考使用文档

1、配置引入

<dependency>
    <groupId>cn.kstry.framework</groupId>
    <artifactId>kstry-core</artifactId>
    <version>1.0.5</version>
</dependency>

2、项目引入

@EnableKstry(bpmnPath = "./bpmn/*.bpmn")
@SpringBootApplication
public class KstryDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(KstryDemoApplication.class, args);
    }
}

3、编写组件代码

@TaskComponent(name = "goods")
public class GoodsService {
    
    @NoticeResult
    @TaskService(name = "init-base-info")
    public GoodsDetail initBaseInfo(@ReqTaskParam(reqSelf = true) GoodsDetailRequest request) {
        return GoodsDetail.builder().id(request.getId()).name("商品").build();
    }
}

4、定义bpmn配置文件

配置文件

5、调用执行

@RestController
@RequestMapping("/goods")
public class GoodsController {

    @Resource
    private StoryEngine storyEngine;

    @PostMapping("/show")
    public GoodsDetail showGoods(@RequestBody GoodsDetailRequest request) {

        StoryRequest<GoodsDetail> req = ReqBuilder.returnType(GoodsDetail.class)
                                                  .startId("kstry-demo-goods-show").request(request).build();
        TaskResponse<GoodsDetail> fire = storyEngine.fire(req);
        if (fire.isSuccess()) {
            return fire.getResult();
        }
        return null;
    }
}

6、请求测试

测试
上一篇下一篇

猜你喜欢

热点阅读