cap-apps-workflow

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Rule: Domo App Platform Workflows (Toolkit-First)

规则:Domo应用平台工作流(工具包优先)

This rule is toolkit-first. Use
WorkflowClient
for workflow operations in apps.
Legacy endpoint-first guidance has been archived to
archive/legacy-rules/domo-workflow.md
.
本规则为工具包优先。在应用中使用
WorkflowClient
执行工作流操作。
旧版的端点优先指南已归档至
archive/legacy-rules/domo-workflow.md

Canonical Client

标准客户端

bash
yarn add @domoinc/toolkit
typescript
import { WorkflowClient } from '@domoinc/toolkit';

const startResponse = await WorkflowClient.startModel('myWorkflow', {
  inputVar: 'value',
  anotherVar: 123
});
const instance = startResponse.body;
Check status:
typescript
const statusResponse = await WorkflowClient.getInstance('myWorkflow', instance.id);
const status = statusResponse.body.status;
bash
yarn add @domoinc/toolkit
typescript
import { WorkflowClient } from '@domoinc/toolkit';

const startResponse = await WorkflowClient.startModel('myWorkflow', {
  inputVar: 'value',
  anotherVar: 123
});
const instance = startResponse.body;
检查状态:
typescript
const statusResponse = await WorkflowClient.getInstance('myWorkflow', instance.id);
const status = statusResponse.body.status;

Correct method usage (aliases, not UUIDs)

正确的方法使用(别名,而非UUID)

WorkflowClient
workflow methods use the workflow alias from
manifest.json
workflowMapping
, not the UUID.
typescript
await WorkflowClient.startModel('myWorkflow', { inputVar: 'value' });
await WorkflowClient.getAllModels();          // or getAllModels(true)
await WorkflowClient.getModelDetails('myWorkflow');
await WorkflowClient.getInstance('myWorkflow', 'instance-id');
WorkflowClient
的工作流方法使用
manifest.json
workflowMapping
里的工作流别名,而非UUID。
typescript
await WorkflowClient.startModel('myWorkflow', { inputVar: 'value' });
await WorkflowClient.getAllModels();          // or getAllModels(true)
await WorkflowClient.getModelDetails('myWorkflow');
await WorkflowClient.getInstance('myWorkflow', 'instance-id');

Manifest Requirements

清单要求

Workflows still require
workflowMapping
entries in
manifest.json
.
json
{
  "workflowMapping": [
    {
      "alias": "sendReport",
      "modelId": "d1373fa7-9df8-45d3-80ba-f931dda169b4",
      "parameters": [
        { "aliasedName": "reportType", "type": "string", "list": false, "children": null },
        { "aliasedName": "recipients", "type": "string", "list": true, "children": null }
      ]
    }
  ]
}
工作流仍需在
manifest.json
中配置
workflowMapping
条目。
json
{
  "workflowMapping": [
    {
      "alias": "sendReport",
      "modelId": "d1373fa7-9df8-45d3-80ba-f931dda169b4",
      "parameters": [
        { "aliasedName": "reportType", "type": "string", "list": false, "children": null },
        { "aliasedName": "recipients", "type": "string", "list": true, "children": null }
      ]
    }
  ]
}

Card mapping and input contract reminder

卡片映射与输入契约提醒

  • In Domo, map the app card to the intended workflow model in the card/app configuration UI (not just in source files).
  • Confirm the workflow start-node input parameters are configured in the workflow and match the payload keys your app sends in
    WorkflowClient.startModel(workflowAlias, variables)
    .
  • If parameter names/types/list settings do not match, workflow starts may fail or silently mis-handle inputs.
  • When recommending or generating
    WorkflowClient.startModel(...)
    calls, the agent must explicitly tell the user the exact input variable names and types being passed.
  • 在Domo中,需在卡片/应用配置UI中将应用卡片映射到目标工作流模型(而非仅在源文件中配置)。
  • 确认工作流起始节点的输入参数已在工作流中配置,且与应用在
    WorkflowClient.startModel(workflowAlias, variables)
    中发送的负载键名匹配。
  • 如果参数名称/类型/列表设置不匹配,工作流启动可能失败或静默处理输入错误。
  • 当推荐或生成
    WorkflowClient.startModel(...)
    调用时,代理必须明确告知用户传递的输入变量的准确名称和类型。

Error Handling Pattern

错误处理模式

typescript
async function runWorkflow(workflowAlias: string, payload: Record<string, unknown>) {
  try {
    const response = await WorkflowClient.startModel(workflowAlias, payload);
    return response.body;
  } catch (error) {
    console.error(`WorkflowClient.startModel failed for ${workflowAlias}`, error);
    throw error;
  }
}
typescript
async function runWorkflow(workflowAlias: string, payload: Record<string, unknown>) {
  try {
    const response = await WorkflowClient.startModel(workflowAlias, payload);
    return response.body;
  } catch (error) {
    console.error(`WorkflowClient.startModel failed for ${workflowAlias}`, error);
    throw error;
  }
}

Canonical Rules References

标准规则参考

  • Toolkit workflow methods:
    .cursor/rules/04-toolkit.mdc
  • Workflow mapping requirements:
    .cursor/rules/06-manifest.mdc
  • Runtime caveats:
    .cursor/rules/09-gotchas.mdc
  • 工具包工作流方法:
    .cursor/rules/04-toolkit.mdc
  • 工作流映射要求:
    .cursor/rules/06-manifest.mdc
  • 运行时注意事项:
    .cursor/rules/09-gotchas.mdc

Checklist

检查清单

  • workflowMapping
    is configured
  • App card is mapped to the correct workflow in Domo UI
  • Workflow start-node input parameters match app payload keys/types
  • Calls use
    WorkflowClient
    alias-based methods (
    startModel
    ,
    getModelDetails
    ,
    getInstance
    )
  • Agent states exact
    startModel
    input variable names/types in guidance
  • Code passes workflow aliases (from
    workflowMapping.alias
    ) rather than workflow UUIDs
  • Response parsing uses
    response.body
  • Long-running workflow UX includes status checks or async user feedback
  • 已配置
    workflowMapping
  • 已在Domo UI中将应用卡片映射到正确的工作流
  • 工作流起始节点输入参数与应用负载键名/类型匹配
  • 调用使用
    WorkflowClient
    基于别名的方法(
    startModel
    getModelDetails
    getInstance
  • 代理在指导中明确说明
    startModel
    的输入变量名称/类型
  • 代码传递的是工作流别名(来自
    workflowMapping.alias
    )而非工作流UUID
  • 响应解析使用
    response.body
  • 长时间运行的工作流用户界面包含状态检查或异步用户反馈