使用 Dataverse 中的低代码插件(预览版)

[本主题是预发行文档,有可能会有所更改。]

Microsoft Dataverse 通过低代码插件为实现更高效的数据架构和减少客户端工作负载提供了一个强大的解决方案。这些插件是可重用的实时工作流,在 Dataverse 内执行一组特定的命令,在服务器端运行,由个性化的事件处理程序触发。

重要

  • 这是一项预览功能。
  • 预览功能不适合生产使用且功能可能受限。 这些功能在正式发布之前推出,以便客户可以提前使用并提供反馈。

传统上,插件是作为编译成 .NET Framework 程序集的自定义类创建的,然后在 Dataverse 中上传和注册。 然而,随着低代码插件的引入,用户可以创建这些事件处理程序,只需要很少的编码或不需要编码,也不需要手动注册。

低代码插件存储在 Dataverse 数据库中,可以无缝集成到Power Apps 和 Power Automate 中。 工作流的行为是使用 Power Fx 表达式语言定义的,可以通过 Power Platform 连接器直接与 Dataverse 业务数据和外部数据源连接。 借助低代码插件,制作者可以用最少的编码专业知识快速构建复杂的工作流,从而产生更加精简、高效的数据架构。

服务器端逻辑的优势

定义服务器端业务逻辑有几个好处,包括:

  • 增强安全性。 由于服务器端逻辑在服务器上执行,它有助于防止对敏感数据或进程的未授权访问。
  • 改进性能。 通过在服务器上执行,业务逻辑可以减少需要在客户端和服务器之间传输的数据量,从而缩短处理时间。
  • 一致性和可靠性。 服务器端逻辑确保业务规则一致地应用于所有客户端,降低了错误或不一致的风险。
  • 更容易维护和升级。 通过将业务逻辑集中在服务器上,维护和更新变得更加容易,因为可以在一个地方进行更改,而不必更新多个客户端。
  • 可扩展性。 服务器端逻辑比客户端逻辑更容易扩展,从而实现更好的性能和处理更大的工作负载。

低代码插件

Dataverse 中支持两种类型的低代码插件:

类型​​ 触发器 支持参数 支持的范围
即时 手动运行 全局和表
自动化 Dataverse 表事件

所有低代码插件都有以下共同属性:

属性 Description
Display name 插件的可读名称。 一旦创建就不能更改。
客户 插件的内部名称。 平台使用其来识别代码和数据库操作中的组件。 一旦创建就不能更改。
Description 用于提供关于插件的附加上下文(目的、行为或其他重要细节)。
解决方案 用于对组件进行分组并导出到其他环境。 了解有关解决方案的更多信息。
表达式 这是使用 Power Fx 表达式语言定义的自定义函数,可用于执行操作或计算。 Power Fx 是在 Power Apps 画布应用程序中使用的公式语言,并且已经扩展到在低代码插件中使用。更多详情,请参见支持的功能

即时低代码插件是由用户手动触发的定制代码逻辑。 可以使用自定义输入和输出参数。

独特的属性:

属性 Description
作用域 用于将插件关联到特定的表。 它可以设置为表(显示为实体)或全局,其中表(实体)范围表示插件由特定表记录的上下文触发,全局范围表示操作与表无关(了解更多信息)。
参数设置 参数允许您在插件和运行插件的上下文之间传递信息,这使得设计可以在各种情况下重用的业务逻辑变得更加容易。

输入参数用于向插件提供数据,并允许您通过传递您在 Power Fx 公式中指定的不同值来控制函数的行为。

输出参数允许您检索函数或方法的结果,以便在您的程序中进一步使用。

支持的数据类型:
  • 布尔型
  • String
  • 流通股
  • 小数
  • 日期/时间
  • 整型

有关如何从画布应用程序或在 Power Automate 云端流中集成的更多信息:集成低代码插件

插件权限

设计时间

在 Power Platform 环境中拥有系统定制者或系统管理员安全角色成员资格的制作者可以访问该环境中的所有插件。 自定义安全角色可用于限制对低代码插件的访问。

