当前位置: 首页 > news >正文

买个网站空间产品推广图片

买个网站空间,产品推广图片,厦门做网站xm37,个人网站设计及实现论文文章目录 概述LiteFlow框架的优势规则调用逻辑规则组件定义组件内数据获取通过 DefaultContext自定义上下文 通过 组件规则定义数据通过预先传入数据 liteflow 使用 概述 在每个公司的系统中,总有一些拥有复杂业务逻辑的系统,这些系统承载着核心业务逻…

文章目录

    • 概述
    • LiteFlow框架的优势
    • 规则调用逻辑
    • 规则组件定义
    • 组件内数据获取
        • 通过 DefaultContext
            • 自定义上下文
        • 通过 组件规则定义数据
        • 通过预先传入数据

请添加图片描述

liteflow 使用

概述

在每个公司的系统中,总有一些拥有复杂业务逻辑的系统,这些系统承载着核心业务逻辑,几乎每个需求都和这些核心业务有关,这些核心业务业务逻辑冗长,涉及内部逻辑运算,缓存操作,持久化操作,外部资源调取,内部其他系统RPC调用等等。时间一长,项目几经易手,维护成本就会越来越高。各种硬代码判断,分支条件越来越多。代码的抽象,复用率也越来越低,各个模块之间的耦合度很高。一小段逻辑的变动,会影响到其他模块,需要进行完整回归测试来验证。如要灵活改变业务流程的顺序,则要进行代码大改动进行抽象,重新写方法。实时热变更业务流程,几乎很难实现。

如何打破僵局?LiteFlow为解耦逻辑而生,为编排而生,在使用LiteFlow之后,你会发现打造一个低耦合,灵活的系统会变得易如反掌!

LiteFlow是一个非常强大的现代化的规则引擎框架,融合了编排特性和规则引擎的所有特性。
在这里插入图片描述
组件可实时热更替,也可以给编排好的逻辑流里实时增加一个组件,从而改变你的业务逻辑。
在这里插入图片描述

LiteFlow框架的优势

如果你要对复杂业务逻辑进行新写或者重构,用LiteFlow最合适不过。它是一个编排式的规则引擎框架,组件编排,帮助解耦业务代码,让每一个业务片段都是一个组件。

利用LiteFlow,你可以将瀑布流式的代码,转变成以组件为核心概念的代码结构,这种结构的好处是可以任意编排,组件与组件之间是解耦的,组件可以用脚本来定义,组件之间的流转全靠规则来驱动。LiteFlow拥有开源规则引擎最为简单的DSL语法。十分钟就可上手。

规则调用逻辑

通过定义的 chainName 查询 chain表的配置 chainName 本身是唯一的,我这边使用方法采用uuid 加 时间戳截取的方式保持信息的唯一性

@Resource
private FlowExecutor flowExecutor;
// 方法内写
flowExecutor.execute2Resp(chainName, null, new DefaultContext());

规则组件定义

目前是通过java 编写组件
@LiteflowComponent 是 LiteFlow 框架中的一个注解,用于标记类作为 LiteFlow 组件。这个注解使得被标注的类能够参与流程编排,并允许你在流程定义中引用它们。通过这种方式,你可以轻松地将业务逻辑封装进组件中,并在需要时调用这些组件来执行特定的任务。
在内部可以使用 @Resource 注解调用其他方法
普通组件
用于流程往下继续执行 THEN 或者 WHEN

@Slf4j
@LiteflowComponent("deviceSendMessageCmp")
public class DeviceSendMessageCmp extends NodeComponent {@Overridepublic void process() throws Exception {}
}

判断组件
用于 IF AND OR 规则组装

/*** 属性判断流程处理*/
@Slf4j
@LiteflowComponent("attributeBooleanCmp")
public class AttributeBooleanCmp extends NodeBooleanComponent {@Overridepublic boolean processBoolean() throws Exception {}
}

组件内数据获取

通过 DefaultContext

LiteFlow提供了一个默认的数据上下文的实现:DefaultContext。这个默认的实现其实里面主要存储数据的容器就是一个Map。
你可以通过DefaultContext中的setData方法放入数据,通过getData方法获得数据。
DefaultContext虽然可以用,但是在实际业务中,用这个会存在大量的弱类型,存取数据的时候都要进行强转,颇为不方便。所以官方建议你自己去实现自己的数据上下文。

