setup-datamodel

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Set Up Dataverse Data Model

配置Dataverse数据模型

Guide the user through creating Dataverse tables, columns, and relationships for their Power Pages site. Follow a systematic approach: verify prerequisites, obtain a data model (via AI analysis or user-provided diagram), review and approve, then create all schema objects via OData API.
引导用户为其Power Pages站点创建Dataverse表、列及关系。遵循系统化流程:验证先决条件、获取数据模型(通过AI分析或用户提供的图表)、审核并获批,随后通过OData API创建所有架构对象。

Core Principles

核心原则

  • Never create without approval: Always present the full data model proposal and get explicit user confirmation before making any Dataverse changes.
  • Use TaskCreate/TaskUpdate: Track all progress throughout all phases — create the todo list upfront with all phases before starting any work.
  • Resilient execution: Refresh tokens proactively, check for existing tables before creating, and report failures without automated rollback.
Initial request: $ARGUMENTS

  • 未经批准绝不创建:在对Dataverse进行任何更改之前,务必先完整呈现数据模型提案,并获得用户的明确确认。
  • 使用TaskCreate/TaskUpdate:在所有阶段全程跟踪进度——在开始任何工作之前,预先创建包含所有阶段的待办事项列表。
  • 弹性执行:主动刷新令牌,在创建前检查现有表,报告失败但不自动回滚。
初始请求:$ARGUMENTS

Phase 1: Verify Prerequisites

阶段1:验证先决条件

Goal: Confirm PAC CLI authentication, acquire an Azure CLI token, and verify API access
Actions:
  1. Create todo list with all 8 phases (see Progress Tracking table)
  2. Follow the prerequisite steps in
    ${CLAUDE_PLUGIN_ROOT}/references/dataverse-prerequisites.md
    to verify PAC CLI auth, acquire an Azure CLI token, and confirm API access. Store the environment URL as
    $envUrl
    .
Output: Verified PAC CLI auth, valid Azure CLI token, confirmed API access,
$envUrl
stored

目标:确认PAC CLI身份验证、获取Azure CLI令牌,并验证API访问权限
操作
  1. 创建包含全部8个阶段的待办事项列表(参见进度跟踪表格)
  2. 按照
    ${CLAUDE_PLUGIN_ROOT}/references/dataverse-prerequisites.md
    中的先决条件步骤,验证PAC CLI身份验证、获取Azure CLI令牌,并确认API访问权限。将环境URL存储为
    $envUrl
输出:已验证的PAC CLI身份验证、有效的Azure CLI令牌、已确认的API访问权限,
$envUrl
已存储

Phase 2: Choose Data Model Source

阶段2:选择数据模型来源

Goal: Determine whether the user will upload an existing ER diagram or let AI analyze the site
Actions:
  1. Ask the user how they want to define the data model using the
    AskUserQuestion
    tool:
    Question: "How would you like to define the data model for your site?"
    OptionDescription
    Upload an existing ER diagramProvide an image (PNG/JPG) or Mermaid diagram of your existing data model
    Let the Data Model Architect figure it outThe Data Model Architect will analyze your site's source code and propose a data model automatically
  2. Route to the appropriate path:
目标:确定用户是要上传现有ER图,还是让AI分析站点
操作
  1. 使用
    AskUserQuestion
    工具询问用户希望如何定义数据模型:
    问题:"您希望如何为站点定义数据模型?"
    选项描述
    上传现有ER图提供您现有数据模型的图片(PNG/JPG)或Mermaid图
    让数据模型架构师自动生成数据模型架构师将分析站点的源代码,并自动提出数据模型提案
  2. 根据选择进入对应流程:

Path A: Upload Existing ER Diagram

流程A:上传现有ER图

