예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
            }
        }
예제 #4
0
        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);
        }