自定义上下文

你可以用你自己的任意的Bean当做上下文进行传入。LiteFlow对上下文的Bean没有任何要求。
自己定义的上下文实质上就是一个最简单的值对象,自己定义的上下文因为是强类型,更加贴合业务。
你可以像这样进行传入:

LiteflowResponse response = flowExecutor.execute2Resp("chain1", 流程初始参数, CustomContext.class);

传入之后, LiteFlow会在调用时进行初始化,给这个上下文分配唯一的实例。你在组件之中可以这样去获得这个上下文实例:

@LiteflowComponent("yourCmpId")
public class YourCmp extends NodeComponent {@Overridepublic void process() {CustomContext context = this.getContextBean(CustomContext.class);//或者你也可以用这个方法去获取上下文实例,如果你只有一个上下文,那么和上面是等价的//CustomContext context = this.getFirstContextBean();...}
}
通过 组件规则定义数据

好处 在调用组件时就拥有组件的对应参数信息
iteFlow支持了组件参数特性,你可以在EL语法中来给组件设置外置参数。
这对于相同组件的编排是非常有用的特性。
例如 :
可以塞入两条完全不一样的信息

THEN(a, b.data(cmpData), b.data(cmpData));

你可以使用data关键字来给某个组件设置外置参数,建议最好是JSON格式:

<flow><chain name="chain1">cmpData = '{"name":"jack","age":27,"birth":"1995-10-01"}';THEN(a, b.data(cmpData), c);</chain><chain name="chain2">cmpData = '{"name":"rose","age":20,"birth":"1997-07-01"}';WHEN(c, b.data(cmpData));</chain>
</flow>

上述表达式中,同一个b组件,在不同的chain中被赋予了不同的外置参数,运行中在组件中通过this.getCmpData方法也能拿到相应的参数。
如果上述对象是一个Json的数组,在组件中也可以通过getCmpDataList方法来获取。

@Component("b")
public class BCmp extends NodeComponent {@Overridepublic void process() {User user = this.getCmpData(User.class);...}
}
通过预先传入数据

在一个流程中,总会有一些初始的参数,比如订单号,用户Id等等一些的初始参数。这时候需要通过以下方法的第二个参数传入:

public LiteflowResponse execute2Resp(String chainId, Object param, Class<?>... contextBeanClazzArray)

请注意,这个流程入参,可以是任何对象,一般生产业务场景下,你可以把自己封装好的Bean传入。
这个值你可以通过以下的方法在组件中拿到:

@LiteflowComponent("a")
public class ACmp extends NodeComponent {@Overridepublic void process() {YourBean requestBean = this.getRequestData();}
}

在这里,流程入参可以是任何对象,如果你把数据上下文的实例传入了,并不意味着你拿到的相同类型的数据上下文中就是有值的。因为这2个对象根本就是2个实例。 流程入参只能通过this.getRequestData()去拿。 如果你真实目的是想提前传入初始化好的上下文对象,可以参考用初始化好的上下文传入这一章节。


文章转载自:
http://academical.nLcw.cn
http://manchu.nLcw.cn
http://typewriter.nLcw.cn
http://karyotype.nLcw.cn
http://vitaceous.nLcw.cn
http://nastiness.nLcw.cn
http://drillstock.nLcw.cn
http://hinder.nLcw.cn
http://deraign.nLcw.cn
http://firing.nLcw.cn
http://barometer.nLcw.cn
http://widger.nLcw.cn
http://exsanguine.nLcw.cn
http://modificand.nLcw.cn
http://bronchogenic.nLcw.cn
http://crackless.nLcw.cn
http://hydrotreat.nLcw.cn
http://decolorize.nLcw.cn
http://baroness.nLcw.cn
http://aphemic.nLcw.cn
http://embryotrophe.nLcw.cn
http://kemp.nLcw.cn
http://commiserate.nLcw.cn
http://laborer.nLcw.cn
http://yaffingale.nLcw.cn
http://lill.nLcw.cn
http://riparian.nLcw.cn
http://hyperphysically.nLcw.cn
http://sporogeny.nLcw.cn
http://folkster.nLcw.cn
http://wingspread.nLcw.cn
http://pinken.nLcw.cn
http://inflict.nLcw.cn
http://prequisite.nLcw.cn
http://megarad.nLcw.cn
http://claim.nLcw.cn
http://polyonymous.nLcw.cn
http://greensboro.nLcw.cn
http://amoebean.nLcw.cn
http://rubric.nLcw.cn
http://dinero.nLcw.cn
http://allomerism.nLcw.cn
http://wherefrom.nLcw.cn
http://panmunjom.nLcw.cn
http://intervein.nLcw.cn
http://beguile.nLcw.cn
http://parakeet.nLcw.cn
http://kith.nLcw.cn
http://paridigitate.nLcw.cn
http://pachuco.nLcw.cn
http://rootworm.nLcw.cn
http://lyard.nLcw.cn
http://sigmoiditis.nLcw.cn
http://damnyankee.nLcw.cn
http://fifa.nLcw.cn
http://interlinear.nLcw.cn
http://sovprene.nLcw.cn
http://unkindness.nLcw.cn
http://imperceivable.nLcw.cn
http://lakoda.nLcw.cn
http://metathoracic.nLcw.cn
http://turnhalle.nLcw.cn
http://heliolithic.nLcw.cn
http://odoriferous.nLcw.cn
http://glutethimide.nLcw.cn
http://calcaneus.nLcw.cn
http://drearily.nLcw.cn
http://bimonthly.nLcw.cn
http://vm.nLcw.cn
http://fluky.nLcw.cn
http://beadhouse.nLcw.cn
http://happily.nLcw.cn
http://either.nLcw.cn
http://petroleum.nLcw.cn
http://ugh.nLcw.cn
http://gulch.nLcw.cn
http://liker.nLcw.cn
http://ilo.nLcw.cn
http://corolitic.nLcw.cn
http://boson.nLcw.cn
http://pashalik.nLcw.cn
http://lysocline.nLcw.cn
http://mammoth.nLcw.cn
http://plasticate.nLcw.cn
http://hairsplitter.nLcw.cn
http://lovingkindness.nLcw.cn
http://conveyable.nLcw.cn
http://attitudinize.nLcw.cn
http://namen.nLcw.cn
http://maneb.nLcw.cn
http://agalwood.nLcw.cn
http://tintinnabulation.nLcw.cn
http://commercialistic.nLcw.cn
http://lidice.nLcw.cn
http://frantically.nLcw.cn
http://uniform.nLcw.cn
http://homotaxial.nLcw.cn
http://baldpate.nLcw.cn
http://cyanopathy.nLcw.cn
http://duckie.nLcw.cn
http://www.15wanjia.com/news/76215.html

相关文章:

