如何编写Tracardi工作流:185+内置插件构建自动化客户旅程
【免费下载链接】tracardiTRACARDI is a new HOME for your customer data. TRACARDI is an Composable API-first solution for any company that need inexpensive CDP to intergrate with.项目地址: https://gitcode.com/gh_mirrors/tr/tracardi
TRACARDI 是一个 API-first 的客户数据平台(CDP),它的核心能力之一就是工作流(Workflow)——你可以通过拖拽节点,把 185+ 个内置插件像积木一样拼装起来,自动触发营销动作、更新客户画像、清洗数据。本文将带你快速掌握 Tracardi 工作流的编写思路,无需深厚编程背景即可上手。
一、工作流在 Tracardi 中是什么?
在 Tracardi 中,工作流被实现为一个有向无环图(DAG):每个插件是一个节点,节点之间的连线代表数据流向。当追踪器(Tracker)收到一个事件后,平台会自动检查哪些工作流被触发,然后按图执行。
核心执行链路如下:
- 事件进入→ 系统加载该客户最新的画像(Profile)与会话(Session)
- 规则匹配→ 根据触发规则找到需要运行的工作流
- DAG 执行→ 把可视化画布转换成可执行图,逐节点调用插件
- 结果回写→ 工作流中修改的画像、会话字段自动保存,并记录字段变更日志
这套逻辑集中在两个文件里,理解它们你就理解了 Tracardi 工作流的"心脏":
- 工作流管理器:tracardi/service/wf/workflow_manager_async.py
- 事件触发入口:tracardi/service/wf/triggers.py
执行引擎的"画布转执行图"逻辑在:tracardi/service/wf/domain/work_flow.py
二、185+ 插件全景:从哪里选节点?
Tracardi 的内置插件全部位于 tracardi/process_engine/action/ 目录下,源码中实际提供了 185+ 个可用插件节点,按功能分成多个子目录:
| 分类目录 | 说明 | 典型用途 |
|---|---|---|
strings/ | 字符串处理 | 拼接、分割、正则替换、验证 |
time/ | 时间处理 | 时区转换、时间差计算 |
traits/ | 画像属性操作 | 增删改客户属性(traits) |
segmentation/ | 分群 | 客户分层、标签计算 |
connectors/ | 第三方连接器 | HubSpot、Mailchimp、Slack、Elasticsearch 等 40+ 平台 |
operations/ | 通用运算 | 条件判断、数据变换 |
consents/ | 同意管理 | GDPR 合规的同意状态处理 |
flow/ | 流程控制 | 循环、分支、异常处理 |
几个常用插件示例:
- 条件分支:
if_action.py—— 判断条件后走不同分支,是构建"客户旅程"的骨架 - 属性更新:tracardi/process_engine/action/traits/ 下的插件可增量修改客户属性
- 连接器:tracardi/process_engine/action/v1/connectors/hubspot/ 可直接把数据推送到 HubSpot
- 兴趣分组:
group_and_rank_interests_action.py—— 自动为客户兴趣打分排序
💡 选型建议:先用
strings/、traits/这类"数据处理型"节点清洗和丰富数据,最后用connectors/型节点把结果送到外部系统。
三、编写一个工作流的完整步骤
步骤 1:定义触发规则
工作流需要一个"何时运行"的触发条件。触发规则由规则引擎(Rules Engine)管理,源码位于 tracardi/process_engine/rules_engine.py。典型触发方式:
- 事件触发:某类型事件发生(如用户提交表单)时立即执行
- 字段变更触发:画像某个属性被更新时执行
- 计划任务触发:按调度时间从指定节点开始执行(见 tracardi/service/wf/domain/work_flow.py 中对
scheduled_event_config的处理)
步骤 2:用画布搭建 DAG
在可视化编辑器中拖入节点并连线。保存后的工作流是一个Flow对象,其结构定义在 tracardi/domain/flow.py:
type:工作流类型(如collection收集型、journey旅程型)flowGraph:节点与边的集合tags:用于检索的标签lock:防止未部署的草稿被误执行
平台内置了DAG 保护机制(防环检测),源码在 tracardi/service/wf/domain/dag_protection.py——你无法画出一个死循环。
步骤 3:配置每个节点的输入
节点之间通过**点号路径(dot notation)**传递数据,例如把事件属性event.profile.email传入下一个节点。这套路径系统的实现:
- 路径访问器:tracardi/service/notation/dot_accessor.py
- 路径遍历器:tracardi/service/notation/dict_traverser.py
这意味着你可以跨层级引用任意深度的数据结构,如event.payload.products[0].name。
步骤 4:调试与验证
Tracardi 内置了完整的调试器,能逐步显示每个节点的输入输出:
- 调试核心:tracardi/process_engine/debugger.py
- 调试信息模型:tracardi/service/wf/domain/debug_info.py
每个节点的执行结果都会写入FlowInvokeResult(tracardi/service/wf/domain/flow_invoke_result.py),出错时会给出明确的DagGraphError信息。
步骤 5:部署
草稿(draft)与工作流本体分离存储,只有**部署(deploy)**后才会被规则引擎匹配到。部署状态映射见 test/unit/mysql/test_workflow.py 中WorkflowTable的deployed字段用法。
四、实战:一个"客户旅程"的典型形态
以"新用户注册 → 分级 → 推送营销"为例:
- 触发:
signup事件到达 - 判断:
if_action检查邮箱域名——企业邮箱走"高价值"分支 - 打标签:
traits/插件写入customer_tier: enterprise - 分群:
segmentation/插件把客户加入对应实时群组 - 外发:
connectors/hubspot/或connectors/mailchimp/推送到营销系统 - 合规:
consents/插件确认用户同意状态后再执行
整个流程不需要写一行胶水代码——所有逻辑都是现成插件。
五、进阶:编写自定义插件
内置插件不够用时,可以注册自己的插件。插件注册与元数据体系位于:
- 插件注册模型:tracardi/service/plugin/domain/register.py
- 插件运行器:tracardi/service/plugin/service/plugin_runner.py
- 插件安装入口:tracardi/service/plugin/plugin_install.py
单元测试模板可参考 test/unit/plugins/test_plugin_base64_encode.py,集成测试参考 test/integration/plugins/test_plugin_start.py。
六、常见问题速查
Q1:工作流没有触发?先确认配置中enable_workflow已开启(见 tracardi/service/wf/triggers.py 第 31 行的开关逻辑),再检查工作流是否已 deploy。
Q2:数据在节点间"丢"了?检查点号路径是否写对,可用dict_traverser手动验证路径可达性。
Q3:修改画像后没生效?工作流结束后平台会检查profile.is_updated_in_workflow(),自动写回数据库与缓存,见 tracardi/service/wf/triggers.py 中_exec_workflow的保存逻辑。
Q4:如何避免节点执行顺序问题?DAG 拓扑排序由 tracardi/service/wf/utils/dag_graph_sorter.py 保证,同层节点并行、跨层严格有序,无需手动控制。
小结
Tracardi 的工作流引擎把"客户旅程自动化"拆解成了三件事:定触发规则、拖节点连线、配点号路径。185+ 个内置插件覆盖了从数据清洗到营销触达的全链路,加上内置调试器与 DAG 保护,新手也能快速搭建出生产级的工作流。建议从 tracardi/process_engine/action/ 目录的字符串与 traits 类插件练手,再逐步尝试 connectors 完成端到端集成。
【免费下载链接】tracardiTRACARDI is a new HOME for your customer data. TRACARDI is an Composable API-first solution for any company that need inexpensive CDP to intergrate with.项目地址: https://gitcode.com/gh_mirrors/tr/tracardi
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考