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

XFEWorkflow

【WinUI】XFE基于windows的工作流

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

Space:插件与工作流

Space 是侧边导航栏中的独立页面,与管理已安装插件的“插件中心”分开。提供“插件”“工作流”“我的发布”三个标签,管理员额外看到“审核中心”。支持名称、描述、作者搜索与分页;作者/审核页可以切换插件和工作流、筛选状态。列表与详情之间可以拖动调整大小,窄窗口改为上下排列,控件跟随深浅主题。

Space.Server 使用 XFEExtension.NetCore.ServerInteractive,独立部署 Windows 或 Linux 控制台。AutoConfig 保存账号、会话、两类资源的目录及上传元数据,插件包与工作流包独立存文件,元数据修改通过串行锁保存。首版按单实例部署。

上传与使用

  1. 在独立的“Space”页面登录。账号与 Space 共用应用固定的本地地址 http://localhost:3300/space/v1/,客户端没有地址修改入口。未登录用户也能浏览、下载已上架内容。
  2. 上传插件:点击“上传插件”,选择 .xfeplugin。包内清单决定插件 ID、版本、能力与依赖;本地插件可先在“插件中心”导出。
  3. 上传工作流:点击“上传工作流”,选择已保存的本地工作流,或通过“从文件选择”读取 .xfeworkflow / .json。填写发布名称、介绍与语义版本(例如 1.0.0),点击“提交审核”。本地定义保持不变,工作流 ID 标识同一作者的版本系列。
  4. “我的发布”显示自己的插件和工作流及审核说明。管理员在“审核中心”选择资源类型,审核上架、拒绝或下架。公开目录只展示已上架内容,详情中的“查看所有版本”可下载旧版。相同 ID / 版本即使被拒绝或下架也不能覆盖,修改内容后提高版本号。
  5. 下载插件会自动解析依赖、校验哈希和清单后安装。下载工作流会校验包与目录信息,默认自动安装并启用 pluginVersions 锁定的插件版本,包括它们的传递依赖;找不到锁定版本时说明缺失依赖,停止导入。可以取消自动安装,先导入用于查看,缺失插件仍会阻止运行。
  6. 下载的工作流生成新的本地 ID,并默认关闭,避免覆盖已有流程或自动启动触发器。点击“打开工作流编辑器”编辑;准备好后在“工作流”列表中开启。

下载前预览

详情中的“预览图形与代码”打开只读窗口:图形化流程可以平移、缩放、选择节点查看参数/端口/代码,并通过下拉框切换结构化子图;“对应 C# 代码”显示由当前图生成的源码,纯 C# 工作流显示发布的实际代码;“插件依赖”显示名称、ID、锁定版本和声明依赖,缺失版本也保留说明。

预览只获取定义和已上架的插件清单,不安装 DLL、不导入工作流、不运行代码或触发器。已上架版本公开预览;未公开版本只有作者本人和管理员可以预览,支持审核前检查。服务端读取包前核对 SHA-256 和目录,客户端检查发布身份与声明,预览图和编辑器均禁止修改。

实际预览:图形与子图、对应 C#、插件与版本。预览面板约束选项卡的实际内容尺寸,确保代码编辑器撑满可用高度。可见尺寸验证。

工作流包包含图形、C# 代码、端口、参数、变量、内嵌模板与插件版本声明。凭据引用保留,凭据库、浏览器会话、联系人缓存、历史运行和外部文件不打包;发布前应检查代码及普通参数中的个人内容。服务器只检查并保存包,不执行工作流、不启动触发器或加载插件 DLL。

启动与管理员

dotnet run --project XFEWorkflow/XFEWorkflow.Space.Server -- --data=.artifacts/space --init-admin --account=admin
dotnet run --project XFEWorkflow/XFEWorkflow.Space.Server -- --data=.artifacts/space --url=http://localhost:3300/

初始化命令从终端或标准输入读取至少 12 位的密码。公开注册只能创建作者;管理员仅由初始化命令创建。初始化已有管理员的数据目录会拒绝重复创建。发布后的可执行程序接受相同参数,Linux 需给可执行文件设置执行权限。

客户端固定地址包含完整前缀:http://localhost:3300/space/v1/。启动以上服务后即可从客户端登录、上传插件与工作流,作者可下架自己的已上架版本。

TLS:

$env:XFE_TLS_PFX_PASSWORD = '证书密码'
dotnet run --project XFEWorkflow/XFEWorkflow.Space.Server -- --data=.artifacts/space --url=https://localhost:3443/ --tls-pfx=C:/certs/space.pfx

PFX 密码从环境变量读取,不写入命令行或配置。也可在反向代理处终止 TLS,内部服务监听本地地址。Ctrl+C 或 Linux SIGTERM 会停止服务并保存配置。日志在数据目录 logs 中;备份应包含整个数据目录。

协议

路由位于 /space/v1,使用 ServerInteractive 的 JSON 请求和响应。客户端通过 ClientRequester 传递 deviceInfo/session,公开接口无需登录。请求示例:

Invoke-RestMethod -Method Post -Uri http://localhost:3300/space/v1/plugins/search -ContentType application/json -Body '{"query":"AI"}'
路由 参数 访问
health 无 公开
register account、password、nickname 公开
login / relogin 框架账号密码 / 会话 公开
plugins/search query、offset、limit 公开
plugins/detail pluginId 公开,仅上架版本
workflows/search query、offset、limit 公开,按工作流 ID 返回最新上架版本
workflows/detail workflowId 公开,全部上架版本,按语义版本降序
workflows/preview id(发布版本 ID) 公开,仅已上架版本,返回定义和可用插件清单
workflows/preview/private id(发布版本 ID) 作者本人或管理员,支持未公开版本
packages/chunk kind、id、index 公开,仅对应资源的上架版本
plugins/mine 无 登录作者
workflows/mine 无 登录作者,仅自己的工作流版本
account/profile 无 登录用户,返回自己的昵称和头像
account/update nickname、avatarUrl(HTTP/HTTPS,可为空) 登录用户,只更新自己的资料
uploads/begin kind、length、sha256;工作流额外提供 version 登录作者
uploads/chunk id、index、data(Base64) 上传所属作者
uploads/complete id 上传所属作者
uploads/cancel id 上传所属作者,清理分片和临时包
plugins/withdraw id 发布所属作者
workflows/withdraw id 发布所属作者
reviews/list kind 管理员,返回对应资源的所有状态版本
reviews/decide kind、id、decision、reason 管理员

kind 为 plugin / workflow,不填写时默认为 plugin,保留旧插件接口兼容。上传会话的类型和工作流版本在创建时确定,完成上传不能更改。decision 为 publish / reject / withdraw。发布状态为 Pending / Published / Rejected / Withdrawn;只能审核待审核版本、下架已上架版本。版本内容不可覆盖,即使已拒绝或已下架也需要新版本号重新提交。

上传分片为 1 MiB,最后一片可更短;插件默认包上限 100 MiB,工作流压缩包及展开定义均不超过 32 MiB。工作流包只允许根目录一个 workflow.json,拒绝其他文件、路径穿越、损坏 JSON、无效端点及依赖锁定;最多 10000 个节点、32 层子图。完成时检查片数、长度、SHA-256、ZIP 内容及清单/定义,禁止跨作者声明同一资源 ID。下载同样按片返回,客户端检查哈希与目录声明后安装或导入。每位作者最多保留 5 个未完成上传,两类资源共用此限制;过期上传在 24 小时后清理,客户端上传失败会尝试取消会话并清理临时文件。

作者归属及管理员权限在服务端检查,越权返回 403,格式错误或无效包返回 400。密码使用框架 PBKDF2 保存,会话由框架校验设备及来源;客户端会话使用 Windows DPAPI 保存。

工作流目录元数据保留原始 ID、名称、介绍、版本、Graph / CSharp 类型、输入输出和插件锁定。插件目录与工作流目录分别保存,互不混入搜索或审核结果;两类包分别保存为 packages/<发布ID>.xfeplugin 和 .xfeworkflow。现有 AutoConfig 数据目录首次升级时自动初始化空的工作流目录,原有账号和插件不迁移。

界面与验收

实机截图:插件目录、上传工作流、工作流与已安装依赖(深色)、浅色、窄窗口。

2026-10-13 Windows x64:全量 XFE XUnit 337 项通过,收尾调整后 Space 相关 14 项再次通过;原生界面 6 项通过,使用独立工作区和真实 ServerInteractive 控制台进程。覆盖插件和 Graph / CSharp 工作流上传、审核、权限、版本、损坏包、持久化、插件依赖、默认关闭导入,以及 26 个发布工作流的实际翻页、搜索、安装后状态刷新、深浅主题、面板拖动、账号入口与本地企业微信插件回归。验收范围与报告。