我已经针对 CRM 2013 编写了一个自定义工作流事件。您不需要了解它的作用。我遇到的问题是,尽管实例化了 ITracingService
,我使用 Trace(...)
生成的任何跟踪内容方法在运行时被混淆 仅适用于实时工作流 .换句话说,如果我异步运行我的工作流并(故意)抛出异常,我会在相应的系统作业记录中看到跟踪日志。如果我只是将工作流切换为“实时”(同步),那么我仍然会收到异常并且仍然会收到任何自定义异常文本,但是当然没有相应的 systemjob
为实时工作流生成,因此,就像插件一样,我在发生异常时显示的可下载日志文件中寻找我的跟踪输出。在这种情况下,我的跟踪不可见,但我从(可能)承载工作流的父上下文中获得了似乎是 Microsoft 的跟踪日志 - 您可以看到它引用了我的工作流流程定义中的步骤:
[Microsoft.Crm.ObjectModel: Microsoft.Crm.Extensibility.InternalOperationPlugin]
[46f6cf4c-14ae-4f1e-98a1-eae99a37e95c: ExecuteWorkflow]
Starting sync workflow 'MyTestWorkflow', Id: ca8782b1-7ca4-e311-a055-6c3be5be5f78
Entering CreateStep1_step:
Entering CustomActivityStep2_step:
Sync workflow '__Test' terminated with error 'Unexpected exception from plug-in (Execute): My.Test.WF.DoSomething: System.NullReferenceException: Object reference not set to an instance of an object.'
在我的大会
My.Test.WF.DoSomething
我在调用时访问跟踪服务并立即通过 Trace()
开始写作。方法,例如_trace.Trace("Starting Greg's custom code...");
这只是一个例子,但重点是,我的跟踪在异步时有效,但在同步时“丢失”。
有任何想法吗?
最佳答案
相应工作流设计器表单上的流程 session 部分包含完整的异常消息。
关于dynamics-crm-online - 实时工作流的自定义工作流事件中缺少跟踪日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22203239/