图的编排规范

图的编排格式用来描述一张图的完整信息,主要包含三部分内容:图属性,功能单元定义,功能单元之间的关系定义。ModelBox框架图配置采用Graphviz DOT语法进行定义,图的配置文件采用toml文件形式。下面对图的编排格式进行说明。

如下以一个简单的业务样例,总共有三个功能单元:

  • HTTP REQUEST功能单元:启动http server服务,有一个输出端口“OUT”;
  • PROCESS功能单元:接受数据后调用PROCESS功能处理数据并输出,有一个输入端口“IN”和一个输出端口“OUT”;
  • HTTP RESPENSE功能单元:接受数据后,将结果回应到HTTP客户端,有一个输入端口“IN”。

图 1 图编排格式

使用Graphviz DOT 语法和TOML配置格式完整图配置描述结果如下:

[grasph]
graphconf = '''  
    //定义图属性
    digraph G {         
        //定义功能单元属性     
        HTTP_REQUEST[flowunit=http, listen="0.0.0.0:80", label="{HTTP REQUEST|{OUT}}"]         
        PROCESS[flowunit=json, label="{{IN}|PROCESS|{OUT}}"]        
        HTTP_RESPONSE[flowunit=http,type="flowunit",label="{{IN}|HTTP RESPONSE}"]      
        //定义功能单元关系
        HTTP_REQUEST:OUT->PROCESS:IN         
        PROCESS:OUT->HTTP_RESPONSE:IN     
     }
   '''format
format = "graphviz"

第一部分是图属性,包含图名称和图的描述语法

格式: digraph [name]

说明 : digraph开头,[name]可以是字符串。

第二部分是功能单元的定义

格式: name[key=value]

说明: name为功能单元的别名,用户可自定义,用来区分同一功能单元在图里可多次使用。key为功能单元的配置属性,每个功能单元不同,value为key的配置值。

flowunit=http为指定功能单元的实体名称。

type=xx参数指定点功能单元的类型,可以是input, output, flowunit,缺省为flowunit。

第三部分是功能单元的关系定义

格式: name:outport -> name:inport

说明: name为点的名称,outport为输出端口名称,inport为输入端口名称。

满足如上规范即可进行图的编排,ModelBox图的编排存在如下约束:

  • 图必须为有向无环图,有开始有结束,不能形成循环;
  • 功能单元之间的关系需要和功能单元输入输出端口匹配;
  • 所有功能单元需要有关系连接,不支持孤立的功能单元;
  • 具有输入端口的功能单元前面必须连接其他功能单元。

results matching ""

    No results matching ""