思考流程节点的前后端交换和代码组织方案

林一二2023年07月10日 15:47
  • 执行模块完全运行在前端或者是worker里,也可以运行在nodejs上,需要用适配器模式满足这两种情况下的通信对上层来说一致

以文本格式化节点为例

为避免处理两边频繁更新对象导致冲突的可能性,将图的状态分为设置和结果两部分。之后有空闲了再考虑怎么合并以及支持多人协同。

设置对象

类似microsoft/guidance,用handlebarsjs来最终格式化文本。在前端用 Slate 对变量做一个简单封装和自动补全。 前端界面上的节点渲染器展示富文本编辑器,得到用户输入的结果,序列化为handlebar格式的字符串

react前端代码将当前各个节点的序列化结果传给通过props传入的后端连接器实例,它使用初始化时传入的适配器,通过websocket或restapi+sse将结果传给服务器后端

后端也有一个序列化结果,两边保持这个一致,并作为唯一信息源,通过他给实际执行的节点模型赋值

  • 现在的服务中,哪些类型是需要从客户端发送过来的,它们可以从现有的UI元素里生成吗

结果对象

运算结果及需要显示的内容,还有一些频繁更新的界面显示状态放在另一个对象,序列化并用相似的方式同步给前端。

  • 是否使用immer,加上jsondiffpatch来做,一开始不用管性能问题

涉及到的方法

目前已有

  • loadRuntimeData

改为使用 noflo-runtime-base 的 fbp protocol 来做了接入NoFlo的Runtime

基于状态机的插件化的AI流程工具Memeloop 动态数据付费创意工坊线上线下分类项目

Undefined widget 'supertag-form'

Code
* 执行模块完全运行在前端或者是worker里,也可以运行在nodejs上,需要用适配器模式满足这两种情况下的通信对上层来说一致

!! 以文本格式化节点为例

为避免处理两边频繁更新对象导致冲突的可能性,将图的状态分为设置和结果两部分。之后有空闲了再考虑怎么合并以及支持多人协同。

!!! 设置对象

类似[ext[microsoft/guidance|https://github.com/microsoft/guidance]],用[ext[handlebarsjs|https://handlebarsjs.com]]来最终格式化文本。在前端用 Slate 对变量做一个简单封装和自动补全。
前端界面上的节点渲染器展示富文本编辑器,得到用户输入的结果,序列化为handlebar格式的字符串

react前端代码将当前各个节点的序列化结果传给通过props传入的后端连接器实例,它使用初始化时传入的适配器,通过websocket或restapi+sse将结果传给服务器后端

后端也有一个序列化结果,两边保持这个一致,并作为唯一信息源,通过他给实际执行的节点模型赋值

* 现在的服务中,哪些类型是需要从客户端发送过来的,它们可以从现有的UI元素里生成吗

!!! 结果对象

运算结果及需要显示的内容,还有一些频繁更新的界面显示状态放在另一个对象,序列化并用相似的方式同步给前端。

* 是否使用immer,加上jsondiffpatch来做,一开始不用管性能问题

!! 涉及到的方法

目前已有

* `loadRuntimeData`

---
改为使用 noflo-runtime-base 的 fbp protocol 来做了[[接入NoFlo的Runtime]]