4. 自动化流程
两套互补机制驱动 CRM 生命周期:
- Automation —— 事件驱动的图编排,响应
crm_lead_status = qualified并创建对应的Opportunity - BPMN —— 对大额交易进行人工审批
预计耗时:35–45 分钟。
4.1 Automation:lead → opportunity
打开 Automation → New flow:
- 触发器:
ON_RECORD_UPDATE,model:crm_lead,谓词:status == 'qualified' && previous.status != 'qualified' - Action 1:
EXECUTE_COMMAND——commandCode设为crm:create_account,params映射客户字段 - Action 2:
EXECUTE_COMMAND——commandCode设为crm:create_opportunity,params携带crm_opp_account_id、crm_opp_name;阶段由命令的autoSetFields默认置为初始态discovery - Action 3:
SEND_NOTIFICATION——config.type为in_app,recipients指向 lead 的 owner

上图每一行是一条 flow。点 Edit 进入图形画布 —— 左侧组件库列出所有 trigger / action 节点类型,拖到画布上连边即可。右侧面板配置选中的节点。

底层这张图会编译为 SmartEngine —— action → serviceTask,condition → gateway。编译器细节见 Flow Designer。
4.2 BPMN:交易审批
打开 BPMN Designer → New process,命名为 crm_opportunity_approval:

点 + 新建流程(或行内的 编辑)进入 BPMN 设计器画布 —— 事件、任务、网关在左侧组件库;中间是放置和连线的画布;右侧面板配置选中节点的属性(流程名称、标识、撤回/抄送策略)。

- 起始事件 —— 由一个
executionMode: BPM的命令(例如你自定义的crm:submit_opportunity)触发 - Gateway —— 例如
crm_opp_expected_amount >= 50000(阈值按业务设定) - User task —— 受理人 =
opportunity.account.owner.manager - Service task —— 审批通过时将
crm_opp_stage置为qualification;驳回时置为closed_lost
把命令绑定到流程,是在命令定义的 executionConfig 里声明 BPM 执行模式与 processKey:
{
"code": "crm:submit_opportunity",
"type": "action",
"modelCode": "crm_opportunity",
"executionConfig": {
"executionMode": "BPM",
"processKey": "crm_opportunity_approval"
}
}命令配置随插件
resourceDirs的commands目录导入(参见 插件开发)。命令的 handler / 字段映射类绑定走独立的bindingRules.json(一个顶层数组,每项含commandCode/ruleType/handlerClass等),写在commands.json里的 inlinebindingRules会被静默忽略 —— 红线 #6。
4.3 活动 feed
详情页的 recent-activity block(第 2 章预留)监听 crm.opportunity.stage_changed 事件。配置一个简单 block,从 ab_data_change_log 按记录 id 过滤读取即可。
4.4 验证
- 资格化一个 lead → 确认创建了对应的
Opportunity,且 owner 收到站内(in_app)通知 - 创建一条
crm_opp_expected_amount = 80000的 opportunity,并调用绑定流程的命令 → manager 的待办列表里出现该任务 - 审批通过 →
crm_opp_stage变为qualification - 活动 feed 中出现带作者和时间戳的条目