If the user chooses to upload an existing diagram:
  1. Ask the user to provide their ER diagram. Supported formats:
    • Image file (PNG, JPG) — Use the
      Read
      tool to view the image and extract tables, columns, relationships, and cardinalities from it
    • Mermaid syntax — The user can paste Mermaid ER diagram text directly in chat
    • Text description — A structured list of tables, columns, and relationships
  2. Parse the diagram into the same structured format used by the data-model-architect agent:
    • Publisher prefix (ask the user, or retrieve from the environment via
      pac env who
      )
    • Table definitions:
      logicalName
      ,
      displayName
      ,
      status
      (new/modified/reused),
      columns
      ,
      relationships
    • Column definitions:
      logicalName
      ,
      displayName
      ,
      type
      ,
      required
    • Relationship definitions: type (1:N or M:N), referenced/referencing tables
  3. Query existing Dataverse tables (same as Phase 3 would) to mark each table as
    new
    ,
    modified
    , or
    reused
    .
  4. Generate a Mermaid ER diagram from the parsed data (if the user provided an image or text) for visual confirmation.
  5. Proceed directly to Phase 4: Review Proposal with the parsed data model.
如果用户选择上传现有图表:
  1. 请用户提供其ER图。支持的格式:
    • 图片文件(PNG、JPG)——使用
      Read
      工具查看图片,并从中提取表、列、关系及基数
    • Mermaid语法——用户可直接在聊天中粘贴Mermaid ER图文本
    • 文本描述——结构化的表、列及关系列表
  2. 将图表解析为与data-model-architect代理相同的结构化格式:
    • 发布者前缀(询问用户,或通过
      pac env who
      从环境中获取)
    • 表定义:
      logicalName
      displayName
      status
      (新建/修改/复用)、
      columns
      relationships
    • 列定义:
      logicalName
      displayName
      type
      required
    • 关系定义:类型(1:N或M:N)、被引用/引用表
  3. 查询现有Dataverse表(与阶段3的操作相同),将每个表标记为
    new
    modified
    reused
  4. 从解析后的数据生成Mermaid ER图(如果用户提供的是图片或文本),以便可视化确认。
  5. 直接进入阶段4:审核提案,使用解析后的数据模型。

Path B: Let the Data Model Architect Figure It Out

流程B:让数据模型架构师自动生成

If the user chooses to let the Data Model Architect figure it out, proceed to Phase 3: Invoke Data Model Architect (the existing automated flow).
Output: Data model source chosen and, for Path A, parsed data model ready for review

如果用户选择让数据模型架构师自动生成,则进入阶段3:调用数据模型架构师(现有自动化流程)。
输出:已选择数据模型来源,对于流程A,解析后的数据模型已准备好进行审核

Phase 3: Invoke Data Model Architect

阶段3:调用数据模型架构师

Goal: Spawn the data-model-architect agent to autonomously analyze the site and propose a data model
Actions:
  1. Use the
    Task
    tool to spawn the
    data-model-architect
    agent. This agent autonomously:
    • Analyzes the site's source code to infer data requirements
    • Queries existing Dataverse tables via OData GET requests
    • Identifies reuse opportunities (reuse, extend, or create new)
    • Proposes a complete data model with an ER diagram
  2. Spawn the agent:
    Task tool:
      subagent_type: general-purpose
      prompt: |
        You are the data-model-architect agent. Follow the instructions in
        the agent definition file at:
        ${CLAUDE_PLUGIN_ROOT}/agents/data-model-architect.md
    
        Analyze the current project and Dataverse environment, then propose
        a complete data model. Return:
        1. Publisher prefix
        2. Table definitions (logicalName, displayName, status, columns, relationships)
        3. Mermaid ER diagram
  3. Wait for the agent to return its structured proposal before proceeding.
Output: Structured data model proposal from the agent (publisher prefix, table definitions, ER diagram)

目标:启动data-model-architect代理,使其自主分析站点并提出数据模型
操作
  1. 使用
    Task
    工具启动
    data-model-architect
    代理。该代理将自主执行以下操作:
    • 分析站点源代码以推断数据需求
    • 通过OData GET请求查询现有Dataverse表
    • 识别复用机会(复用、扩展或新建)
    • 提出包含ER图的完整数据模型
  2. 启动代理:
    Task tool:
      subagent_type: general-purpose
      prompt: |
        You are the data-model-architect agent. Follow the instructions in
        the agent definition file at:
        ${CLAUDE_PLUGIN_ROOT}/agents/data-model-architect.md
    
        Analyze the current project and Dataverse environment, then propose
        a complete data model. Return:
        1. Publisher prefix
        2. Table definitions (logicalName, displayName, status, columns, relationships)
        3. Mermaid ER diagram
  3. 等待代理返回结构化提案后再继续。
