工作流动态内容

注释

Microsoft Purview 数据目录(经典版)和数据健康洞察(经典版)已经停止接受新客户,且这些服务(以前为 Azure Purview)现在转为只支持现有客户。

重要

此功能目前处于预览状态。 Azure 预览版的补充使用条款包含适用于 beta 版、预览版或其他尚未正式发布的 Azure 功能的其他法律条款。

可以使用 Microsoft Purview 工作流中的动态内容来关联工作流中的某些变量,或添加其他表达式来处理这些值。

向工作流添加动态内容时,将从提供的构建基块生成表达式,这些构建基块引用和处理工作流中的信息,以便实时获取所需的值。

在动态内容菜单中,当前可用的选项包括:

  • 内置变量 - 表示从触发工作流的项传入工作流的值的变量
  • 表达式 - 基于函数和变量生成的公式,这些函数和变量可以处理工作流中的值。

内置变量

目前,以下变量可用于 Microsoft Purview 中的工作流连接器:

先决条件连接器 内置变量 功能性 类型 可能的值
提交数据访问请求时
提交资产更新请求时
Workflow.Requestor 工作流请求者的 ID 字符串
Asset.Name 资产的名称 字符串
Asset.Description 资产的说明 stringnull
Asset.Type 资产的类型 字符串
Asset.完全限定名称 资产的完全限定名称 字符串
Asset.Owner 资产的数据所有者的 ID 字符串数组
Asset.Classification 资产分类的显示名称 字符串数组
Asset.Schema.Classification 应用于资产架构中的列的分类的显示名称 字符串数组
Asset.Is 认证 指示资产是否符合组织的质量标准,并且可以被视为可靠的指标 布尔 truefalse
提交数据访问请求时 Workflow.Request 收件人 工作流的请求收件人的 ID 字符串
启动并等待审批 Approval.Outcome 审批结果 字符串 'Approved''Rejected'
审批.分配给 审批者的 ID 字符串数组
Approval.Comments 审批者的姓名及其评论 字符串
检查数据源注册以使用治理数据 数据使用治理 数据使用治理的结果检查 布尔 truefalse
提交术语创建请求时 Workflow.Requestor 工作流请求者的 ID 字符串
Term.Name 术语的名称 字符串
Term.正式名称 术语的正式名称 字符串
Term.Definition 术语的定义 字符串
Term.Experts 术语专家的 ID 字符串数组
Term.Stewards 术语的管理员的 ID 字符串数组
Term.Parent.Name 父术语的名称(如果存在) 字符串
Term.Parent.Formal 名称 父术语的正式名称(如果存在) 字符串
提交术语更新请求时
提交术语删除请求时
Workflow.Requestor 工作流的请求者 字符串
Term.Name 术语的名称 字符串
Term.正式名称 术语的正式名称 字符串
Term.Definition 术语的定义 stringnull
Term.Experts 术语专家的 ID 字符串数组
Term.Stewards 术语的管理员的 ID 字符串数组
Term.Parent.Name 父术语的名称(如果存在) 字符串
Term.Parent.正式名称 父术语的正式名称(如果存在) 字符串
术语.创建者 术语创建者的 ID 字符串
术语。最后更新者 术语的上次更新器的 ID 字符串
提交术语导入请求时 Workflow.Requestor 工作流请求者的 ID 字符串
导入 File.Name 要导入的文件的名称 字符串
Http Http.Body HTTP 响应正文 对象字符串
Http.Headers HTTP 响应标头 object
Http.Status 代码 HTTP 状态代码 字符串
应用于每个 Item “应用于每个作”的当前项 任意
截止 Index Until作的当前迭代索引 integer
创建记录
删除记录
获取记录
更新记录
结果 ServiceNow作的结果 object
获取记录类型
列出记录
结果 ServiceNow作的结果 对象数组

Expressions

Microsoft Purview 中的工作流定义允许使用表达式中的函数来处理工作流中的值。

若要 根据函数的常规用途查找函数,请查看下表。 或者,有关每个函数的详细信息,请参阅 字母顺序列表

生成工作流并想要将函数添加到表达式时,请执行以下步骤:

  1. 选择要编辑的值。
  2. 选择文本框下方显示的 “添加动态内容 ”按钮。
  3. 在动态内容窗口中选择“ 表达式 ”选项卡,然后滚动以选择值。
  4. 更新表达式并选择“ 确定” 以添加它。

显示工作流文本字段的屏幕截图,其中突出显示了“使用动态内容”和“表达式”选项卡。