运行时间

当调用插件时,会在调用其用户的上下文中访问插件定义中涉及的表数据(公式中的表,或者如果表与自动化插件的设置相关联)。

连接

使用安全角色,可以将插件中的连接器访问权限限制为组织中的一组特定用户。 指定哪些角色具有创建、读取、更新或删除权限。

创建低代码插件的先决条件

备注

我们正在推出一系列更新来启用 Dataverse 低代码插件。 这些低代码插件使用基于 Power Platform 自定义页面功能生成的用户界面。 作为这些更新的一部分,我们将使用系统维护帐户部署到环境中。 在某些情况下,这些帐户在成为紧急帐户时会产生意想不到的副作用。 我们将尽快更正此行为。 同时,以下应用可能显示在 Power Platform 管理中心中:

  • Dataverse 加速器应用 - <模型驱动应用>,由全局管理员帐户创建
  • Dataverse 操作页面 - <画布应用>这是一个自定义页面,将在该页面上生成使用与全局管理员帐户关联的用户名创建的低代码插件。
  • 概述页面 - <画布应用>这是一个自定义页面,将在该页面上生成使用与全局管理员帐户关联的用户名创建的低代码插件。
  • Power Platform 环境中的系统管理员或系统定制员安全角色。
  • 访问 Dataverse 加速器应用程序。

提示

自 2023 年 10 月 1 日起,所有新环境都会自动安装 Dataverse 加速器应用程序。 如果您已经安装 Dataverse 加速器,您可以手动更新 Dataverse 加速器。

更新 Dataverse 加速器

  1. 按照说明查看您环境中的许可应用
  2. 如果已安装 Dataverse 加速器且有更新可用,则在项目旁边的表中有说明。
  3. 选择 Dataverse 加速器,然后在命令栏上选择更新

提示

Microsoft-Power CAT 发布者启用自动应用程序更新,以便在更新可用时自动接收更新(2023 年 10 月 1 日之后创建的新环境不需要更新)。

备注

如果您之前安装了可选的用于连接器的低代码插件解决方案,当您在 2023 年 6 月 29 日之后更新时,它将被自动删除。 这些功能将在主解决方案中可用。

创建即时低代码插件

  1. 播放 Dataverse 加速器应用程序。
  2. 选择创建即时插件卡。 创建即时插入卡
  3. 提供显示名称
  4. 或者,定义参数:
    • 选择新输入参数新输出参数,然后输入标签和数据类型。
    • 根据需要添加更多输入和输出参数。
  5. 表达式编辑器中输入 Power Fx 表达式。
    • 通过标签名称引用公式中的输入参数。
    • 输出参数必须在花括号内引用,例如 { Out: "Return value" }
    • 使用数据收集函数引用 Dataverse 表,例如 Filter() 和 LookUp()
    • 如果范围设置为实体,则使用 ThisRecord 来访问与插件运行相关联的表行中的列值,例如 ThisRecord.'Account Name'

    提示

    请注意表达式框中的智能感知。 带下划线的红色表示无效。 黄色波纹表示您的逻辑可能受委托限制的影响。 可通过使用可委托函数来避免委托问题。

  6. 选择性地展开高级选项以修改解决方案范围描述
  7. 选择保存
  8. 测试您的即时低代码插件

示例:计算两个整数的和。

  • 创建两个输入参数 XY(都是整数类型),以及一个输出参数 Z(字符串类型)。
  • 使用以下公式:{Z: X + Y }

Dataverse 加速器应用程序中的即时插件示例

创建自动化低代码插件

  1. 播放 Dataverse 加速器应用程序。
  2. 选择创建自动化插件卡。 创建自动化插件卡
  3. 提供以下值:
    • 名称:为插件输入名称,如验证输入
    • :选择要将插件关联的表,例如帐户
    • 当行为什么时运行此插件。 指定调用插件的数据事件。
  4. 表达式编辑器中输入 Power Fx 表达式。
    • 使用数据收集函数引用 Dataverse 表,例如 Filter() 和 LookUp()
    • 使用 ThisRecord 访问与插件运行相关联的表行中的列值,例如 ThisRecord.'Account Name'
  5. 或者,展开高级选项 以修改阶段 (这应该在什么时候运行)和保存插件的解决方案
  6. 选择 保存
  7. 测试您的自动化低代码插件

