2.2 KiB
Raw Permalink Blame History

id, title, type, feature, scope, locale, aliases, related_tools, related_pages, prerequisites, negative, last_verified
id title type feature scope locale aliases related_tools related_pages prerequisites negative last_verified
approve.plugin.concept 审批插件架构 concept approve end-user zh
审批是插件吗
approve 插件是什么
审批中心怎么部署的
为什么审批要单独装
审批不在主程序里吗
application
approve 不是主程序内置功能,必须先在应用市场安装插件才能用
审批数据存在独立的 `<前缀>approve_*` 数据表里,不在主程序业务表
卸载插件时若勾选「删除数据」会清空全部审批数据,无法恢复
v1.7.90

审批插件架构

定义

审批approve是 DooTask 的独立插件,由 kuaifan/dooapprove Docker 镜像提供一套独立的工作流引擎服务。主程序通过反向代理与之通信,所有审批的流程定义、实例、任务、历史都由插件维护,不在主程序业务表里。

关键属性

  • 独立容器:插件作为 docker-compose 服务名 approve 启动,端口仅在内网暴露
  • 独立数据库表:复用主库实例但表前缀为 <DB_PREFIX>approve_(如 pre_approve_*),与主程序业务表逻辑隔离
  • HTTP 反代:主程序 nginx 把 /approve/ 转给插件容器;/approve/api/ 先经 /approveAuth 校验主程序 token 再放行
  • 业务桥接:主程序 ApproveController 通过 http://approve 调用插件 REST 接口(路径前缀 /api/v1/workflow/...),把结果包成 Base::retSuccess 返回前端
  • 通知桥接:审批状态变化通过 approval-alert 机器人在 DooTask 群聊中下发模板消息

与主程序的关系

  • 主程序登录 token = 审批插件身份凭据(通过 verifyToken 接口校验)
  • 主程序用户/部门/机器人是审批的"人员主数据",审批不复制用户表
  • 用户感知不到容器分离:在 app-system.approve.howto 描述的「审批中心」页面内完成所有操作

不支持

  • 主程序无法直接 SQL 查询审批数据,必须经插件 API
  • 关闭/卸载插件后无法发起新审批:「应用 - 审批」入口在新发起处会报错(Apps::isInstalledThrow