注意事项

  • 函数参数从左到右计算。

  • 内联显示纯文本的函数需要用大括号 ({}) 来改用表达式的内插格式。 此格式有助于避免分析问题。 如果函数表达式没有与纯文本内联显示,则不需要大括号。

    以下示例显示了正确和不正确的语法:

    正确"<text>/@{<function-name>('<parameter-name>')}/<text>"

    不正确"<text>/@<function-name>('<parameter-name>')/<text>"

  • 函数可能具有重载,这些重载是具有相同名称但执行任务的方式不同的函数的多个版本,具体取决于你提供给它们的输入。

以下部分根据函数 的一般用途来组织函数,或者可以 按字母顺序浏览这些函数。

字符串函数

若要使用字符串,可以使用这些字符串函数以及某些集合函数。 字符串函数仅适用于字符串。

字符串函数 任务
endsWith 检查字符串是否以指定的子字符串结尾。
startsWith 检查字符串是否以特定的子字符串开头。

集合函数

若要使用集合(通常是数组或字符串,有时是字典),可以使用这些集合函数。

收集功能 任务
contains 检查集合是否包含某个特定项。
长度 返回集合中的项数或字符串的长度。

逻辑比较函数

若要处理条件、比较值和表达式结果或计算各种逻辑,可以使用这些逻辑比较函数。 有关每个函数的完整参考,请参阅 字母顺序列表

逻辑比较函数 任务
判断表达式是否为假。 当表达式为 false 时返回 true,当表达式为 true 时返回 false。
and 检查所有表达式是否为真。 当所有表达式均为 true 时返回 true;如果至少有一个表达式为 false,则返回 false。
检查是否至少一个表达式为真。 如果至少一个表达式为 true,则返回 true;如果全部为 false,则返回 false。
等于 检查两个值是否相等。
更大 检查第一个值是否大于第二个值。
大于或等于 检查第一个值是否大于或等于第二个值。
更少 检查第一个值是否小于第二个值。
小于或等于 检查第一个值是否小于或等于第二个值。

用户函数

处理用户、用户与其他用户和组的关系,以及他们访问的资源,例如邮件、日历、文件、管理角色、组成员身份。 有关每个函数的完整参考,请参阅 字母顺序列表

用户函数 任务
getUserName 获取用户的名称。
getManager 获取用户经理的 ID。
memberOfGroup 检查用户是否是组的成员。

转换函数

若要更改值的类型或格式,可以使用这些转换函数。 有关每个函数的完整参考,请参阅 字母顺序列表

转换函数 任务
createArray 从任意数量的输入返回数组。
createObject 返回一个空对象。
字符串 返回值的字符串版本。
int 尝试将输入值转换为整数。
漂浮 尝试将输入值转换为浮点数。
bool 尝试将输入值转换为布尔值。
object 尝试将输入值转换为 对象。
array 尝试将输入值转换为数组。
nullOrElse 为可以为 null 的值提供默认值。

所有函数 - 按字母顺序排列的列表

检查所有表达式是否为真。 当所有表达式均为 true 时返回 true;如果至少有一个表达式为 false,则返回 false。

参数 类型 Description
value 布尔 要检查的第一个表达式
值。。。 布尔 要检查的 rest 表达式
返回值类型 Description
布尔 当所有表达式均为 true 时返回 true。 当至少一个表达式为 false 时返回 false。

Examples

这些示例用于检查指定的表达式是否为假:

and(equals(1, 1), equals(2, 2))
and(equals(1, 1), equals(1, 2))
and(equals(1, 2))

并返回以下结果:

  • 第一个示例:两个表达式均为 true,因此返回 true
  • 第二个示例:一个表达式为 false,因此返回 false
  • 第三个示例:表达式为 false,因此返回 false

数组

此函数尝试将输入值转换为数组。 它用于将值从更广泛的类型强制转换为 数组。 若要从项创建数组,请参阅 createArray

参数 类型 Description
value 任意 要转换的值
返回值类型 Description
array 转换后的数组值

示例

此示例将“应用于每个”作的 Item 断言为 数组 类型:

array(items('Appy to each'))

布尔

此函数尝试将输入值转换为布尔值。 它用于将值从更广泛的类型转换为 布尔值

参数 类型 Description
value 任意 要转换的值
返回值类型 Description
布尔 转换后的布尔值

示例

此示例将“应用于每个”作的 Item 断言为 布尔 类型:

bool(items('Appy to each'))

包含

检查集合是否包含某个特定项。 当找到该项目时返回 true,找不到该项目时返回 false。

重载 1:用于查找子字符串的字符串

此重载区分大小写。

