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); } }
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); }
/// <summary> /// Reigsters a reaction. /// </summary> /// <param name="ev">The event on which func should be executed.</param> /// <param name="func">The reaction to the event.</param> protected void On(AiState state, AiEvent ev, Func<IEnumerable> func) { lock (_reactions) _reactions[state][ev] = func; }
/// <summary> /// Reigsters a reaction. /// </summary> /// <param name="ev">The event on which func should be executed.</param> /// <param name="func">The reaction to the event.</param> protected void On(AiState state, AiEvent ev, Func <IEnumerable> func) { lock (_reactions) _reactions[state][ev] = func; }