在低代码插件中使用 Power Platform 连接器

Power Platform 连接器可用于低代码插件,以轻松集成来自 Dataverse 之外的系统(如 SQL Server、Salesforce 和 SharePoint)的数据和功能,而无需复杂的编码或自定义开发。

在低代码插件中使用连接器的先决条件

在低代码插件中使用连接器操作

您可以在低代码插件 Power Fx 公式中轻松使用连接器自定义连接器

  1. 创建与要使用的连接器的连接。
  2. 将连接引用添加到 Dataverse 环境中的连接。
  3. 在低代码插件 Power Fx 表达式编辑器中,键入连接引用的名称(带有前缀和下划线的内部名称,如 new_connectorName,而不是显示名称)。
  4. 智能感知向您显示可用的操作。 选择所需的操作,然后输入所需的参数。

在低代码插件中使用连接器之前,请查看连接器的文档,以确保正确传递输入和输出参数。

更多信息:示例

备注

  • 目前并不支持所有连接器操作。
  • 不要使用 Dataverse 连接器从插件表达式连接到 Dataverse 表。 相反,使用本机 Power Fx 函数与集合进行交互:Filter, Search, LookUpPatchCollectSet,其中列被视为全局变量。

测试低代码插件

测试即时插件

  1. 主屏幕上,从列表中选择一个即时插件,然后选择命令栏上的测试。 保存后,您也可以从命令栏中的即时插件编辑器进入此屏幕。 为低代码插件选择测试

  2. 为在低代码插件中定义的任何输入参数提供值,然后选择运行 选择运行以测试低代码插件

查看响应。

提示

使用输出参数帮助验证预期行为和结果。 否则,您在测试时只会看到成功或失败。

测试自动化插件

通过调用数据事件来测试自动化插件。 通过验证公式中定义的预期更改,观察插件是否运行成功。

提示

在预览期间,您可以使用 Power Apps 中的表编辑器调用相关的数据事件:

  1. 登录 Power Apps,转到并选择插件表。
  2. 在命令栏上,选择编辑
  3. 直接从该视图创建、更新或删除行。 或者,通过选择一行,在默认窗体中打开一行,然后选择命令栏上的使用窗体编辑行

集成低代码插件

从画布应用或自定义页面调用即时插件

  1. Dataverse 加速器应用程序中:
    1. 在列表中选择即时插件。
    2. 在命令栏上选择复制代码片段 调用实例低代码插件
    3. 将复制的公式粘贴并保存到文本编辑器或记事本中(在某个容易查阅的地方)。
  2. Power Apps 中:
    1. 在 Power Apps Studio 中创建或编辑画布应用程序(或自定义页面)。
    2. 在左侧导航的数据源选项卡下,选择 + 新数据源,并从 Dataverse 连接器中搜索环境选项。
    3. 将以下组件插入画布:
    • 添加与每个参数的数据类型相对应的输入控件,例如文本输入用于文本或数字,切换开关用于布尔值。
    • 如果插件范围被绑定到一个表,则添加一个与同一个表相关联的组合框,以便您可以选择输入。
    • 添加一个按钮来调用插件。
  3. 将您复制的插件公式粘贴到按钮的 OnSelect 属性中。
  4. 映射每个输入参数 Value 以引用相应的输入控制:
    • 如果公式是 Environment.new_CalculateSum({ X: Value, Y: Value });,则可以重写为:Environment.new_CalculateSum({ X: TextInput1.Text, Y: TextInput2.Text });
    • 如果公式被绑定,用表显示名称替换 Environment 以访问插件。
  5. 如果为低代码插件定义了输出参数:
    1. 使用 Set()UpdateContext() 公式捕捉回复:Set( ActionResult, Environments.CalculateSum({ X: TextInput1.Text, Y: TextInput2.Text }) );。 在标签中显示变量。 或者使用 Notify() 公式在通知中显示数据。
  6. 播放应用程序,选择命令栏上的命令运行低代码插件。