参数 类型 Description
收藏 字符串 要检查的字符串
value 字符串 要查找的子字符串
返回值类型 Description
布尔 找到子字符串时返回 true。 找不到时返回 false。

重载 2:用于查找值的数组

参数 类型 Description
收藏 array 要检查的集合
value 任意 要查找的项
返回值类型 Description
布尔 如果找到该项,则返回 true。 找不到时返回 false。

示例 1

此示例检查子字符串“world”的字符串“hello world”,并返回 true

contains('hello world', 'world')

示例 2

本示例检查变量 Asset.Owner 中是否为与 Workflow.Requestor 变量相等的项:

contains(runInput()['asset']['dataOwner'], runInput()['requestor'])

createArray

从任意数量的输入返回数组。 此函数不需要输入值属于同一类型。

参数 类型 Description
值。。。 任意 用于创建数组的值。
返回值类型 Description
array 基于所有输入项创建的数组

Examples

以下示例根据输入创建数组:

createArray('h', 'e', 'l', 'l', 'o')
createArray(true, null)
createArray()

createObject

返回一个空对象。

返回值类型 Description
object 空对象

示例

此示例从输入创建数组,并返回 {}。

createObject()

以……结束

检查字符串是否以特定的子字符串结尾。 当找到该子字符串时返回 true,找不到时返回 false。 此函数区分大小写。

参数 类型 Description
文本消息 字符串 要检查的字符串
searchText 字符串 要查找的结尾子字符串
返回值类型 Description
布尔 当找到结尾子字符串时返回 true。 找不到时返回 false。

示例 1

此示例检查“hello world”字符串是否以“world”字符串结尾:

endsWith('hello world', 'world')

并返回以下结果:true

示例 2

此示例检查“hello world”字符串是否以“universe”字符串结尾:

endsWith('hello world', 'universe')

并返回以下结果:false

等于

检查两个值、表达式或对象是否相等。 当两者相等时返回 true,两者不相等时返回 false。

参数 类型 Description
value 任意 要比较的值、表达式或对象
compareTo 任意 比较值、表达式或对象
返回值类型 Description
布尔 当两者相等时返回 true。 不相等时返回 false。

Examples

这些示例检查指定的输入是否相等。

equals(true, 1)
equals('abc', 'abcd')

并返回以下结果:

  • 第一个示例:两个值相等,所以此函数返回 true
  • 第二个示例:两个值不相等,所以此函数返回 false

float

此函数尝试将输入值转换为浮点数。 它用于将值从更广泛的类型强制转换为 float

参数 类型 Description
value 任意 要转换的值
返回值类型 Description
漂浮 转换后的浮点值

示例

此示例将“应用于每个”作的 Item 断言为 float 类型:

float(items('Appy to each'))

getManager

获取Microsoft Entra ID 中的用户经理的 ID。

重载 1:为单个用户获取

参数 类型 Description
userId 字符串 输入用户的 ID
返回值类型 Description
stringnull 输入用户的经理的 ID;如果不存在,则为 null

重载 2:为多个用户获取

参数 类型 Description
userId array 输入用户的 ID
返回值类型 Description
array 输入用户经理的 ID 的联合

Examples

这些示例获取输入用户 () 的经理 () :

getManager(runInput()['requestor'])
getManager(runInput()['term']['stewards'])
  • 第一个示例:输入参数是一个字符串,因此返回 Workflow.Requestor 管理器的 ID
  • 第二个示例:输入参数是一个数组,因此返回 Term.Stewards 经理的 ID 的联合集。

getUserName

获取Microsoft Entra ID 中的用户名。

重载 1:为单个用户获取

参数 类型 Description
userId 字符串 输入用户的 ID
返回值类型 Description
字符串 输入用户的名称

重载 2:为多个用户获取

参数 类型 Description
userId array 输入用户的 ID
返回值类型 Description
array 输入用户的名称

Examples

这些示例获取输入用户 () 的名称 () :

getUserName(runInput()['requestor'])
getUserName(runInput()['term']['stewards'])
  • 第一个示例:输入参数是一个字符串,因此返回 Workflow.Requestor 的名称
  • 第二个示例:输入参数是一个数组,因此返回 一个 Term.Stewards 名称数组。

greater

检查第一个值是否大于第二个值。 如果第一个值大,则返回 true;如果第一个值小,则返回 false。

重载 1:比较数字

参数 类型 Description
value integerfloat 要检查是否大于第二个值的第一个值
compareTo integerfloat 比较值
返回值类型 Description
布尔 当第一个值大于第二个值时返回 true。 当第一个值等于或小于第二个值时返回 false。

