使用 SCSM Orchestrator 集成包的关系
使用 SCSM 集成包的关系可能有点棘手,因此本博文打算提供一些诀窍。
首先,使用 Service Manager 以理解数据模型时,这非常重要。看看 SM Job Aids 程序包(更多信息)中随附的数据模型图表,了解有关现成可用的模型中存在的类、属性和关系的详细信息。请记住,当您在 Runbook 中配置活动时,Orchestrator 集成包会反映此数据模型。探讨数据模型的另一种有用方法是使用 PowerShell(更多信息)。
其次,如果您尚未观看下面两个演示视频,强烈建议观看它们,以了解有关使用 SCSM 和 Orchestrator 自动实现服务请求所需的背景信息:
演示:使用 Orchestrator 从 SCSM 服务目录中自动实现服务请求
演示:使用 Orchestrator 从 SCSM 服务目录中自动实现服务请求 – 真实示例
在本博文中,我们将处理当您试图使用 SCSM(服务目录和服务请求)自动实现服务请求时的一个相当常见的场景。该场景会将发出请求的用户添加到 Active Directory 中的一个特定组。
数据模型的相关部分如下所示(已简化):
Runbook 活动将启动 Orchestrator Runbook 并且会将一段数据通过“初始化数据”活动传递给 Runbook – Runbook 活动工作项 GUID:
Orchestrator 中的配置:
SCSM 中的配置:
因此,现在当 Runbook 启动时,它首先会准确了解它是由哪个 Runbook 活动工作项触发的。从中我们可以找出与之相关的组(即发出请求的用户应添加到的组)。
我们还可以找出父服务请求(请参阅上面的超链接),然后我们可以从服务请求遍历到受影响的用户。
因此,我们的 Runbook 在较高层次上如下所示:
下面是每个活动执行的任务:
初始化数据 – 获取如上所述的 Runbook 活动工作项 GUID。
获取组关系 – 此活动可找到与 Runbook 活动工作项相关的特定类(本例中为 Active Directory 组类)的所有对象。通过“初始化数据”活动传递的 Runbook 活动工作项 GUID 用作起点。
获取组对象 – 这会采用“获取组关系”活动的输出,并使用“获取组关系”活动返回的相关对象 GUID 实际获取组对象本身。
我们来回顾一下…
现在我们要执行基本相同的任务来获取父服务请求。
获取父 SR 关系 - 此活动获取 Runbook 活动工作项与服务请求之间的关系。
获取父 SR – 此活动使用“获取父 SR 关系”活动的输出实际获取 SR 对象。
好了,让我们在这里暂停一下,看看到目前为止所有这些活动的配置:
到目前为止,这应该看起来非常简单。现在会变得有点棘手。接下来我们要做的是从服务请求遍历到受影响的用户并获取该对象。
获取用户关系 – 此活动获取服务请求和受影响用户之间的关系。
获取用户对象 – 此活动获取实际的用户对象。
配置对话框:
似乎一样,对吧?并非完全一样! 这里存在一个难题。
请注意,在“获取组关系”配置中我指向“Active Directory 组”类的方式。
以及在“获取用户关系”活动中我指向“Active Directory 用户”或“Active Directory 组”类的方式。
实际上对于此场景,唯一可能的情况是,将与 Runbook 活动工作项关联的 Active Directory 组只是那些通过“有关配置项的工作项”关系类型关联的组。
对于将与用户类关联的服务请求,这两个类之间实际上有多种关系类型。事实上,现成可用的数据模型中有三种:
请记住,在“获取用户关系”活动中,我将提供的唯一配置是源类(服务请求)、源对象 GUID(服务请求 GUID)以及目标类(用户)。如果“创建用户”关系指向 Bob,“分配给”关系指向 Sally,“受影响的用户”指向 Donna,那么 Orchestrator 如何知道我要查找受影响的用户 Donna??
下面是将发生的情况。Orchestrator 将获取属于与服务请求相关的用户类的所有相关对象并将其作为已发布数据放在数据总线上。如果您打开 Runbook Tester 并运行此 Runbook,您将在输出中看到如下信息:
这些 … 表示存在一组属性值,而不只是一个。如果双击 …,可看到采用表格格式的输出:
因此,在本例中,通过查看相关对象 GUID,您可看到“受影响的用户”和“创建用户”是同一用户,而“分配给用户”是不同用户。现在,我们要做的是筛选在数据总线上传递的对象列表,以便只传递受影响的用户并删除其他所有对象。
为此,我们右键单击“获取用户关系”活动生成的链接并选择“属性”:
然后单击“排除”选项卡和“添加”按钮以添加排除筛选器。单击第一个链接并将其设置为“关系类”,将运算符更改为“不等于”,然后单击最后一个链接并键入“受影响的用户”(与您在上面的表中看到的完全一样)。
这将立即筛选出“分配给用户”和“创建用户”并且仅在数据总线上传递“受影响的用户”。
这就是诀窍!其余部分就很简单了。
就是这样!
还有一个窍门。正如上面向您演示的,您需要使用相关关系类型的显示名称。您可以通过使用 SMLets 查找关系类型显示名称。首先,在本博文开头链接到的数据模型的 Visio 图表中查找内部名称。例如,显示名称为“受影响的用户”的关系类型称为 System.WorkItemAffectedUser。然后您可以在 SMLets 中运行如下命令:
如果您不确定关系的确切内部名称,但您可能知道其中包括的一些字词,还可以借助 SMLets 使用部分名称进行快速搜索: