天天看点

自研规则/流程编排框架-ice接入ice使用

ice使用

ice 简介:ice简介

文档地址:http://waitmoon.com/docs

配置体验地址:http://waitmoon.com (目前前端待改善,白屏较久)

初期比较简陋…持续改进中

准备工作

rabbitMq&mysql

安装rabbitmq用于配置拉取与更新

安装mysql用于存储配置,并导入表结构

https://github.com/zjn-zjn/ice/blob/master/ice-server/src/main/resources/ice.sql

server部署

1.下载tar包 http://waitmoon.com/downloads/

解压tar包

tar -xzvf ice-server-*.tar.gz

2.编辑application-product.yml

#端口
server:
  port: 8000
spring:
  rabbitmq:
    port: 5672
    host: localhost
    username: guest
    password: guest
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/ice?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
    username: zjn
    password: zjnzjn
environment: product
           

修改其中的rabbitmq和mysql等配置

4.启动/停止/重启server

启动 ./ice.sh start 停止 ./ice.sh stop 重启 ./ice.sh restart

5.增加app

在ice_app表中插入app信息,如:

自研规则/流程编排框架-ice接入ice使用

6.打开配置页面

http://localhost:8000/ (第一次进去会因为加载js白屏较久,也不能刷新…优化中(不会写前端…))

7.示例配置

http://waitmoon.com (第一次进去会因为加载js白屏较久,也不能刷新…优化中(不会写前端…))

client接入

参考github ice-test模块

1.增加pom依赖

<dependency>
    <groupId>com.waitmoon.ice</groupId>
    <artifactId>ice-client-spring-boot-starter</artifactId>
    <version>0.0.4</version>
  </dependency>
           

2.增加ice配置

ice:
  app: 1
  rabbit:
    port: 5672
    host: localhost
    username: guest
    password: guest
    reply-timeout: 10000
           

其中app:与ice_app表中id相同

rabbit配置与server相同

client使用

参考github ice-test模块

开发节点

编排节点

配置触发

1.组装IcePack

2.调用 IceClient.process(IcePack pack)

3.举例

POST请求 http://www.waitmoon.com/ice-test/test

入参body(IcePack):

{
    "iceId":1, //触发的ID(ice_base的id) 优先触发
    "scene":"recharge", //iceId不存在时优先 触发所有监听此场景的handler
    "confId":1, //触发的配置ID(ice_conf的id) iceId和scene都不存在时触发 将此confId作为root触发
    "roam":{ //IceRoam 游离字段 类似于Drools等的Fact对象 存放业务字段供后续编排使用
        "spend":80, //自定义业务-充值金额
        "uid":1 //自定义业务-用户ID
    },
    "requestTime":1633449600000, //请求时间 默认当前时间
    "traceId":"Jcl_kQ2mdSHIBm6ufC_EQc" //链路ID 不填默认生成
}
           

response(List<IceContext>):

[
    {
        "iceId": 1, //触发的iceId
        "iceTime": 1625195223010, //进入ice执行时间
        "pack": { //IcePack
            "iceId": 1,
            "requestTime": 1633449600000,
            "roam": { //IceRoam 存放业务字段
                "uid": 1,
                "SEND_POINT": true, //业务自定义放置的字段(如查询是否是会员,将查询结果放入roam供后续节点使用)
                "spend": 80
            },
            "traceId": "Jcl_kQ2mdSHIBm6ufC_EQc",
        },
        //执行过程[confId:节点名:返回结果:执行时间]
        "processInfo": "[2:TimeChangeNone:N:0][6:ScoreFlow:F:0][4:And:F:0][8:ScoreFlow:T:0][9:PointResult:T:1][5:And:T:1][3:Any:T:1][1:None:N:1]"
    }
]
           

server使用