重载 2:比较字符串

参数 类型 Description
value 字符串 要检查是否大于第二个值的第一个值
compareTo 字符串 比较值
返回值类型 Description
布尔 当第一个值大于第二个值时返回 true。 当第一个值等于或小于第二个值时返回 false。

Examples

这些示例检查第一个值是否大于第二个值:

greater(10, 5)
greater('apple', 'banana')

并返回以下结果:

  • 第一个示例:true
  • 第二个示例:false

greaterOrEquals

检查第一个值是否大于或等于第二个值。 当第一个值大于或等于第二个值时返回 true,当第一个值小于第二个值时返回 false。

重载 1:比较数字

参数 类型 Description
value integerfloat 要检查是否大于或等于第二个值的第一个值
compareTo integerfloat 比较值
返回值类型 Description
布尔 当第一个值大于或等于第二个值时返回 true。 当第一个值小于第二个值时返回 false。

重载 2:比较字符串

参数 类型 Description
value 字符串 要检查是否大于或等于第二个值的第一个值
compareTo 字符串 比较值
返回值类型 Description
布尔 当第一个值大于或等于第二个值时返回 true。 当第一个值小于第二个值时返回 false。

Examples

这些示例检查第一个值是否大于或等于第二个值:

greaterOrEquals(5, 5)
greaterOrEquals('apple', 'banana')

并返回以下结果:

  • 第一个示例:true
  • 第二个示例:false

int

此函数尝试将输入值转换为整数。 它用于将值从较宽的类型转换为 整数

参数 类型 Description
value 任意 要转换的值
返回值类型 Description
integer 转换后的整数值

示例

此示例将“应用于每个”作的 Item 断言为 整数 类型:

int(items('Appy to each'))

length

返回集合中的项数或字符串的长度。

参数 类型 Description
value 字符串数组 包含要计数的项的字符串或集合
返回值类型 Description
布尔 集合中的项数或字符串的长度

Examples

这些示例对以下集合中的项数进行计数:

length('abcd')
length(createArray(0, 1, 2, 3))

两者都返回以下结果: 4

less

检查第一个值是否小于第二个值。 如果第一个值小,则返回 true;如果第一个值大,则返回 false。

重载 1:比较数字

参数 类型 Description
value integerfloat 要检查是否小于第二个值的第一个值
compareTo integerfloat 比较值
返回值类型 Description
布尔 当第一个值小于第二个值时返回 true。 当第一个值等于或大于第二个值时返回 false。

重载 2:比较字符串

参数 类型 Description
value 字符串 要检查是否大于第二个值的第一个值
compareTo 字符串 比较值
返回值类型 Description
布尔 当第一个值小于第二个值时返回 true。 当第一个值等于或大于第二个值时返回 false。

Examples

这些示例检查第一个值是否小于第二个值。

less(5, 10)
less('banana', 'apple')

并返回以下结果:

  • 第一个示例:true
  • 第二个示例:false

小于或等于

检查第一个值是否小于或等于第二个值。 当第一个值小于或等于第二个值时返回 true,当第一个值大时返回 false。

重载 1:比较数字

参数 类型 Description
value integerfloat 要检查是否小于或等于第二个值的第一个值
compareTo integerfloat 比较值
返回值类型 Description
布尔 当第一个值小于或等于第二个值时返回 true。 当第一个值大于第二个值时返回 false。

重载 2:比较字符串

参数 类型 Description
value 字符串 要检查是否小于或等于第二个值的第一个值
compareTo 字符串 比较值
返回值类型 Description
布尔 当第一个值小于或等于第二个值时返回 true。 当第一个值大于第二个值时返回 false。

Examples

这些示例检查第一个值是否小于或等于第二个值。

lessOrEquals(10, 10)
lessOrEquals('apply', 'apple')

并返回以下结果:

  • 第一个示例:true
  • 第二个示例:false

memberOfGroup

检查用户是否为MICROSOFT ENTRA ID 中的组成员。 组 ID 可在Microsoft Entra组管理页上找到。

参数 类型 Description
userId 字符串 输入用户的 ID
groupId 字符串 要检查的组的 ID
返回值类型 Description
布尔 如果用户是组的成员,则返回 true。 如果用户不是组的成员或组不存在,则返回 false。

示例

此示例检查 Workflow.Requestor 是否为指定组的成员:

memberOfGroup(runInput()['requestor'], '00000000-0000-0000-0000-111111111111')

判断表达式是否为假。 当表达式为 false 时返回 true,当表达式为 true 时返回 false。

