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); string measurementName = ActionHelpers.GetInputValue <string>("measurementname", localContext.PluginExecutionContext, localContext.TracingService); float? measurementValue = ActionHelpers.GetFloatInput("measurementvalue", localContext.PluginExecutionContext, localContext.TracingService); if (string.IsNullOrEmpty(name)) { localContext.TracingService.Trace("Name must be populated"); ActionHelpers.SetOutputParameters(localContext.PluginExecutionContext.OutputParameters, false, "Name must be populated"); return; } string measurementNameValidationResult = AiEvent.ValidateMeasurementName(measurementName); if (!string.IsNullOrEmpty(measurementNameValidationResult)) { localContext.TracingService.Trace(measurementNameValidationResult); ActionHelpers.SetOutputParameters(localContext.PluginExecutionContext.OutputParameters, false, measurementNameValidationResult); return; } Dictionary <string, double> measurements = new Dictionary <string, double> { { measurementName, Convert.ToDouble(measurementValue) } }; bool result = aiLogger.WriteEvent(name, measurements); 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 EventTest() { 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); Dictionary <string, double> measurements = new Dictionary <string, double> { { "Click1", 33 } }; bool result = aiLogger.WriteEvent("Hello from EventTest - 0", measurements); Assert.IsTrue(result); }
protected override void ExecuteCrmPlugin(LocalPluginContext localContext) { //if (localContext.PluginExecutionContext.MessageName != "Update") return; if (localContext.PluginExecutionContext.PrimaryEntityName == "plugintracelog" || localContext.PluginExecutionContext.PrimaryEntityName.Substring(0, 3) == "sdk") { return; // abort plugin if not needed. } try { if (localContext.PluginExecutionContext.MessageName.Equals("update", StringComparison.InvariantCultureIgnoreCase) && localContext.PluginExecutionContext.Stage == 10) { if (!localContext.PluginExecutionContext.InputParameters.ContainsKey("ConcurrencyBehavior")) { localContext.PluginExecutionContext.InputParameters["ConcurrencyBehavior"] = ConcurrencyBehavior.Default; } } AiLogger aiLogger = new AiLogger( _unsecureConfig, localContext.OrganizationService, localContext.TracingService, localContext.PluginExecutionContext, localContext.PluginExecutionContext.Stage, null); var measurements = new Dictionary <string, double> { { "Stage", localContext.PluginExecutionContext.Stage } }; aiLogger.WriteEvent("XRM Message", measurements); } catch (Exception e) { localContext.TracingService.Trace($"Unhandled Exception: {e.Message}"); //throw; //ActionHelpers.SetOutputParameters(localContext.PluginExecutionContext.OutputParameters, false, e.Message); } }
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); string measurementName = MeasurementName.Get(context); double measurementValue = MeasurementValue.Get(context); string measurementNameValidationResult = AiEvent.ValidateMeasurementName(measurementName); if (!string.IsNullOrEmpty(measurementNameValidationResult)) { localContext.TracingService.Trace(measurementNameValidationResult); LogSuccess.Set(context, false); return; } Dictionary <string, double> measurements = new Dictionary <string, double> { { measurementName, Convert.ToDouble(measurementValue) } }; bool logSuccess = aiLogger.WriteEvent(name, measurements); LogSuccess.Set(context, logSuccess); }