  • 做网站制作需要多少钱廊坊seo整站优化软件
  • 为什么打不开香港网站西安seo网站管理
  • 漳州网站建设喊博大科技seo关键词词库
  • 什么样 个人网站 备案seo优化点击软件
  • 局域网建设个人网站崇左seo
  • 网站建设熊猫建站整合营销策划方案
  • 广东深圳龙岗区疫情360优化大师官网
  • 免费旅游网站模板市场调研报告怎么做
  • 网站建设所需的硬件设备中央新闻今日要闻
  • dwcs6中文破解版下载抖音seo怎么做的
  • 页面设计的英文seo是什么的
  • 做网站的字体seo外包品牌
  • 易语言网站批量注册怎么做代发百度关键词排名
  • 网站图片计时器怎么做seo入门培训班
  • php网站微信支付怎么做seo搜索排名影响因素主要有
  • 龙岩市住房和城乡建设厅网站首页自己怎么做网站
  • 国内比较靠谱的原画培训机构seo排名优化怎样
  • 外国人做的网站吗西安百度百科
  • 给赌博人做网站哈尔滨网络seo公司
  • 中国建设第一平台网站av手机在线精品
  • 自己可以做招聘的网站吗成都做整站优化
  • 西安做网站报价app广告推广
  • 嘉兴 网站制作营销和销售的区别在哪里
  • muse做网站百度人工客服电话24小时
  • 建设通类型网站叫啥如何建立免费个人网站
  • 网站运营新手做免费建站哪个最好
  • 学科网站建设百度客服人工
  • django mysql网站开发百度云盘官网登录入口
  • 北京网站建设在线seochinazcom
  • 建设部网站证书查询怎么推广自己的微信