Пример #1
0
        static IDictionary <string, object> SampleCodeActivityExecute(CrmServiceClient client, Guid userId)
        {
            var myActivity = new TestActivity();
            var context    = new CodeActivityContextFake();

            context = new CodeActivityContextFake();
            context.InitiatingUserId  = userId;
            context.UserId            = userId;
            context.PrimaryEntityName = "opportunity";
            context.PrimaryEntityId   = new Guid("2A2B61B9-1234-ABCD-7891-B3223BFC9624");
            var inputs = new Dictionary <string, object>();

            inputs.Add(nameof(myActivity.StringInputOutput), "some string input");
            inputs.Add(nameof(myActivity.IntInputOutput), 858);
            inputs.Add(nameof(myActivity.LookupInputOutput), new EntityReference("account", new Guid()));
            inputs.Add(nameof(myActivity.BoolInputOutput), true);
            inputs.Add(nameof(myActivity.DateInputOutput), new DateTime(2018, 9, 12));
            inputs.Add(nameof(myActivity.DecimalInputOutput), (decimal)10.23);
            inputs.Add(nameof(myActivity.MoneyInputOutput), new Money(10));

            return(CodeActivityExecutor.Execute(myActivity, client, context, inputs));
        }
        public static IDictionary <string, object> Execute(
            CodeActivity workflow
            , CrmServiceClient service, CodeActivityContextFake context, Dictionary <string, object> inputs
            , ITracingService tracingService = null
            , IServiceEndpointNotificationService notificationService = null
            )
        {
            WorkflowInvoker invoker = new WorkflowInvoker(workflow);

            invoker.Extensions.Add <IOrganizationService>(() => service);
            invoker.Extensions.Add <IWorkflowContext>(() => context);
            if (tracingService != null)
            {
                invoker.Extensions.Add <ITracingService>(() => tracingService);
            }
            else
            {
                invoker.Extensions.Add <ITracingService>(() => new TracingServiceFake());
            }

            ServiceFactoryFake serviceFactory = new ServiceFactoryFake();

            serviceFactory.service = (IOrganizationService)service?.OrganizationServiceProxy;
            invoker.Extensions.Add <IOrganizationServiceFactory>(() => serviceFactory);

            if (notificationService != null)
            {
                invoker.Extensions.Add <IServiceEndpointNotificationService>(() => notificationService);
            }
            else
            {
                invoker.Extensions.Add <IServiceEndpointNotificationService>(() => new ServiceEndpointNotificationServiceFake());
            }

            return(invoker.Invoke(inputs));
        }