喜欢这个插件吗?请在 GitHub 上 它!
摘要
discourse-workflow 为主题提供了一个安全的工作流框架。每个工作流由可配置的步骤和选项组成,主题会按这些步骤推进直到完成。
它支持分支和循环、列表和看板发现视图、可审计性以及自动化友好的行为,同时保持与核心 Discourse 权限和 UI 模式的接近。
特性
基于主题的工作流实例,具有管理员定义的“工作流”、“步骤”和“步骤选项”
基于核心 Discourse 概念构建:类别、组和基于类别的权限——只有在获得许可的情况下才能执行操作
在 /workflow 处进行工作流发现,带有快速过滤器:
发现视图选择器:
列表
看板(仅在单一、兼容看板的工作流上下文下显示)
图表(仅在单一工作流上下文和允许查看图表的用户下显示)
看板工作流板:
可点击的主题卡片
合法的拖放转换
合法时的键盘转换(左箭头 / 右箭头)
工作流主题横幅:
逾期模型,具有层级结构:
全局设置:workflow_overdue_days_default
工作流覆盖
步骤覆盖
0 在该范围内禁用逾期
工作流列表和看板卡片中的逾期指示器
工作流燃尽图表:
图表端点 + UI 集成
周范围选择器(1–12)
全周窗口和按步骤着色的系列
通过小型操作帖子实现的转换审计跟踪
对被监视类别的到达通知(关注第一篇帖子)
可从主题和发现视图中获取的工作流可视化
Data Explorer 集成,带有默认工作流查询:
可选的 AI 辅助步骤处理
介绍性概念
泳道 (Swim Lanes)
每个工作流泳道都是一个类别(或子类别)。随着主题的进展,它会根据配置的转换在类别之间移动。
工作流实例 (Workflow Instances)
单个工作流项(例如,一个工单)就是一个主题。
可以添加标签以用于元数据,例如优先级。
类别的移动由工作流操作控制(除非是管理员覆盖)。
参与者 (Actors)
可以在步骤类别中创建主题的用户可以对该步骤中的工作流项执行操作。具有回复权限的用户仍然可以像往常一样发表评论。
通过选项进行的操作 (Actions via Options)
步骤选项定义了每个步骤中可用的操作。每个选项都显示为一个主题操作按钮,可以将主题移动到目标步骤。
仪表板 (Dashboard)
使用 /workflow 导航过滤器查看您可以访问的工作流主题,然后过滤或切换到看板以进行板式流程管理。
审计跟踪 (Audit Trail)
转换会作为小型操作帖子记录在主题上。捆绑的 Data Explorer 查询支持审计和操作报告。
可视化 (Visualisation)
工作流可视化可从以下位置获取:
与标准 Discourse 的主要区别
您不能直接在工作流的第 1 步之后的类别中创建新主题。
除非您是管理员,否则您不能手动更改工作流主题的类别。
只有具有类别创建权限的用户才能执行工作流转换。
入门
使用 workflow_enabled 启用插件。
转到“管理” → “插件” → “Discourse Workflow”。
创建一个工作流,保存它,然后添加步骤和步骤选项。
配置类别权限,以便工作流参与者在相关的步骤类别中具有“创建”权限。
在第一个步骤类别中创建一个主题。
使用主题操作按钮或看板交互将其转换。
使用 /workflow 进行操作队列管理。
AI 操作
如果配置了 AI,它可以操作一个步骤。
要求:
有效的 workflow_openai_api_key
在步骤上启用了 AI
提示包括 {{options}} 和 {{topic}}
示例提示:
your options are {{options}}. if the following text states it is delicious, please accept, otherwise reject. {{topic}} answer with one word from those options
已知问题
此插件仍在发展中。请在仓库或此 Meta 主题上报告问题和增强想法。
26 个赞
您好 Robert,
我正在使用工作流插件(不含 AI)。这是一个简单的流程,旨在为 Linux 咖啡馆提供支持链,帮助用户从 Windows 迁移。新主题通过带有子寻址的 RFC 6233 邮件创建,并进入第一个子类别(level1)。
两个问题:
工作流步骤的 ID 不唯一。我有三个步骤具有相同的 ID。??
“incoming”主题上的“start”操作会创建“422 unprocessable content”。也许这是 1) 的结果。
3 个赞
感谢您的耐心和反馈。我感谢您对插件的兴趣。
它有点实验性,正如您所见,尚未收到大量反馈,因此难免会出现一些初期问题。
我将尝试重现您的工作流程并尝试重现该问题。
在此期间,您能否截取管理屏幕中工作流程的屏幕截图并分享?
@Thomas_Rother 您对此有堆栈跟踪吗?
3 个赞
罗伯特,您好:
没关系,我知道这是实验性的。因此,它只安装在一个自托管的测试实例上。您可以在那里注册,我可以授予您管理员权限:
https://forum2.netzwissen.de/login
2 个赞
好的,通过演练,这是我的操作过程:
设置“网吧门票”类别
将所有步骤设置为子类别,结果如下:
到目前为止一切顺利。
现在让我们创建步骤:
好的,我至少可以看到两个问题!(但其中一个可能由另一个引起)
这很奇怪,因为我确定以前这是可以正常工作的。我正在查看,如果我有时间,很快就会发布一个修复程序。
3 个赞
Olle11
2025 年5 月 30 日 10:09
11
这个插件最常见的用例是什么?它是否与 Gemini flash 2.0 兼容?
任何具有多个步骤和参与者的业务流程(在合理的范围内)。可能需要扩展以进行特定集成。
目前仅支持 OpenAI,但欢迎提交 PR(它使用 Chat Completions,因此工作量不大)。
1 个赞
重大新闻:您现在可以获取创建燃尽图/燃起图的统计数据:
main ← add_daily_workflow_stats
opened 08:45PM - 01 Aug 25 UTC
* Adds a daily job to create state count stats that you can use in burndown/burn… up charts.
* Adds a job that check presence of or adds two useful Data Explorer queries
* Audit log for all transitions
* Daily counts for workflow instances at each step of their workflow, facilitating burndown/up charts (just export the results).
* You can give specific groups access to these reports.
添加了一个每日作业来创建状态计数统计信息,您可以在燃尽图/燃起图中使用这些信息。
添加了一个作业,用于检查或添加两个有用的数据探索器查询
所有转换的审计日志
工作流实例在其工作流的每个步骤的每日计数,便于燃尽图/燃起图(只需导出结果)。
您可以授予特定组访问这些报告的权限。
注意:由于在主要插件捆绑中处理 gem 依赖项的方式发生了变化,Discourse Workflow 目前仅与通过测试兼容。一旦下一个稳定版本发布,这种情况应该会有所改变。
4 个赞
我正在尝试找出我的网站为什么会变慢……
弃用警告
[PLUGIN discourse-workflow] 弃用通知:在站点初始化阶段访问 site.mobileView 或 site.desktopView 已弃用。在将来的更新中,移动模式将由视口大小确定,因此在初始化期间使用这些值可能会在浏览器窗口大小调整时导致错误和不一致。请将这些检查移至在页面渲染期间执行的组件、转换器或 API 回调。 [弃用于 Discourse 3.5.0.beta9-dev] [弃用 ID:discourse.static-viewport-initialization] [信息:Designing for Different Devices (Viewport Size, Touch/Hover, etc.) ] deprecated.js:62:13
hellekin:
我的网站变得很慢……
我非常怀疑这会导致您的网站变得迟缓!! - 这是一个弃用警告。
期待您的 PR
1 个赞
hellekin:
我的网站变慢了……
嗯,这不应该是因为 Discourse Workflow,因为我已经关闭了几个 N+1 问题,包括主题列表和可视化中的问题:
main ← eliminate_n_plus_1
opened 02:27PM - 22 Nov 25 UTC
* makes associations more idiomatic
* adds explicit association with topic to w… orkflow_state
* various points leverage associations
等等。
3 个赞
另一个重大更新——在线燃尽/燃起图表(作为现有捆绑的数据资源管理器查询的一个很好的替代方案)
在发现(discovery)中添加了一个新的工作流图表视图,具有共享视图选择器(列表/看板/图表)和周期控制(1-12 周)。
在 /discourse-workflow/charts.json 处实现了燃尽数据 API,并集成了 /workflow/charts 路由。
图表访问权限是单独设置的:管理员和 workflow_charts_allowed_groups;未经授权的用户将隐藏图表。
图表有效载荷已收紧至仅包含选定的工作流上下文(selected_workflow_id、selected_workflow_name、series),移除了未使用的工作流目录界面。
添加了请求/系统覆盖和用户体验加固:整周窗口、本地日期安全的轴标签、可访问的视图选择器标签以及图表渲染/状态回归检查。
图表功能应与所有工作流兼容:
图表不需要看板兼容性,因此适用于不兼容看板的工作流。
仅当当前工作流列表范围恰好限定为一个工作流时,图表才会出现。
用户必须具有图表权限(管理员或在 workflow_charts_allowed_groups 中)。
如果兼容看板,下拉菜单显示列表/看板/图表。
如果不兼容看板,下拉菜单仍然可以显示列表/图表(当满足上述两个条件时)。
main ← charts
merged 09:55PM - 23 Feb 26 UTC
## Summary
This PR delivers a workflow discovery UX and reporting expansion… with three integrated workflow views (List, Kanban, Chart), stronger runtime hardening, and broader automated coverage.
It adds charting for workflow step counts over time, improves list/kanban SPA behavior, aligns job loading/naming with Zeitwerk autoloading conventions, and tightens chart mode visibility so only authorized users see
Chart in the workflow view selector.
## Functional Improvements
1. Discovery now supports a unified view selector:
- List (topic table)
- Kanban (actionable board)
- Chart (burn down trend)
- Selector appears contextually based on compatibility/scope.
2. Workflow charts:
- New chart endpoint and UI integration (/workflow/charts and chart mode in /workflow).
- Period selector from 1 to 12 weeks.
- Full-week windows (Sunday to Saturday).
- Per-step series with step/category color mapping.
- Payload now returns selected workflow metadata only (no full workflow catalog).
3. Chart permissions and UX:
- New setting: workflow_charts_allowed_groups.
- Access: admins + configured groups.
- Chart option is hidden from users without chart permission.
- Chart permissioning is intentionally separate from topic-level category permissioning.
4. Workflow quick-filter/SPA behavior:
- Query-param driven transitions without full page reload.
- Persisted quick filters in local storage.
- Better view-state synchronization across route transitions.
- Ongoing list/kanban improvements remain intact (toggle behavior, stale-state refresh handling, overdue/list indicators).
5. Runtime/job reliability:
- Workflow jobs now follow Zeitwerk autoloading conventions.
- Scheduled jobs are visible/reliable without plugin-level manual requires.
- Transition enqueue path updated to new namespaced notifier job.
- WorkflowStat associations corrected to belongs_to for proper relation semantics.
## Technical Changes
- Added: app/controllers/discourse_workflow/workflow_charts_controller.rb
- Added: lib/discourse_workflow/charts_permissions.rb
- Added frontend route wiring for charts:
- assets/javascripts/discourse/discourse-workflow-route-map.js
- assets/javascripts/discourse/routes/discovery/workflow-charts.js
- assets/javascripts/discourse/controllers/discovery/workflow-charts.js
- Added chart connector:
- assets/javascripts/discourse/connectors/discovery-list-container-top/z-workflow-burndown-chart.gjs
- Extended quick filters connector for multi-view behavior and chart gating:
- assets/javascripts/discourse/connectors/discovery-list-container-top/workflow-quick-filters.gjs
- Updated plugin/list serialization and permission flags:
- plugin.rb
- lib/discourse_workflow/list_controller_extension.rb
- Added setting + locale updates:
- config/settings.yml
- config/locales/client.en.yml
- config/locales/server.en.yml
- Updated styles for chart and view controls:
- assets/stylesheets/common/workflow_common.scss
- Updated routes:
- config/routes.rb
- Zeitwerk alignment for jobs:
- moved jobs to namespaced paths:
- app/jobs/scheduled/discourse_workflow/*
- app/jobs/regular/discourse_workflow/*
- renamed classes to Jobs::DiscourseWorkflow::* to match file paths
- removed legacy plugin-level require workaround
- added scheduled-job eager-load wiring in lib/discourse_workflow/engine.rb
## New / Updated Tests
- Request specs:
- spec/requests/workflow_charts_controller_spec.rb
- permissions, routing, week windows, selected-workflow payload contract
- System specs:
- spec/system/workflow_charts_spec.rb
- chart rendering, view switching, period selection
- spec/system/workflow_quick_filters_spec.rb
- chart visibility gating in view selector
- Page objects:
- spec/system/page_objects/pages/workflow_discovery.rb (chart interactions/assertions)
- Job specs:
- spec/jobs/scheduled/discourse_workflow/daily_stats_spec.rb
- spec/jobs/scheduled/discourse_workflow/ai_transitions_spec.rb
- spec/jobs/scheduled/discourse_workflow/data_explorer_queries_completeness_spec.rb
- spec/jobs/regular/discourse_workflow/topic_arrival_notifier_spec.rb
- Fabricator:
- spec/fabricators/workflow_stat_fabricator.rb
## Validation
- Full plugin suite passes:
- bin/rspec plugins/discourse-workflow/spec
- Result: 76 examples, 0 failures
- Targeted request/system/job specs and formatting/rubocop checks pass for touched files.
## Notes
- Chart access model is intentionally broader than topic-level visibility and is controlled by workflow_charts_allowed_groups (plus admin access).
- If stricter chart visibility is desired later, it can be introduced as an optional mode without affecting current behavior.
3 个赞