在 Unified Service Desk 中使用 scriptlet 执行脚本
发布日期: 2016年11月
适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2013,Dynamics CRM 2015,Dynamics CRM 2016
Scriptlet 是在替换参数使用特定语法时执行的 JavaScript 片段。 有时系统生成的替换参数包含这些函数所需的相应数据,但可能不包括所需格式的数据。 例如,在计算机电话集成 (CTI) 中,电话号码通常以数字字符串从电话系统送达,如“3035551212”,不带任何格式。 但是,Microsoft Dynamics 365 将电话号码存储为通常包括格式字符(如 (303) 555-1212 中的破折号)的字符串。 如果您要使用电话系统直接提供的数据搜索您的 Dynamics 365 实体,则细微的更改就会发现匹配项。 在 Unified Service Desk 中使用 scriptlet 解决此问题。
本主题内容
如何使用 scriptlets?
请从 Scriptlet 参阅全局托管控件
如何使用 scriptlets?
您可以在 Microsoft Dynamics 365 的“Scriptlet”区域(“设置” >“Scriptlet”)中定义 scriptlet。 在定义 scriptlet 后,您可以在作为操作调用的查询或参数的替换参数的以下格式中使用 scriptlet。
[[script.<Scriptlet_Name>]]
当系统看到以 script. 开头的替换参数,它将在您的 scriptlet 列表中查找与随后文本名称相匹配的脚本。 如果系统找到具有指定名称的 scriptlet,它首先将替换在该脚本中的参数,然后执行脚本作为 JavaScript 表达式。 表达式的值将用于替换上面替换中的值。
警告
如果 scriptlet 中的替换参数包含其他 scriptlet 替换等,直到它创建一个循环,则会导致系统不断替代参数直到堆栈溢出。 因此,强烈建议您从不在 scriptlet 使用 [[script.ReplacementParameters]]。
请从 Scriptlet 参阅全局托管控件
在执行过程中,Scriptlet 可以引用全局托管控件方法。 启动时所有全局 (非动态) 托管控件作为可编写脚本的对象添加到 scriptlet 引擎。 由于 JavaScript 不能引用有空格的名称,scriptlet 引擎将自动以“_”下划线来替换全局托管控件名称中的空格。 因此您可以使用以下有效的 JavaScript。
Connection_Manager.ConfigurationReader.ReadAppSettings(“maxNumberOfSessions”);
全局管理器存在特殊的案例情况。 其还可以通过 CRMGlobalManager 引用,这与配置中的命名无关。
如果 (CRMGlobalManager.SessionCount == 0) //不会加载客户会话。 只加载全局会话。
备注
通过此方法只可访问公用函数。
考虑下这种情况:您要在“会话行”组件显示会话概述信息,但信息实际位于外部系统,则通过 Web 服务进行访问,而不是在 Dynamics 365 服务器中可用。 您可以创建托管控件以访问调用外部 Web 服务的公用函数。 然后您配置此托管控件作为全局托管控件并将其放置在 HiddenPanel 上。 现在从 scriptlet 此函数和 Web 服务调用可用。 然后您可以创建以下 scriptlet 来调用您的新函数。
My_Global_Application.CallExternalWebService(“[[account.accountnumber]$]”);
此代码将客户编号作为第一参数从客户传递到您的函数。 如果命名 scriptlet“调用 Web 服务”,则您可以使用以下“会话行”来显示 Web 服务调用的结果。
<Grid Margin="0"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
xmlns:CCA="clr-namespace:Dynamics;assembly=Dynamics">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Label Margin="3,0,5,3" Content="Web Service Data" Padding="0" Grid.Row="4" HorizontalAlignment="Right" FontFamily="Tohoma" FontSize="12" FontWeight="Bold" />
<TextBlock Text="[[script.Call Web Service]]" Margin="0" Grid.Column="1" Grid.Row="4" Padding="3,0,0,3" FontFamily="Tohoma" FontSize="12"/>
</Grid>
另请参阅
Unified Service Desk 2.0
© 2017 Microsoft。 保留所有权利。 版权