了解有关如何在画布应用程序中直接从 Power Fx 调用 Dataverse 操作的更多信息

从 Power Automate 云端流调用即时插件

  1. 在云端流中,从 Microsoft Dataverse 连接器添加一个新操作。
  2. 选择名为执行未绑定操作执行绑定操作的操作。
  3. 选择您的插件(具有带前缀的唯一名称)。
  4. 为所有输入参数(如果有)提供值。

从 Dataverse Web API 调用一个即时插件

按照从 Web API 文档调用自定义 API 中的未绑定操作绑定到表的函数部分的步骤操作(取决于插件的适当范围)。

联系帮助和支持

有关 Dataverse 加速器解决方案安装问题或低代码插件问题,如收到的错误,请使用帮助和支持体验,并提供以下信息:

  • 文件类型 - Dataverse Web API 和 SDK
  • 问题子类型 - Dataverse 的加速器工具包

您可以创建的示例低代码插件

有关如何创建低代码插件的几个示例,请参阅示例 Dataverse 低代码插件(预览版)

限制

  • 需要读取环境语言对象以访问现有画布应用内的新插件。 对于在将环境表数据源添加到现有画布应用程序后创建的任何插件,您必须移除并重新添加 Power Fx 环境语言对象。 然后,您会看到更新后的插件列表作为操作。

  • 如果您想要引用公式中的任何表,智能感知需要在自动化插件中使用显式表示法。 使用下面的歧义消除语法,例如 [@Accounts],使用方括号和 @ 符号(不是 Accounts)。

  • 嵌套支持。 插件只能从 Power Fx 表达式中调用 Microsoft 发布的第一方操作。

  • 某些 Collect 场景需要 PatchCollect() 在某些场景中不起作用。 解决方法是按照下面的填充相关列示例所示使用 Patch()。 如果您在创建自动插件,在 Power Fx 公式中引用的每个表前加上 @。

    Patch(Faxes,
        Collect(Faxes, { Subject : "Sub1" } ),
        { Regarding : First(Accounts) }
    )
    
  • 当低代码插件与连接器交互并且使用 DLP 时,管理员可以阻止使用 DLP 创建连接。 但是,Dataverse 环境中的现有连接引用继续发挥作用。 如果管理员需要阻止所有低代码插件与任何连接器的交互,他们可以禁用组织设置 Allowconnectorsonpowerfxactions。 默认情况下,此设置是启用的,可以通过常用的 SDK 方法(WebAPI、SDK、PowerShell 等)禁用。 您可以使用一个低代码的即时插件来将其禁用,如下所示:

    Patch(Organizations, First(Organizations), { 'Enable connectors on power fx actions.': 'Enable connectors on power fx actions. (Organizations)'.No })
    
  • 使用连接器的插件只能输出特定字段的结果。 因此,您需要将连接器响应中的特定原始值映射到输出值。

具有自定义连接器限制的低代码插件

如果您有具有自定义连接器的低代码插件,则必须在连接引用或流之前首先导入自定义连接器。

如果您的环境在解决方案中不包含自定义连接器,则导入仅包含自定义连接器的单独解决方案。 在导入实际解决方案之前执行此导入。 您需要首先执行此操作,因为 Azure 必须注册自定义连接器,然后才能导入其他解决方案组件。

如果导入包含自定义连接器和流的解决方案,Azure 将无法在注册连接引用或流时注册自定义连接器。 这也适用于之前未在单独解决方案中导入的自定义连接器的连接引用。 如果 Azure 未注册自定义连接器,导入将失败,或者您无法开始导入。

详细信息:在解决方案中创建自定义连接器:已知限制

另请参见

低代码插件 Power Fx (预览版)

在 Power Apps 内的 Dataverse 低代码插件中使用预生成提示