参数 类型 Description
value 布尔 要检查的表达式
返回值类型 Description
布尔 当表达式为 false 时返回 true。 当表达式为 true 时返回 false。

Examples

这些示例用于检查指定的表达式是否为假:

not(equals(1, 2))
not(equals(1, 1))

并返回以下结果:

  • 第一个示例:表达式为 false,所以此函数返回 true
  • 第二个示例:表达式为 true,所以此函数返回 false

nullOrElse

为可以为 null 的值提供默认值。 返回一个不可为 null 的值。

重载 1:字符串版本

参数 类型 Description
value stringnull 可以为 null 的值
默认值 字符串 回退值
返回值类型 Description
字符串 如果输入值不为 null,则返回该输入值。 如果输入值为 null,则返回默认值。

重载 2:整数版本

参数 类型 Description
value integernull 可以为 null 的值
默认值 integer 回退值
返回值类型 Description
integer 如果输入值不为 null,则返回该输入值。 如果输入值为 null,则返回默认值。

重载 3:Float 版本

参数 类型 Description
value floatnull 可以为 null 的值
默认值 漂浮 回退值
返回值类型 Description
漂浮 如果输入值不为 null,则返回该输入值。 如果输入值为 null,则返回默认值。

重载 4:布尔版本

参数 类型 Description
value 布尔值null 可以为 null 的值
默认值 布尔 回退值
返回值类型 Description
布尔 如果输入值不为 null,则返回该输入值。 如果输入值为 null,则返回默认值。

重载 5:数组版本

参数 类型 Description
value arraynull 可以为 null 的值
默认值 array 回退值
返回值类型 Description
array 如果输入值不为 null,则返回该输入值。 如果输入值为 null,则返回默认值。

重载 6:对象版本

参数 类型 Description
value objectnull 可以为 null 的值
默认值 object 回退值
返回值类型 Description
object 如果输入值不为 null,则返回该输入值。 如果输入值为 null,则返回默认值。

示例

此示例为可以为 null 的变量 Term.Definition 提供默认值 'Empty'

nullOrElse(runInput()['term']['definition'], 'Empty')

对象

此函数尝试将输入值转换为对象值。 它用于将值从更广泛的类型转换为 对象

参数 类型 Description
value 任意 要转换的值
返回值类型 Description
布尔 转换后的对象值

示例

此示例将“应用于每个”作的 Item 断言为 对象 类型:

object(items('Appy to each'))

检查是否至少一个表达式为真。 如果至少一个表达式为 true,则返回 true;如果全部为 false,则返回 false。

参数 类型 Description
value 布尔 要检查的第一个表达式
值。。。 布尔 要检查的 rest 表达式
返回值类型 Description
布尔 当至少一个表达式为 true 时返回 true。 当所有表达式均为 false 时返回 false。

Examples

这些示例检查是否至少一个表达式为真:

or(equals(1, 1), equals(1, 2))
or(equals(1, 2), equals(1, 3))
or(equals(1, 2))

并返回以下结果:

  • 第一个示例:至少一个表达式为 true,所以此函数返回 true
  • 第二个示例:两个表达式均为 false,所以此函数返回 false
  • 第三个示例:表达式为 false,因此函数返回 false

以...开始

检查字符串是否以特定的子字符串开头。 当找到该子字符串时返回 true,找不到时返回 false。 此函数区分大小写。

参数 类型 Description
文本消息 字符串 要检查的字符串
searchText 字符串 要查找的起始子字符串
返回值类型 Description
布尔 当找到起始子字符串时返回 true。 找不到时返回 false。

示例 1

此示例检查“hello world”字符串是否以“hello”子字符串开头:

startsWith('hello world', 'hello')

并返回以下结果:true

示例 2

此示例检查“hello world”字符串是否以“greetings”子字符串开头:

startsWith('hello world', 'greetings')

并返回以下结果:false

字符串

此函数返回值的字符串版本。

参数 类型 Description
value 任意 要转换的值
返回值类型 Description
字符串 指定值的字符串版本。 如果 value 参数为 null,则此值将作为空字符串返回, (“”) 值。

Examples

以下示例将输入值转换为字符串:

string('abc')
string(true)
string(createArray())

并返回以下结果:

  • 第一个示例:输入值为字符串,因此返回标识值 'abc'
  • 第二个示例:布尔值的字符串版本是大写的,因此函数返回 'True'
  • 第三个示例:数组或对象转换为 JSON 形式,因此函数返回 '[]'

后续步骤

有关工作流的详细信息,请参阅以下文章: