protected override void ExecuteCrmWorkFlowActivity(CodeActivityContext context, LocalWorkflowContext localContext) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (localContext == null) { throw new ArgumentNullException(nameof(localContext)); } string aiSetupJson = AiSetupJson.Get(context); AiLogger aiLogger = new AiLogger(aiSetupJson, localContext.OrganizationService, localContext.TracingService, localContext.WorkflowExecutionContext, null, localContext.WorkflowExecutionContext.WorkflowCategory); string name = Name.Get(context); int value = MetricValue.Get(context); int? count = Count.Get(context); int? min = Min.Get(context); int? max = Max.Get(context); int stdDev = StdDev.Get(context); bool logSuccess = aiLogger.WriteMetric(name, value, count, min, max, stdDev); LogSuccess.Set(context, logSuccess); }
protected override void ExecuteCrmPlugin(LocalPluginContext localContext) { if (localContext == null) { throw new ArgumentNullException(nameof(localContext)); } try { AiLogger aiLogger = new AiLogger(_unsecureConfig, localContext.OrganizationService, localContext.TracingService, localContext.PluginExecutionContext, localContext.PluginExecutionContext.Stage, null); string name = ActionHelpers.GetInputValue <string>("name", localContext.PluginExecutionContext, localContext.TracingService); int? value = ActionHelpers.GetInputValue <int?>("value", localContext.PluginExecutionContext, localContext.TracingService); int? count = ActionHelpers.GetInputValue <int?>("count", localContext.PluginExecutionContext, localContext.TracingService); int? min = ActionHelpers.GetInputValue <int?>("min", localContext.PluginExecutionContext, localContext.TracingService); int? max = ActionHelpers.GetInputValue <int?>("max", localContext.PluginExecutionContext, localContext.TracingService); int? stdDev = ActionHelpers.GetInputValue <int?>("stddev", localContext.PluginExecutionContext, localContext.TracingService); if (string.IsNullOrEmpty(name) || value == null) { var errorMessage = string.IsNullOrEmpty(name) ? "Name must be populated" : "Value must be populated"; localContext.TracingService.Trace(errorMessage); ActionHelpers.SetOutputParameters(localContext.PluginExecutionContext.OutputParameters, false, errorMessage); return; } bool result = aiLogger.WriteMetric(name, (int)value, count, min, max, stdDev); ActionHelpers.SetOutputParameters(localContext.PluginExecutionContext.OutputParameters, result, null); } catch (Exception e) { localContext.TracingService.Trace($"Unhandled Exception: {e.Message}"); ActionHelpers.SetOutputParameters(localContext.PluginExecutionContext.OutputParameters, false, e.Message); } }
public void MetricTest() { AiSetup aiSetup = Configs.GetAiSetup(false, false, false, false, false, false, true); string secureConfig = SerializationHelper.SerializeObject <AiSetup>(aiSetup); XrmFakedTracingService fakedTracingService = new XrmFakedTracingService(); XrmFakedContext context = new XrmFakedContext(); IOrganizationService fakedService = context.GetOrganizationService(); XrmFakedPluginExecutionContext xrmFakedPluginExecution = new XrmFakedPluginExecutionContext(); Guid userId = Guid.Parse("9e7ec57b-3a08-4a41-a4d4-354d66f19b65"); xrmFakedPluginExecution.InitiatingUserId = userId; xrmFakedPluginExecution.UserId = userId; xrmFakedPluginExecution.CorrelationId = Guid.Parse("15cc775b-9ebc-48d1-93a6-b0ce9c920b66"); xrmFakedPluginExecution.PrimaryEntityName = "account"; xrmFakedPluginExecution.PrimaryEntityId = Guid.Parse("f14c4d40-96e9-40a5-95b7-4028af9605de"); xrmFakedPluginExecution.MessageName = "Update"; xrmFakedPluginExecution.Mode = 1; xrmFakedPluginExecution.Depth = 1; xrmFakedPluginExecution.OrganizationName = "test.crm.dynamics.com"; xrmFakedPluginExecution.Stage = 40; xrmFakedPluginExecution.OperationCreatedOn = DateTime.Now; xrmFakedPluginExecution.InputParameters = new ParameterCollection { new KeyValuePair <string, object>("Param1", "test"), new KeyValuePair <string, object>("Param2", 34) }; AiLogger aiLogger = new AiLogger(secureConfig, fakedService, fakedTracingService, xrmFakedPluginExecution, xrmFakedPluginExecution.Stage, null); bool result = aiLogger.WriteMetric("Hello from MetricTest - 0", 55, null, null, null, null); Assert.IsTrue(result); }