KSTry简单使用说明

15 篇文章 0 订阅

相关文档

官网:

Kstry业务架构首选框架

流程编排生成器

Kstry流程配置台

开源项目地址:

kstry-flux-demo/kstry-flux-demo-web/src/main/resources/bpmn/student-score-query-process.bpmn · lykan/kstry-core - Gitee.com

使用场景

多模块功能编排使用

业务中,有A、B、C、D、E五个业务功能。

接入了多个业务方,每个业务方对于单独的一个功能没有特殊需求,但是流程上有不同的需求。

比如:张三,需要常规流程:A-》B-》C-》D-》E

比如:李四,不需要C流程:A-》B-》D-》E

比如:王五,需要判断:A-》B-》(如果是C: -》C,如果是D:-》D)-》E

比如:赵六,需要逆向:E-》D-》C-》B-》A

通过上面不同的例子,发现能力没有变化,变化的是业务方的需求,这在实际场景中是非常常见的。

后面可能有更多的例子。接入一个业务方,常规做法,就需要在代码前面写一个适配器,通过判断业务方标识,来路由不同的流程。

每一个业务方都需要来做代码的改动。甚至完全一样的流程,也需要改动代码,因为需要把这个业务方路由到这个流程中去。

流程编排就是简化该操作,通过流程编排,来生成一套流程配置,把A,B,C,D,E五个能力,作为独立的功能,通过流程来编排五个能力的顺序。

单模块多版本使用

业务中也有这种场景,某个能力,由于业务迭代,流程做了升级,就会出现多版本共存的情况,业务不能停,不能因为业务的升级,对原有流程不支持了,后面还有可能发生回滚的情况,所以必须要向后兼容。

那么对业务数据,打上标记,通过流程编排,就可以很便捷的实现这个功能了。

KSTry介绍

ksTry是一个开源的流程编排项目,和Spring适配度极高,文档齐全,使用简单。

核心功能

@EnableKstry

启动器上面标注,启用KsTry能力。

加上这个注解之后,spring容器启动后,就会从指定位置,把所有的流程编排配置全部读取出来,加载到容器中。

@EnableKstry(bpmnPath = "./bpmn/*.bpmn,./bpmn/*.json")

这个注解,表示从resources/bpmn目录下,读取所有结尾时bpmn、json的流程编排文件。

@TaskComponent

核心的流程模块类上面,加上这个注解。流程路由时,就会找这个注解所注入的bean。

和spring容器的Component类似,加了这个,就不需要再加spring的Component了。

流程中两个重要配置之一,一个就是类名,一个方法名,这个就是类名。

注意:配置类名时,不需要指定包名,直接首字母小写的类即可。

@TaskService

该注解声明的方法,就是一个独立的单元块。

流程中两个重要配置之一,一个就是类名,一个方法名,这个就是方法名。

@NoticeVar

该注解表示,本方法的结果,会放入过程数据中。在流程编排中,分为入口参数,过程产生数据,最终结果数据三种。

将这个注解加在方法上,那么这个方法产生的结果,就会放入提前定义好的结果上。

@TaskService(desc = "查询A基础信息")
@NoticeVar(target = QueryScoreVarScope.D.testABasic)
public TestABasic getAData(@ReqTaskParam(QueryScopeRequest.D.id) Long id) {
    logger.info("action !!! {}", id);
    return new TestABasic().setId(id).setName("A");
}

上面这个方法,就会把返回的结果TestABasic, 放入QueryScoreVarScope这个过程数据中的testABasic字段。

@NoticeResult

该注解表示最终结果,一般用于最终的结果汇总,将所有的过程数据汇总到结果上面。

在方法上面加入该注解,所产生的结果,就会放入最终结果中。

@ReqTaskParam

该注解表示入口参数,如果你想从入口传入参数中,获取某个参数来作为必要的一些数据处理,那么就可以通过该参数,声明一下。

比如:public TestABasic getAData(@ReqTaskParam(QueryScopeRequest.D.id) Long id)

这个方法的参数声明,就是标识需要从入口参数中,获取id字段,放入这里。

@VarTaskParam

该注解表示过程参数入参,如果你想从过程中产生结果作为入参,那么就可以通过该注解来声明,想要哪个数据作为参数。

比如:public QueryScoreResponse getResponse(@VarTaskParam(QueryScoreVarScope.D.testABasic) TestABasic testABasic)

这个方法的参数声明,就是标识需要从过程中产生的数据中,获取方法所需要的参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写代码的喵o

请作者吃包辣条可好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值