是否可以使用CRM 2013软件包部署程序收集用户输入
本文关键字:程序 用户 输入 部署 软件包 可以使 CRM 2013 是否 | 更新日期: 2023-09-27 18:25:25
Packagedeployer是一个很好的工具(毫无疑问),但在某些情况下,收集用户信息会非常有帮助,使我们能够语法地应用一些配置,这些现在是手动安装后过程的一部分。
文档中提到了RootControlDispatcher:
这是一个调度器接口,用于允许控件在包部署期间呈现自己的UI。您可以使用此接口包装任何UI元素或命令。在使用此变量之前,请检查其是否为空值,这一点很重要,因为它可能被设置为值,也可能未被设置为
这是要走的路吗?这几乎就是文档中对它的描述。
是的,这可以在使用UI客户端进行部署时完成。但是,如果使用powershell进行部署,它将不起作用。这就是为什么您必须检查以确保RootControlDispatcher不是null。
您可以在CRM SDK的UII部分的CCA示例包中看到这方面的示例。CCA使用自定义UI来捕获非英语语言的CSR安全角色信息。
如果找不到安全角色,它会弹出一个对话框,询问用户角色
它的做法如下:
RootControlDispatcher.Invoke((Action)(() =>
{
// Load all Roles and asks the user to choose.
SecurityRoleSelector selFrm = new SecurityRoleSelector();
if (selFrm.RolesDataModel != null)
{
selFrm.RolesDataModel.items.Clear();
// Get the items for the control.
SearchFilter.Clear();
var sL = rslts.Values.OrderBy(w => CrmSvc.GetDataByKeyFromResultsSet<string>(w, "name"));
foreach (var rol in sL)
{
selFrm.RolesDataModel.items.Add(new CrmSecurityRoles()
{
RoleId = CrmSvc.GetDataByKeyFromResultsSet<Guid>(rol, "roleid"),
RoleName = CrmSvc.GetDataByKeyFromResultsSet<string>(rol, "name")
});
}
if (selFrm.ShowDialog().GetValueOrDefault(false))
{
// user selected an item.
if (selFrm.RolesControl.cbSelectedItem.SelectedItem != null)
{
CrmSecurityRoles role = (CrmSecurityRoles)selFrm.RolesControl.cbSelectedItem.SelectedItem;
guCSRManagerRoleId = role.RoleId;
}
}
}
selFrm.Close(); // Clean up form.
}), DispatcherPriority.Normal , null);
securityroleselector表单是一个带有下拉列表的简单对话框。
一旦它有了数据,它就被用来更新正确的安全角色,使用这样的逻辑:
if (guCSRManagerRoleId == Guid.Empty)
{
// Error Something wrong here..
RaiseUpdateEvent(CCADemoExtension.Resources.LocalResourcesCCADemoExt.RAISEUPDATEVENT_COULDNOTFIND_CSRMGRROLEINCRM_MSG, ProgressPanelItemStatus.Failed);
PackageLog.Log("Could not find CSR Manager Role in CRM", System.Diagnostics.TraceEventType.Error);
PackageLog.Log("RunUiiSpecificChanges", System.Diagnostics.TraceEventType.Stop);
return false;
}
// Check to see if they are already associated...
if (!IsRoleAssoicatedWithTeam(EscalationTeamId, guCSRManagerRoleId))
{
// Try to assign team.
CrmSvc.CreateEntityAssociation("team", guTeamId, "role", guCSRManagerRoleId, "teamroles_association");
}
希望能有所帮助。