示例:Azure意识自定义插件
发布日期: 2017年1月
适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online
这是可以将管道执行上下文发布到 Microsoft Azure 服务总线的示例自定义插件。
此示例代码适用于 Microsoft Dynamics 365(在线或本地)。下载 Microsoft Dynamics CRM SDK 包。 它可能位于下载包的以下位置:
SampleCode\CS\Azure\Plug-ins\SandboxPlugin.cs
要求
有关运行此 SDK 中提供的示例代码的要求的详细信息,请参阅使用示例和帮助程序代码。
演示
该插件演示如何从 Execute 方法的服务提供程序参数获取执行上下文和跟踪服务。 该插件然后将上下文发布到 Microsoft Azure 服务总线终结点并向跟踪日志中写入信息以便进行调试。
示例
using System;
using System.Diagnostics;
using System.Threading;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using Microsoft.Xrm.Sdk;
namespace Microsoft.Crm.Sdk.Samples
{
/// <summary>
/// A custom plug-in that can post the execution context of the current message to the Windows
/// Azure Service Bus. The plug-in also demonstrates tracing which assist with
/// debugging for plug-ins that are registered in the sandbox.
/// </summary>
/// <remarks>This sample requires that a service endpoint be created first, and its ID passed
/// to the plug-in constructor through the unsecure configuration parameter when the plug-in
/// step is registered.</remarks>
public sealed class SandboxPlugin : IPlugin
{
private Guid serviceEndpointId;
/// <summary>
/// Constructor.
/// </summary>
public SandboxPlugin(string config)
{
if (String.IsNullOrEmpty(config) || !Guid.TryParse(config, out serviceEndpointId))
{
throw new InvalidPluginExecutionException("Service endpoint ID should be passed as config.");
}
}
public void Execute(IServiceProvider serviceProvider)
{
// Retrieve the execution context.
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
// Extract the tracing service.
ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
if (tracingService == null)
throw new InvalidPluginExecutionException("Failed to retrieve the tracing service.");
IServiceEndpointNotificationService cloudService = (IServiceEndpointNotificationService)serviceProvider.GetService(typeof(IServiceEndpointNotificationService));
if (cloudService == null)
throw new InvalidPluginExecutionException("Failed to retrieve the service bus service.");
try
{
tracingService.Trace("Posting the execution context.");
string response = cloudService.Execute(new EntityReference("serviceendpoint", serviceEndpointId), context);
if (!String.IsNullOrEmpty(response))
{
tracingService.Trace("Response = {0}", response);
}
tracingService.Trace("Done.");
}
catch (Exception e)
{
tracingService.Trace("Exception: {0}", e.ToString());
throw;
}
}
}
}
另请参阅
IPlugin
IPluginExecutionContext
ITracingService
Microsoft Dynamics 365 和 Microsoft Azure 整合的示例代码
示例:Azure意识自定义工作流活动
编写插件
Microsoft Dynamics 365
© 2017 Microsoft。 保留所有权利。 版权