XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEWorkflow

【WinUI】XFE基于windows的工作流

公开
关注 0 Fork 0 Star 0
UTF-8

图形方法与插件制作

SDK 1.6 可直接组合文本、数学、集合与控制节点制作方法;新导出的插件清单要求 SDK 1.6,确保下载方具备这些核心能力。普通基础节点属于宿主,不增加插件依赖;使用企业微信等插件时仍按实际版本声明依赖。

在编辑器中框选一段动作节点,选择“保存为节点 / 制作插件”。封装保留一个执行入口和出口,自动将跨选区的数据连线、$node 引用转成参数和返回值,安装成功后将选区替换成单个节点,可撤销。分支先汇合;开始、结束与触发器留在外层。

嵌套循环和结构化子图也会扫描跨边界引用,保留工作流输入与循环变量。存在提前结束的分支时需先汇合,避免封装后改变外层执行路径。选区与外部共享的变量请先改成参数或返回值。引用本机子工作流的固定 ID 不能直接分享,请先将该子工作流封装为插件节点,再引用该节点。

不选择节点时,可将整个工作流封装为方法。在工作流设置中定义 inputs 与 outputs:输入名称会出现在开始节点的数据输出,返回值名称出现在结束节点的数据输入。多个返回值分别接到结束节点,也可用参数中的 $node 绑定。每次调用隔离输入、变量与内部节点结果,取消沿调用链传播。

插件 ID 相同可以继续添加方法,方法 ID 相同更新该方法的草稿。源工程保存在工作区 PluginProjects/<插件ID>/project.json,生成包中也包含可编辑的 project.json。已经安装或发布的版本不可覆盖,请提高版本号。插件中心可导出 .xfeplugin,随后在独立“Space → 上传插件”中提交,在“我的发布”查看状态。

一个节点对应一个异步方法:输入为具名参数,一个输出为返回值,多个输出为具名元组。SDK 1.3 自动生成仅依赖 SDK 的方法适配器,随包提供 PluginMethods.g.cs;Monaco 补全和 Runner 都可使用。例如插件 user.demo、方法 run、参数 name、返回值 text/count/ok:

var (a, b, c) = await XfePlugins._user_demo._runAsync(context, "输入名称", cancellationToken);

同样可以使用稳定能力 ID:

var result = await context.InvokeAsync("user.demo.run", new JsonObject { ["name"] = "输入名称" }, cancellationToken);

打包锁定引用插件的具体版本,并汇总权限。依赖实现 DLL 不会嵌入包或相互引用;各插件继续由独立加载上下文加载,共享 SDK。纯 C# 的动态能力 ID 无法静态推断,请在工作流设置中声明所需插件版本。

同一插件中的方法可以互相调用,引用的方法必须包含在本次插件工程中,无需声明自身为依赖。纯图形方法会清理无关的旧版本锁定;代码节点保留显式声明的依赖。编辑器只自动锁定图形引用及能从代码识别到的插件,不会因为切换到 C# 而锁定全部已安装插件。运行时和安装时使用相同的全局依赖解析,支持多个已安装版本之间的回溯,同时严格遵守显式版本锁定。

Space 下载及客户端本地导入都会先解析完整依赖链、检查版本约束与循环引用,再下载、验证哈希和清单,最后按依赖顺序安装。已有版本复用,停用的所需版本会启用;依赖冲突或缺失会阻止安装。解析支持共享依赖的版本回溯,不会仅取各插件的最新版本。

自动验证:XFE XUnit 覆盖图形方法参数、多个返回值、C# 元组解构、独立 Runner、选区边界引用、版本锁定、依赖回溯及循环拒绝;ServerInteractive 实际协议测试覆盖下载时自动安装依赖。