您可以通过在 Omnissa Intelligence、Omnissa Workspace ONE UEM 和 ServiceNow 中集成应用批准工作流来控制应用程序许可证的成本。
许多 Win32 应用程序的许可证价格高昂。您可以使用应用批准限制哪些用户可以安装这些应用程序以及控制这些资源的管理成本。
集成将多个系统组合在一起处理应用批准请求。
- Omnissa Workspace ONE UEM:管理应用程序并将其分发到设备上的 Omnissa Workspace ONE Intelligent Hub 目录。
- Omnissa Intelligence:在 ServiceNow 环境和 Workspace ONE UEM 部署之间进行通信。
- ServiceNow:管理请求和批准过程。
应用批准的处理过程是怎样的?
应用批准从用户请求在 Windows 设备上安装应用开始。
- 用户通过其设备上的 Workspace ONE Intelligent Hub 应用请求安装应用程序。
- Intelligence 将请求发送到 ServiceNow。这些请求包含有关用户、设备和请求的应用程序的信息。
- ServiceNow 根据流程(在 ServiceNow 中配置)和公司政策处理请求。
- ServiceNow 会将响应发送回 Intelligence。响应包括批准或拒绝。
- 批准会使应用程序自动安装。
- 拒绝会导致 Workspace ONE Intelligent Hub 中恢复为"请求"状态。
- 如果获得批准,Workspace ONE UEM 会将应用发送到 Workspace ONE Intelligent Hub,以便在设备上安装。
要求
在使用应用批准之前,请先配置列出的集成、系统和设置。
- 使用 Intelligence 所需的 Workspace ONE UEM 版本。
- 向 Intelligence 注册 Workspace ONE UEM。
- 具有 ServiceNow 实例与 ServiceNow Integration Hub 插件,并向 Intelligence 注册 ServiceNow。
- 使用 Hub 服务,并使用 Intelligent Hub 应用作为您的应用目录。
- 使用 Windows 设备。
- 使用在 Workspace ONE UEM 中管理的本机应用(内部、公共和已购买)。
- 了解 Workspace ONE UEM 中的应用分配。
Intelligence 在请求中发送的内容示例
要开始请求过程,Intelligence 会将一个请求(如示例代码)发送到 ServiceNow。请求包括有关请求安装的用户、设备和应用程序的详细信息。
{
"RequestId": "bffb4469-56fb-4141-9ab0-0897f65143ba",
"RequestFor": {
"UserId": "15",
"UserAttributes": {
"user_name": "username",
"last_name": "user",
"first_name": "name",
"email": "username@example.com"
}
},
"Domain": "${domain}",
"DeviceId": 123,
"DeviceProperties": {
"name": "Device Name",
"device_udid": "F11C43E8307092418D7D5B0D9B48F235",
"platform": "Windows 10"
},
"Notes": "Notes",
"CatalogItem": {
"Id": "267",
"Name": "App Name",
"Categories": null,
"Properties": {
"package_id": "{12345A78-40C1-2702-0000-000004000000}",
"version": "9.20.0",
"platform": "WinRT"
}
},
"DueDate": 1568989813956,
"Links": {
"ApprovalNotify": {
"Url": "<CallbackURL>"
}
}
}
1. 设置 ServiceNow 以处理入站应用请求
设置 ServiceNow 以处理入站、应用请求,以便您可以自定义实例和批准策略。此过程使用 ServiceNow 的脚本化 REST API 功能。
有关 ServiceNow 中的脚本化 REST API 的详细信息,请访问创建脚本化 REST API。
- 登录到 ServiceNow,然后使用所有搜索文本框,在系统 Web 服务区域中查找脚本化 REST API 功能。
- 完成以下配置。
- 名称:输入描述性名称,如
Workspace ONE App Approval。 - API ID:输入
appapproval。 - API 命名空间:记录此值,因为在此过程的步骤 5 中,您需要在 Intelligence 中输入该值。
- 名称:输入描述性名称,如
- 在资源选项卡上,完成以下配置。
- 添加资源。

- 名称:输入
Request。 - HTTP 方法:选择 POST。
- 相对路径:检查此条目是否为
/request。 - 资源路径:确保此字段为
/api/<namespace>/appapproval/request。- 如果路径未采用此格式,则请求将失败。
- 要进行修复,请检查脚本化 REST API 和资源的名称是否正确。
- 脚本:输入与环境匹配的脚本。
- 您可以自定义为部署提供的示例代码。
- 您可以在请求中创建一个 cart 项目,或者将用户名与您系统的 SYSID 相关联。
- 将值存储为 ServiceNow 请求的一部分。
- 如果存储值,则会在批准或拒绝请求票证后编译出站 API 请求。
- 添加资源。
脚本化 REST API 资源的示例代码
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var RequestID = request.body.data.RequestId;
var CallbackURL = request.body.data.Links.ApprovalNotify.Url;
var DeviceID = request.body.data.DeviceId;
var Notes = request.body.data.Notes;
var AppName = request.body.data.CatalogItem.Name;
var UserID = request.body.data.RequestFor.UserId;
var UserName = request.body.data.RequestFor.UserAttributes.user_name;
var FirstName = request.body.data.RequestFor.UserAttributes.first_name;
var LastName = request.body.data.RequestFor.UserAttributes.last_name;
gs.info("Request Recieved");
var create = new GlideRecord('sc_request');
create.initialize();
create.setValue('short_description',"Request for Installation of " + AppName);
create.setValue('description',FirstName + " " + LastName + " Requests Installation of " + AppName);
create.setValue('u_uem_callback_url',CallbackURL);
create.setValue('u_uem_notes',Notes);
create.setValue('u_uem_device_id',DeviceID);
create.setValue('u_uem_request_id',RequestID);
create.setValue('u_uem_user_id',UserID);
create.setValue('u_requesting_user',UserName);
create.insert();
response.setStatus(200);
})(request, response);
2. 在 ServiceNow 中将自定义字段添加到请求票证
使用 ServiceNow 中的表格将自定义字段添加到应用请求票证。自定义字段有助于编译发送到 Intelligence 的出站批准和拒绝 API 请求。
-
在 ServiceNow 管理控制台顶部的所有搜索文本框中,输入
Tables并滚动以选择系统定义 > 表。 -
在名称搜索文本框中,输入
sc_request以查找请求定义。 -
选择请求表。
-
通过添加系统返回到 Intelligence 的所需值来添加列,并在 API 请求中添加相应的值。输入完值后,选择更新并保存表。
类型 列标签 列名称 最大长度 字符串 UEM 回调 URL u_uem_callback_url 2048 整数 UEM 设备 ID u_uem_device_id 40 字符串 UEM 请求 ID u_uem_request_id 40 整数 UEM 用户 ID u_uem_user_id 40 字符串 请求用户 u_requesting_user 40 字符串 UEM 说明 u_uem_notes 4000 
或者,您可以使用 ServiceNow 控制台区域系统 UI > 表单区域来隐藏 UI 中的列和值。隐藏列和值会将其设置为仅在 API 请求中使用。
3. 在 ServiceNow 中配置批准操作
使用流程设计器 Workflow Studio 为发送到 Intelligence 的批准或拒绝响应添加操作,以安装适用的 UEM 应用程序。
- 在 ServiceNow 中,使用全部搜索文本框查找流程设计器。
- 选择新建,然后选择操作。
您现在位于控制台的 Workflow Studio 区域中。 - 完成以下设置以开始使用操作。
- 对于操作名称,输入有助于标识操作的名称。例如,您可以输入 AppName-AppApproval 。
- 除非您要配置其他设置,否则可以保留其他选项的默认设置。例如,您可以添加描述或选择类别 > 服务目录。
- 选择构建操作以继续。
- 使用创建输入菜单选项,为操作配置输入。添加列出的输入。
- 请求 ID
- 设备 ID
- 更新者
- 备注
- 更新时间
- 回调 URL
- 审批
- 通过在操作大纲部分选择加号 (+) 并搜索
script来添加脚本步骤。脚本步骤会将批准状态字符串转换为大写,以便为 API 调用做准备。
- 所需运行时:您可以将此字段保留为实例。
- 输入变量:使用创建变量菜单选项定义输入变量名称 >
approval_status和值 > 操作 > 批准。 - 脚本:添加示例代码以将批准状态转换为大写。
(function execute(inputs, outputs) { var approval_lc = inputs.approval_status; outputs.approvalstatus = approval_lc.toUpperCase(); })(inputs, outputs);- 如果此步骤失败:保留默认值停止操作并转到错误评估。
- 向操作添加 REST 步骤。
- 完成连接详细信息。
- 连接:选择使用连接别名。
- 连接别名:从下拉列表中选择适用的别名。
- 基本 URL:使用锁定按钮解锁并覆盖基本 URL。然后,使用数据选择器选择输入 > 回调 URL。
- 完成列出的请求详细信息。将其他设置保留为默认值。
- 构建请求:选择从 REST 消息。
- HTTP 方法:选择 POST。
- 标头:名称 =
Content-Type,值 =application/json
- 完成请求内容部分。
- 请求类型:选择文本。
- 请求正文 [文本]:添加列出的脚本。
{ "data":{ "request_id": "action-Request ID", "device_id": "action-Device ID", "approval_status": "step-Script step-ApprovalStatus", "updated_by": "action-Updated By", "notes" : "action-Notes", "updated_at" : "action-Updated At" } }
- 完成连接详细信息。
- 通过使用创建输出选项添加输出,将标签 >
ApprovalStatus添加为字符串。 - 保存操作。
4. 在 ServiceNow 中创建流程
在 ServiceNow 中,根据您组织的批准策略,创建具有批准操作的流程。
访问创建工作流,阅读有关在 ServiceNow 中工作的最新文档。
- 使用全部搜索文本框查找流程设计器。
- 选择新建,然后选择流程。
您现在位于控制台的 Workflow Studio 区域中。 - 为流程命名并开始构建该流程。
- 完成触发设置。
- 在触发器文本框中,选择已更新以查找票证状态的更改。
- 对于表,搜索并选择请求 [sc_request]。
- 将条件定义为
[Approval - is one of - Approved, Rejected]和[UEM Callback URL - is not empty]。 - 对于运行触发器,选择一次。
- 添加操作。
- 在操作属性中,添加您在步骤 3 中创建的 AppName-AppApproval 操作。
- 在操作输入中,使用与所需操作输入匹配的触发器 - 记录已更新 > 请求记录 > 选项添加相应的值。
- 保存并激活流程,然后检查该流程是否已发布。
5. 将脚本式 REST API 命名空间添加到 Intelligence
- 在 Intelligence 中,转到集成 > 工作流连接器 > ServiceNow。
- 编辑连接以包含 API 命名空间。您在将脚本化 REST API 添加到 ServiceNow 时已记录了此值。

6. 需要在 UEM 中批准
若需批准,请在 Workspace ONE UEM 中添加或编辑应用分配。添加或编辑应用分配以要求批准时会激活用户,请求使用 Workspace ONE Intelligent Hub 在 Windows 设备上安装应用。
有关在 UEM 中添加和编辑应用分配的详细信息,请访问添加分配项和排除项到应用程序。
- 在 Workspace ONE UEM Console 中,导航到相应的应用并添加或编辑分配。
- 在分发选项卡上,激活需要批准才能安装菜单选项。

在设备上
在设备上的 Workspace ONE Intelligent Hub 应用目录中,用户选择应用,然后可以请求从目录访问该应用。用户可以输入理由来启动应用请求过程。在适当人员通过 ServiceNow 批准请求后,系统将会安装该应用。
UEM 应用批准状态
设备上的 Workspace ONE UEM console 和 Workspace ONE Intelligent Hub 中的状态表示请求和批准过程中应用批准的特定步骤。
管理员可以在 Workspace ONE UEM console 中,通过选择需要批准的应用或选择请求应用的设备,在资源>应用区域或设备区域中查看应用批准状态。
| 状态 | 说明 |
|---|---|
| 待审批 | 用户已请求安装应用程序。通过 Intelligence,ServiceNow 为管理员创建了一个票证以批准安装。该票证在 ServiceNow 系统中等待批准。 |
| 已发送安装命令 | 管理员已批准安装。通过 Intelligence,Workspace ONE UEM 向数据库发送安装命令。设备已使用命令。 |
| 已安装 | 设备向 Workspace ONE UEM 报告应用程序已成功安装。 |
| 已拒绝 | 管理员已拒绝安装相关的 ServiceNow 票证。用户必须重新请求安装应用程序。 |
| 已过期 | 管理员未在 14 天内批准或拒绝 ServiceNow 票证。用户必须重新请求安装应用程序。 |
| 错误 | 应用批准系统在过程中遇到错误。该错误已停止此过程。用户必须重新请求安装应用程序。 |
Workspace ONE Intelligent Hub 应用批准状态
用户通过 Workspace ONE Intelligent Hub 访问应用。他们可选择请求以启动安装。启动请求后,Workspace ONE Intelligent Hub 将显示一种状态来确定安装请求在过程中的位置。
| 状态 | 说明 |
|---|---|
| 请求 | 管理员上载了应用程序,并在应用分配中启用了"需要批准安装"。 |
| 待定 | Intelligence 收到来自 Workspace ONE UEM 的请求,并将该请求发送到 ServiceNow。ServiceNow 针对安装批准创建了一个票证。系统等待管理员批准。 |
| 正在安装 | 管理员批准了安装相关的 ServiceNow 票证,且 Workspace ONE UEM 数据库已启动安装命令。 |
| 已安装 | 设备向 Workspace ONE UEM 报告应用程序已成功安装。 |
此页面对您有帮助吗?