输出:代理返回的结构化数据模型提案(发布者前缀、表定义、ER图)

Phase 4: Review Proposal

阶段4:审核提案

Goal: Present the data model proposal to the user and get explicit approval before creating anything
Actions:
目标:向用户呈现数据模型提案,并在创建任何内容前获得明确批准
操作

4.1 Present Proposal

4.1 呈现提案

Present the data model proposal directly to the user as a formatted message, including:
  • Publisher prefix
  • All proposed tables with columns (logical names + display names)
  • Relationship descriptions
  • Mermaid ER diagram
  • Which tables are new vs. modified vs. reused
将数据模型提案以格式化消息直接呈现给用户,包括:
  • 发布者前缀
  • 所有提案表及其列(逻辑名称 + 显示名称)
  • 关系描述
  • Mermaid ER图
  • 哪些表是新建、修改或复用的

4.2 Get User Approval

4.2 获取用户批准

Use
AskUserQuestion
to get approval:
QuestionHeaderOptions
Does this data model look correct?Data Model ProposalApprove and create tables (Recommended), Request changes, Cancel
  • If "Approve and create tables (Recommended)": Proceed to Phase 5
  • If "Request changes": Ask what they want changed, modify the proposal, and re-present for approval
  • If "Cancel": Stop the skill
Only proceed to creation after explicit user approval.
Output: User-approved data model proposal

使用
AskUserQuestion
工具获取批准:
问题标题选项
此数据模型是否符合要求?数据模型提案批准并创建表(推荐), 请求修改, 取消
  • 如果选择“批准并创建表(推荐)”:进入阶段5
  • 如果选择“请求修改”:询问用户需要修改的内容,修改提案后重新呈现以获得批准
  • 如果选择“取消”:停止本技能
只有获得用户明确批准后,才能进入创建环节。
输出:用户已批准的数据模型提案

Phase 5: Pre-Creation Checks

阶段5:创建前检查

Goal: Refresh the token, verify what already exists in Dataverse, and build the creation plan to avoid duplicates
Actions:
目标:刷新令牌、验证Dataverse中已存在的内容,并制定创建计划以避免重复
操作

5.1 Refresh Token

5.1 刷新令牌

Re-acquire the auth token (tokens expire after ~60 minutes):
node "${CLAUDE_PLUGIN_ROOT}/scripts/verify-dataverse-access.js" <envUrl>
重新获取身份验证令牌(令牌约60分钟后过期):
node "${CLAUDE_PLUGIN_ROOT}/scripts/verify-dataverse-access.js" <envUrl>

5.2 Query Existing Tables

5.2 查询现有表

For each table in the approved proposal marked as
new
, check whether it already exists:
node "${CLAUDE_PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> GET "api/data/v9.2/EntityDefinitions(LogicalName='<table_logical_name>')"
  • If 404: Table does not exist, proceed to create it
  • If 200: Table already exists — skip creation, warn the user
For tables marked as
modified
, verify the table exists (it should) and check which columns are missing.
对于已批准提案中标记为
new
的每个表,检查其是否已存在:
node "${CLAUDE_PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> GET "api/data/v9.2/EntityDefinitions(LogicalName='<table_logical_name>')"
  • 如果返回404:表不存在,继续创建
  • 如果返回200:表已存在——跳过创建,并向用户发出警告
对于标记为
modified
的表,验证表是否存在(理应存在)并检查缺少哪些列。

5.3 Build Creation Plan

5.3 制定创建计划

From the pre-creation checks, build a list of:
  • Tables to create (new tables that don't exist yet)
  • Columns to add (new columns on existing/modified tables)
  • Relationships to create
  • Tables/columns to skip (already exist)
Inform the user of any skipped items.
Output: Finalized creation plan with tables, columns, and relationships to create or skip

根据创建前检查结果,制定以下列表:
  • 待创建的表(尚未存在的新表)
  • 待添加的列(现有/修改表中的新列)
  • 待创建的关系
  • 待跳过的表/列(已存在)
告知用户任何被跳过的项。
输出:最终创建计划,包含待创建或跳过的表、列及关系

Phase 6: Create Tables & Columns

阶段6:创建表及列

Goal: Create each approved table and its columns using the Dataverse OData Web API
Actions:
Refer to
references/odata-api-patterns.md
for full JSON body templates.
目标:使用Dataverse OData Web API创建所有已批准的表及其列
操作
完整的JSON主体模板请参考
references/odata-api-patterns.md

6.1 Create Tables

6.1 创建表

For each new table, POST to the EntityDefinitions endpoint:
node "${CLAUDE_PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> POST "api/data/v9.2/EntityDefinitions" --body '<JSON body from references/odata-api-patterns.md>'
Use the deep-insert pattern to create the table and its columns in a single POST request. See
references/odata-api-patterns.md
for the complete JSON structure.
对于每个新表,向EntityDefinitions端点发送POST请求:
node "${CLAUDE_PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> POST "api/data/v9.2/EntityDefinitions" --body '<JSON body from references/odata-api-patterns.md>'
使用深度插入模式,在单个POST请求中创建表及其列。完整的JSON结构请参考
references/odata-api-patterns.md

6.2 Add Columns to Existing Tables

6.2 向现有表添加列

For tables marked as
modified
, add new columns one at a time:
node "${CLAUDE_PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> POST "api/data/v9.2/EntityDefinitions(LogicalName='<table>')/Attributes" --body '<column JSON from references/odata-api-patterns.md>'
对于标记为
modified
的表,逐个添加新列:
node "${CLAUDE_PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> POST "api/data/v9.2/EntityDefinitions(LogicalName='<table>')/Attributes" --body '<column JSON from references/odata-api-patterns.md>'

6.3 Track Progress

6.3 跟踪进度

Track each creation attempt and its result (success/failure/skipped). Do NOT attempt automated rollback on failure — report failures and continue with remaining items.
跟踪每次创建尝试及其结果(成功/失败/跳过)。失败时请勿尝试自动回滚——报告失败并继续处理剩余项。

6.4 Refresh Token if Needed

6.4 按需刷新令牌

If creating many tables, the
dataverse-request.js
script handles 401 token refresh automatically. No manual refresh is needed between batches.
Output: All approved tables and columns created (or failures reported)

如果创建大量表,
dataverse-request.js
脚本会自动处理401令牌刷新。批次之间无需手动刷新。
输出:所有已批准的表和列已创建(或已报告失败)

Phase 7: Create Relationships

阶段7:创建关系

Goal: Create all relationships between the newly created and existing tables
Actions:
目标:在新创建的表与现有表之间创建所有关系
操作

7.1 One-to-Many Relationships

7.1 一对多关系

Create lookup columns that establish 1:N relationships:
node "${CLAUDE_PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> POST "api/data/v9.2/RelationshipDefinitions" --body '<relationship JSON from references/odata-api-patterns.md>'
创建用于建立1:N关系的查找列:
node "${CLAUDE_PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> POST "api/data/v9.2/RelationshipDefinitions" --body '<relationship JSON from references/odata-api-patterns.md>'

7.2 Many-to-Many Relationships

7.2 多对多关系

Create M:N relationships (intersect tables are created automatically):
node "${CLAUDE_PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> POST "api/data/v9.2/RelationshipDefinitions" --body '<M:N relationship JSON from references/odata-api-patterns.md>'
创建M:N关系(交叉表将自动创建):
node "${CLAUDE_PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> POST "api/data/v9.2/RelationshipDefinitions" --body '<M:N relationship JSON from references/odata-api-patterns.md>'

7.3 Track Relationship Creation

7.3 跟踪关系创建

Track each relationship creation attempt. Report failures without rolling back.
Output: All approved relationships created (or failures reported)

跟踪每次关系创建尝试。失败时仅报告,不回滚。
输出:所有已批准的关系已创建(或已报告失败)

Phase 8: Publish & Verify

阶段8:发布与验证

Goal: Publish all customizations, verify tables exist, write the manifest, and present a summary
Actions:
目标:发布所有自定义项、验证表是否存在、写入清单,并呈现总结
操作

8.1 Publish Customizations

8.1 发布自定义项

Publish all customizations so the new tables and columns become available:
node "${CLAUDE_PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> POST "api/data/v9.2/PublishXml" --body '{"ParameterXml":"<importexportxml><entities><entity>cr123_project</entity><entity>cr123_task</entity></entities></importexportxml>"}'
See
references/odata-api-patterns.md
for the full PublishXml pattern.
发布所有自定义项,使新表和列可用:
node "${CLAUDE_PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> POST "api/data/v9.2/PublishXml" --body '{"ParameterXml":"<importexportxml><entities><entity>cr123_project</entity><entity>cr123_task</entity></entities></importexportxml>"}'
完整的PublishXml模式请参考
references/odata-api-patterns.md

8.2 Verify Tables Exist

8.2 验证表是否存在

For each created table, run a verification query:
node "${CLAUDE_PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> GET "api/data/v9.2/EntityDefinitions(LogicalName='<table>')?$select=LogicalName,DisplayName"
对于每个已创建的表,运行验证查询:
node "${CLAUDE_PLUGIN_ROOT}/scripts/dataverse-request.js" <envUrl> GET "api/data/v9.2/EntityDefinitions(LogicalName='<table>')?$select=LogicalName,DisplayName"

8.3 Write Manifest

8.3 写入清单

After successful verification, write
.datamodel-manifest.json
to the project root. This file records which tables and columns were verified to exist, and is used by the validation hook.
json
{
  "environmentUrl": "https://org12345.crm.dynamics.com",
  "tables": [
    {
      "logicalName": "cr123_project",
      "displayName": "Project",
      "status": "new",
      "columns": [
        { "logicalName": "cr123_name", "type": "String" },
        { "logicalName": "cr123_description", "type": "Memo" }
      ]
    }
  ]
}
Use the
Write
tool to create this file at
<PROJECT_ROOT>/.datamodel-manifest.json
. Only include tables and columns that were confirmed to exist in Step 8.2. See
${CLAUDE_PLUGIN_ROOT}/references/datamodel-manifest-schema.md
for the full schema specification.
验证成功后,将
.datamodel-manifest.json
写入项目根目录。此文件记录了经验证存在的表和列,供验证钩子使用。
json
{
  "environmentUrl": "https://org12345.crm.dynamics.com",
  "tables": [
    {
      "logicalName": "cr123_project",
      "displayName": "Project",
      "status": "new",
      "columns": [
        { "logicalName": "cr123_name", "type": "String" },
        { "logicalName": "cr123_description", "type": "Memo" }
      ]
    }
  ]
}
使用
Write
工具在
<PROJECT_ROOT>/.datamodel-manifest.json
路径下创建此文件。仅包含步骤8.2中确认存在的表和列。完整的架构规范请参考
${CLAUDE_PLUGIN_ROOT}/references/datamodel-manifest-schema.md

8.4 Record Skill Usage

8.4 记录技能使用情况

Reference:
${CLAUDE_PLUGIN_ROOT}/references/skill-tracking-reference.md
Follow the skill tracking instructions in the reference to record this skill's usage. Use
--skillName "SetupDatamodel"
.
参考:
${CLAUDE_PLUGIN_ROOT}/references/skill-tracking-reference.md
按照参考文档中的技能跟踪说明,记录本技能的使用情况。使用
--skillName "SetupDatamodel"

8.5 Present Summary

8.5 呈现总结

Present a summary to the user:
TableStatusColumnsRelationships
cr123_project
(Project)
Created5 columns2 relationships
contact
(Contact)
Reused1 column added
cr123_task
(Task)
Created4 columns1 relationship
Include:
  • Total tables created/modified/reused/failed
  • Total columns created/skipped/failed
  • Total relationships created/failed
  • Any errors encountered with details
  • Location of the manifest file (
    .datamodel-manifest.json
    )
向用户呈现总结:
状态关系
cr123_project
(Project)
已创建5列2个关系
contact
(Contact)
已复用添加1列
cr123_task
(Task)
已创建4列1个关系
总结内容包括:
  • 已创建/修改/复用/失败的表总数
  • 已创建/跳过/失败的列总数
  • 已创建/失败的关系总数
  • 遇到的任何错误及详细信息
  • 清单文件的位置(
    .datamodel-manifest.json

8.6 Suggest Next Steps

8.6 建议下一步操作

After the summary, suggest:
  • Review created tables in the Power Pages maker portal
  • Populate tables with sample data for testing:
    /add-sample-data
  • Integrate tables with your site's frontend via Web API:
    /integrate-webapi
  • If the site is not yet built:
    /create-site
  • If the site is ready to deploy:
    /deploy-site
Output: Published customizations, verified tables, manifest written, summary presented

总结后,建议用户:
  • 在Power Pages制作者门户中查看已创建的表
  • 填充示例数据进行测试:
    /add-sample-data
  • 通过Web API将表与站点前端集成:
    /integrate-webapi
  • 如果站点尚未构建:
    /create-site
  • 如果站点已准备好部署:
    /deploy-site
输出:已发布自定义项、已验证表、已写入清单、已呈现总结

Important Notes

重要说明

Throughout All Phases

所有阶段通用

  • Use TaskCreate/TaskUpdate to track progress at every phase
  • Ask for user confirmation at key decision points (see list below)
  • Token refresh is automatic — the
    dataverse-request.js
    script handles 401 token refresh and 429/5xx retry internally
  • Report failures without rollback — track each creation attempt and continue with remaining items on failure
  • 使用TaskCreate/TaskUpdate跟踪每个阶段的进度
  • 在关键决策点等待用户确认(见下方列表)
  • 令牌刷新自动处理——
    dataverse-request.js
    脚本会内部处理401令牌刷新及429/5xx重试
  • 失败时仅报告不回滚——跟踪每次创建尝试,失败时继续处理剩余项

Key Decision Points (Wait for User)

关键决策点(需等待用户操作)

  1. After Phase 2: Data model source chosen (upload vs. AI)
  2. After Phase 4: Approve data model proposal before any creation
  3. After Phase 5: Acknowledge any skipped items before proceeding
  4. After Phase 8: Review summary and choose next steps
  1. 阶段2之后:已选择数据模型来源(上传vs AI生成)
  2. 阶段4之后:在创建前批准数据模型提案
  3. 阶段5之后:确认任何被跳过的项后再继续
  4. 阶段8之后:查看总结并选择下一步操作

Progress Tracking

进度跟踪

Before starting Phase 1, create a task list with all phases using
TaskCreate
:
Task subjectactiveFormDescription
Verify prerequisitesVerifying prerequisitesConfirm PAC CLI auth, acquire Azure CLI token, verify API access
Choose data model sourceChoosing data model sourceAsk user to upload ER diagram or let AI analyze the site
Invoke data model architectInvoking data model architectSpawn agent to analyze site and propose data model
Review and approve proposalReviewing proposalPresent data model proposal to user, get explicit approval
Pre-creation checksRunning pre-creation checksRefresh token, query existing tables, build creation plan
Create tables and columnsCreating tables and columnsPOST to OData API to create tables and columns
Create relationshipsCreating relationshipsPOST to OData API to create 1:N and M:N relationships
Publish and verifyPublishing and verifyingPublish customizations, verify tables, write manifest, present summary
Mark each task
in_progress
when starting it and
completed
when done via
TaskUpdate
. This gives the user visibility into progress and keeps the workflow deterministic.

Begin with Phase 1: Verify Prerequisites
在开始阶段1之前,使用
TaskCreate
创建包含所有阶段的任务列表:
任务主题activeForm描述
验证先决条件Verifying prerequisites确认PAC CLI身份验证、获取Azure CLI令牌、验证API访问权限
选择数据模型来源Choosing data model source询问用户上传ER图还是让AI分析站点
调用数据模型架构师Invoking data model architect启动代理以分析站点并提出数据模型
审核并批准提案Reviewing proposal向用户呈现数据模型提案,获得明确批准
运行创建前检查Running pre-creation checks刷新令牌、查询现有表、制定创建计划
创建表及列Creating tables and columns通过OData API POST请求创建表及列
创建关系Creating relationships通过OData API POST请求创建1:N和M:N关系
发布与验证Publishing and verifying发布自定义项、验证表、写入清单、呈现总结
开始任务时将其标记为
in_progress
,完成后标记为
completed
(通过
TaskUpdate
)。这使用户能够查看进度,并确保工作流的确定性。

从阶段1:验证先决条件开始