コード例 #1
0
 /// <summary>
 /// Creates an activity that sends an HTTP Request
 /// </summary>
 /// <param name="setup">Sets the properties of the SendHttpRequest activity</param>
 /// <returns>The <see cref="IActivityBuilder"/> with the <see cref="Http.SendHttpRequest"/> activity built onto it.</returns>
 /// <inheritdoc cref="BuilderExtensions.Then{T}(IBuilder, Action{ISetupActivity{T}}?, Action{IActivityBuilder}?, int, string?)"/>
 public static IActivityBuilder SendHttpRequest(
     this IActivityBuilder builder,
     Action <ISetupActivity <SendHttpRequest> > setup,
     Action <IActivityBuilder>?activity = default,
     [CallerLineNumber] int lineNumber  = default,
     [CallerFilePath] string?sourceFile = default) =>
 builder.Then(setup, activity, lineNumber, sourceFile);
コード例 #2
0
 public static IActivityBuilder Add <T>(
     this IActivityBuilder activityBuilder,
     Action <ISetupActivity <T> >?setup = default,
     [CallerLineNumber] int lineNumber  = default,
     [CallerFilePath] string?sourceFile = default)
     where T : class, IActivity =>
 activityBuilder.Add(typeof(T).Name, setup, lineNumber, sourceFile);
コード例 #3
0
 public CompetitionsController(ILogger <MessagesController> logger, IBotClientFactory botClientFactory, ICompetitionService competitionService, IActivityBuilder activityBuilder)
 {
     _logger             = logger;
     _botClientFactory   = botClientFactory;
     _competitionService = competitionService;
     _activityBuilder    = activityBuilder;
 }
コード例 #4
0
 /// <inheritdoc cref="SendHttpRequest(IActivityBuilder, Func{ActivityExecutionContext, Uri?}, Func{ActivityExecutionContext, string?}, Func{ActivityExecutionContext, string?}, Func{ActivityExecutionContext, string?}, Func{ActivityExecutionContext, string?}, Func{ActivityExecutionContext, HttpRequestHeaders}, Func{ActivityExecutionContext, bool}, Func{ActivityExecutionContext, ICollection{int}}, Action{IActivityBuilder}?, int, string?)"/>
 public static IActivityBuilder SendHttpRequest(
     this IActivityBuilder builder,
     Uri?url,
     string?method,
     string?content,
     string?contentType,
     string?authorization,
     HttpRequestHeaders requestHeaders,
     bool readContent,
     ICollection <int> supportedStatusCodes,
     Action <IActivityBuilder>?activity = default,
     [CallerLineNumber] int lineNumber  = default,
     [CallerFilePath] string?sourceFile = default) =>
 builder.SendHttpRequest(
     setup => setup
     .Set(x => x.Url, url)
     .Set(x => x.Method, method)
     .Set(x => x.Content, content)
     .Set(x => x.ContentType, contentType)
     .Set(x => x.Authorization, authorization)
     .Set(x => x.RequestHeaders, requestHeaders)
     .Set(x => x.ReadContent, readContent)
     .Set(x => x.SupportedStatusCodes, supportedStatusCodes),
     activity,
     lineNumber,
     sourceFile);
コード例 #5
0
 public static IActivityBuilder AddEfCoreConfigurationWorkflow(this IActivityBuilder builder)
 {
     return(builder
            /* Add entity property to DbContext */
            .Then <FileFinderStep>(
                step => { step.SearchFileName = new JavaScriptExpression <string>("`${ProjectInfo.Name}DbContext.cs`"); })
            .Then <TextGenerationStep>(step => { step.TemplateName = "DbContext_Property"; })
            .Then <DbContextStep>()
            .Then <FileModifierStep>()
            /* Add entity configuration to DbContextModelCreatingExtensions */
            .Then <TextGenerationStep>(step =>
     {
         step.TemplateName = "DbContextModelCreatingExtensions_Using";
         step.GeneratedTextKey = new LiteralExpression("ModelingUsingText");
     })
            .Then <TextGenerationStep>(step =>
     {
         step.TemplateName = "DbContextModelCreatingExtensions_EntityConfig";
         step.GeneratedTextKey = new LiteralExpression("EntityConfigText");
     })
            .Then <FileFinderStep>(
                step => step.SearchFileName = new LiteralExpression("*DbContextModelCreatingExtensions.cs")
                )
            .Then <DbContextModelCreatingExtensionsStep>()
            .Then <FileModifierStep>()
            );
 }
コード例 #6
0
 public static IActivityBuilder AddEfCoreConfigurationWorkflow(this IActivityBuilder builder)
 {
     return(builder
            /* Add entity property to DbContext class*/
            .Then <FileFinderStep>(
                step => { step.SearchFileName = new JavaScriptExpression <string>("`${ProjectInfo.Name}DbContext.cs`"); })
            .Then <DbContextClassStep>()
            .Then <FileModifierStep>()
            .IfElse(
                step => step.ConditionExpression = new JavaScriptExpression <bool>("ProjectInfo.TemplateType == 1"),
                ifElse =>
     {
         // For module, we also need to modify the IDbContext interface */
         ifElse
         .When(OutcomeNames.True)
         .Then <FileFinderStep>(
             step => { step.SearchFileName = new JavaScriptExpression <string>("`I${ProjectInfo.Name}DbContext.cs`"); })
         .Then <DbContextInterfaceStep>()
         .Then <FileModifierStep>()
         .Then("DbContextModel")
         ;
         ifElse
         .When(OutcomeNames.False)
         .Then("DbContextModel")
         ;
     }
                )
            /* Add entity configuration to DbContextModelCreatingExtensions */
            .Then <FileFinderStep>(
                step => step.SearchFileName = new LiteralExpression("*DbContextModelCreatingExtensions.cs")
                ).WithName("DbContextModel")
            .Then <DbContextModelCreatingExtensionsStep>()
            .Then <FileModifierStep>()
            );
 }
コード例 #7
0
ファイル: WorkflowBuilder.cs プロジェクト: zz110/elsa-core
 public IConnectionBuilder Connect(
     IActivityBuilder source,
     IActivityBuilder target,
     string outcome = default)
 {
     return(Connect(() => source, () => target, outcome));
 }
コード例 #8
0
 public static IActivityBuilder AddMigrationAndUpdateDatabaseWorkflow(this IActivityBuilder builder)
 {
     return(builder
            .Then <FileFinderStep>(
                step =>
     {
         step.SearchFileName = new LiteralExpression("*.EntityFrameworkCore.DbMigrations.csproj");
         step.ResultVariableName = new LiteralExpression("MigrationProjectFile");
     }
                )
            .Then <FileFinderStep>(
                step =>
     {
         step.SearchFileName = new LiteralExpression("*.Web.csproj");
         step.ResultVariableName = new LiteralExpression <string>("WebProjectFile");
     }
                )
            /* Add migration */
            .Then <RunCommandStep>(
                step => step.Command = new JavaScriptExpression <string>("`dotnet ef migrations add Added${EntityInfo.Name} -p \"${MigrationProjectFile}\" -s \"${WebProjectFile}\"`")
                )
            /* Update database */
            .Then <RunCommandStep>(
                step => step.Command = new JavaScriptExpression <string>("`dotnet ef database update -p \"${MigrationProjectFile}\" -s \"${WebProjectFile}\"`")
                )
            );
 }
コード例 #9
0
 public ComposeSendHandler(IDateTimeService dateTimeService, IActivityBuilder activityBuilder, IBotClientFactory botClientFactory, ICompetitionService competitionService, ITimerService timerService)
 {
     _dateTimeService    = dateTimeService;
     _activityBuilder    = activityBuilder;
     _botClientFactory   = botClientFactory;
     _competitionService = competitionService;
     _timerService       = timerService;
 }
コード例 #10
0
 public IActivityBuilder Add(
     IActivityBuilder activityBuilder,
     Action <IActivityBuilder>?branch = default)
 {
     branch?.Invoke(activityBuilder);
     ActivityBuilders.Add(activityBuilder);
     return(activityBuilder);
 }
 public ActionActivateCompetitionHandler(IDateTimeService dateTimeService, IBotClientFactory botClientFactory, ILocalizationFactory localizationFactory, ICompetitionService competitionService, IActivityBuilder activityBuilder, ITimerService timerService)
 {
     _dateTimeService     = dateTimeService;
     _botClientFactory    = botClientFactory;
     _localizationFactory = localizationFactory;
     _competitionService  = competitionService;
     _activityBuilder     = activityBuilder;
     _timerService        = timerService;
 }
コード例 #12
0
 public static IActivityBuilder AddTestGenerationWorkflow(this IActivityBuilder builder)
 {
     return(builder
            /* Generate test files */
            .Then <TemplateGroupGenerationStep>(
                step => { step.GroupName = "Test"; }
                )
            );
 }
コード例 #13
0
        public static IActivityBuilder InitRequiredVariable(this IActivityBuilder builder)
        {
            var appDir = AppDomain.CurrentDomain.BaseDirectory;

            return(builder.Then <SetVariable>(step =>
            {
                step.VariableName = "TemplateDirectory";
                step.ValueExpression = new LiteralExpression(Path.Combine(appDir, "Templates"));
            }));
        }
コード例 #14
0
        public static IActivityBuilder SetStartupDirectoryVariable(this IActivityBuilder builder, string directory)
        {
            string startupDirectory = GetStartupDirectory(directory);

            return(builder.Then <SetVariable>(step =>
            {
                step.VariableName = "StartupDirectory";
                step.ValueExpression = new LiteralExpression(startupDirectory);
            }));
        }
コード例 #15
0
        private static IActivityBlueprint BuildActivityBlueprint(IActivityBuilder builder, ICompositeActivityBlueprint parent)
        {
            var isComposite = typeof(CompositeActivity).IsAssignableFrom(builder.ActivityType);

            return(isComposite
                ? new CompositeActivityBlueprint(builder.ActivityId, parent, builder.Name, builder.DisplayName, builder.Description, builder.ActivityTypeName, builder.PersistWorkflowEnabled, builder.LoadWorkflowContextEnabled,
                                                 builder.SaveWorkflowContextEnabled, builder.PersistOutputEnabled, builder.Source)
                : new ActivityBlueprint(builder.ActivityId, parent, builder.Name, builder.DisplayName, builder.Description, builder.ActivityTypeName, builder.PersistWorkflowEnabled, builder.LoadWorkflowContextEnabled,
                                        builder.SaveWorkflowContextEnabled, builder.PersistOutputEnabled, builder.Source));
        }
コード例 #16
0
 public static IActivityBuilder AddOverwriteWorkflow(this IActivityBuilder builder)
 {
     return(builder
            .Then <SetVariable>(
                step =>
     {
         step.VariableName = CommandConsts.OverwriteVariableName;
         step.ValueExpression = new JavaScriptExpression <bool>($"!{CommandConsts.OptionVariableName}.{nameof(GenerateCommandOption.NoOverwrite)}");
     })
            );
 }
コード例 #17
0
 public static IActivityBuilder AddServiceGenerationWorkflow(this IActivityBuilder builder)
 {
     return(builder
            /* Generate dto, service interface and class files */
            .Then <TemplateGroupGenerationStep>(
                step => { step.GroupName = "Service"; }
                )
            /* Add mapping */
            .Then <FileFinderStep>(step => step.SearchFileName = new LiteralExpression("*ApplicationAutoMapperProfile.cs"))
            .Then <ApplicationAutoMapperProfileStep>()
            .Then <FileModifierStep>()
            );
 }
コード例 #18
0
 protected override IActivityBuilder ConfigureBuild(MethodsCommandOption option,
                                                    IActivityBuilder activityBuilder)
 {
     return(base.ConfigureBuild(option, activityBuilder)
            .AddOverwriteWorkflow()
            .Then <SetVariable>(
                step =>
     {
         step.VariableName = VariableNames.TemplateDirectory;
         step.ValueExpression = new LiteralExpression <string>("/Templates/Methods");
     })
            .Then <FileFinderStep>(
                step =>
     {
         step.SearchFileName = new JavaScriptExpression <string>($"`I${{{OptionVariableName}.{nameof(MethodsCommandOption.ServiceName)}}}AppService.cs`");
     })
            .Then <InterfaceParserStep>()
            .Then <SetModelVariableStep>()
            .Then <AppServiceInterfaceStep>()
            .Then <FileModifierStep>()
            .Then <ForEach>(
                x => { x.CollectionExpression = new JavaScriptExpression <IList <object> >($"{OptionVariableName}.{nameof(MethodsCommandOption.MethodNames)}"); },
                branch =>
                branch.When(OutcomeNames.Iterate)
                .Then <SetVariable>(
                    step =>
     {
         step.VariableName = "Bag.Name";
         step.ValueExpression = new JavaScriptExpression <string>("CurrentValue");
     }
                    )
                .Then <SetModelVariableStep>()
                .Then <GroupGenerationStep>(
                    step =>
     {
         step.GroupName = "Service";
         step.TargetDirectory = new JavaScriptExpression <string>(VariableNames.AspNetCoreDir);
     }
                    )
                .Then(branch)
                )
            .Then <FileFinderStep>(
                step =>
     {
         step.SearchFileName = new JavaScriptExpression <string>($"`${{{OptionVariableName}.{nameof(MethodsCommandOption.ServiceName)}}}AppService.cs`");
     })
            .Then <AppServiceClassStep>()
            .Then <FileModifierStep>());
 }
コード例 #19
0
        protected override IActivityBuilder ConfigureBuild(AddCommandOption option, IActivityBuilder activityBuilder)
        {
            string efOptions = option.EfOptions == null ? String.Empty : string.Join(" ", option.EfOptions);

            return(base.ConfigureBuild(option, activityBuilder)
                   .Then <SetVariable>(step =>
            {
                step.VariableName = "EfOptions";
                step.ValueExpression = new LiteralExpression(efOptions);
            })
                   .AddConfigureMigrationProjectsWorkflow(ActivityNames.AddMigration)
                   .Then <RunCommandStep>(
                       step => step.Command = new JavaScriptExpression <string>("`dotnet ef migrations add ${Option.Name} -p \"${MigrationProjectFile}\" -s \"${StartupProjectFile}\" ${EfOptions || ''}`")
                       ).WithName(ActivityNames.AddMigration)
                   );
        }
コード例 #20
0
 public MessagesController(
     ILogger <MessagesController> logger,
     IBotClientFactory botClientFactory,
     ICompetitionService competitionService,
     IActivityBuilder activityBuilder,
     ITimerService timerService,
     IDateTimeService dateTimeService,
     ILocalizationFactory localizationFactory)
 {
     _logger              = logger;
     _botClientFactory    = botClientFactory;
     _competitionService  = competitionService;
     _activityBuilder     = activityBuilder;
     _timerService        = timerService;
     _dateTimeService     = dateTimeService;
     _localizationFactory = localizationFactory;
 }
コード例 #21
0
 public static IActivityBuilder AddUiRazorPagesGenerationWorkflow(this IActivityBuilder builder)
 {
     return(builder
            /* Generate razor pages ui files*/
            .Then <TemplateGroupGenerationStep>(
                step => { step.GroupName = "UIRazor"; }
                )
            /* Add menu */
            .Then <FileFinderStep>(
                step => step.SearchFileName = new LiteralExpression("*MenuContributor.cs")
                )
            .Then <MenuContributorStep>()
            .Then <FileModifierStep>()
            /* Add mapping */
            .Then <FileFinderStep>(
                step => step.SearchFileName = new LiteralExpression <string>("*WebAutoMapperProfile.cs")
                )
            .Then <WebAutoMapperProfileStep>()
            .Then <FileModifierStep>()
            /* Add localization */
            .Then <TextGenerationStep>(
                step => { step.TemplateName = "Localization"; }
                )
            .Then <MultiFileFinderStep>(
                step =>
     {
         step.SearchFileName = new LiteralExpression("*.json");
         step.BaseDirectory = new JavaScriptExpression <string>(@"`${BaseDirectory}\\src\\${ProjectInfo.FullName}.Domain.Shared\\Localization`");
     }
                )
            .Then <ForEach>(
                x => { x.CollectionExpression = new JavaScriptExpression <IList <object> >(MultiFileFinderStep.DefaultFileParameterName); },
                branch =>
                branch.When(OutcomeNames.Iterate)
                .Then <LocalizationJsonModificationCreatorStep>(
                    step =>
     {
         step.TargetFile = new JavaScriptExpression <string>("CurrentValue");
         step.LocalizationJson = new JavaScriptExpression <string>(TextGenerationStep.DefaultGeneratedTextParameterName);
     }
                    )
                .Then(branch)
                )
            );
 }
コード例 #22
0
 public static IActivityBuilder AddEntityUsingGenerationWorkflow(this IActivityBuilder builder, string name)
 {
     return(builder
            .Then <TextGenerationStep>(
                step =>
     {
         step.TemplateName = "UsingEntityNamespace";
         step.GeneratedTextKey = new LiteralExpression("EntityUsingText");
     }
                ).WithName(name)
            .Then <TextGenerationStep>(
                step =>
     {
         step.TemplateName = "UsingEntityDtoNamespace";
         step.GeneratedTextKey = new LiteralExpression("EntityDtoUsingText");
     }
                )
            );
 }
コード例 #23
0
 public static IActivityBuilder AddServiceGenerationWorkflow(this IActivityBuilder builder, string name)
 {
     return(builder
            /* Generate dto, service interface and class files */
            .Then <GroupGenerationStep>(
                step =>
     {
         step.GroupName = "Service";
         step.TargetDirectory = new JavaScriptExpression <string>(VariableNames.AspNetCoreDir);
     }
                ).WithName(name)
            /* Generate permissions */
            .IfElse(
                ifElse => ifElse.ConditionExpression = new JavaScriptExpression <bool>("Option.SkipPermissions"),
                ifElse =>
     {
         ifElse
         .When(OutcomeNames.True)
         .Then(ActivityNames.AutoMapper)
         ;
         ifElse
         .When(OutcomeNames.False)
         .Then <FileFinderStep>(
             step => { step.SearchFileName = new JavaScriptExpression <string>("`${ProjectInfo.Name}Permissions.cs`"); })
         .Then <PermissionsStep>()
         .Then <FileModifierStep>()
         .Then <FileFinderStep>(
             step => { step.SearchFileName = new JavaScriptExpression <string>("`${ProjectInfo.Name}PermissionDefinitionProvider.cs`"); })
         .Then <PermissionDefinitionProviderStep>()
         .Then <FileModifierStep>()
         .Then(ActivityNames.AutoMapper)
         ;
     }
                )
            /* Add mapping */
            .Then <FileFinderStep>(step => step.SearchFileName = new JavaScriptExpression <string>("`${ProjectInfo.Name}ApplicationAutoMapperProfile.cs`")).WithName(ActivityNames.AutoMapper)
            .Then <ApplicationAutoMapperProfileStep>()
            .Then <FileModifierStep>()
            );
 }
コード例 #24
0
        public void SetUp()
        {
            this.activityBuilder         = new SetSharedVariableActivityBuilder(new XslBuilder(new XpathBuilder()));
            this.activity                = new SharedVariableActivity("MyActivityName", ActivityType.setSharedVariableActivityType);
            this.activity.VariableConfig = "myconfigPath";
            var xml =
                @"
    <ns:ActivityInput xmlns:xsl=""http://w3.org/1999/XSL/Transform"" xmlns:ns=""http://www.tibco.com/pe/GenerateErrorActivitySchema"">
        <message>
            <xsl:value-of select=""'testvalue'""/>
        </message>
    </ns:ActivityInput>
";
            XElement doc = XElement.Parse(xml);

            this.activity.InputBindings = doc.Nodes();
            this.activity.Parameters    = new List <ClassParameter> {
                new ClassParameter {
                    Name = "message",
                    Type = "System.String"
                }
            };
        }
コード例 #25
0
 public static IActivityBuilder SendHttpRequest(this IActivityBuilder builder,
                                                Func <Uri?> url,
                                                Func <string?> method,
                                                Func <string?> content,
                                                Func <string?> contentType,
                                                Func <string?> authorization,
                                                Func <HttpRequestHeaders> requestHeaders,
                                                Func <bool> readContent,
                                                Func <ICollection <int> > supportedStatusCodes,
                                                [CallerLineNumber] int lineNumber  = default,
                                                [CallerFilePath] string?sourceFile = default) =>
 builder.SendHttpRequest(
     setup => setup
     .Set(x => x.Url, url)
     .Set(x => x.Method, method)
     .Set(x => x.Content, content)
     .Set(x => x.ContentType, contentType)
     .Set(x => x.Authorization, authorization)
     .Set(x => x.RequestHeaders, requestHeaders)
     .Set(x => x.ReadContent, readContent)
     .Set(x => x.SupportedStatusCodes, supportedStatusCodes),
     lineNumber,
     sourceFile);
コード例 #26
0
 public ActionEditDraftCompetitionHandler(ICompetitionService competitionService, IActivityBuilder activityBuilder)
 {
     _competitionService = competitionService;
     _activityBuilder    = activityBuilder;
 }
コード例 #27
0
 public IConnectionBuilder Connect(
     IActivityBuilder source,
     IActivityBuilder target,
     string outcome = OutcomeNames.Done) =>
 Connect(() => source, () => target, outcome);
コード例 #28
0
 public override IActivityBuilder Then(IActivityBuilder targetActivity) => Add(targetActivity);
コード例 #29
0
 public ActionJoinCompetitionHandler(IBotClientFactory botClientFactory, ICompetitionService competitionService, IActivityBuilder activityBuilder)
 {
     _botClientFactory   = botClientFactory;
     _competitionService = competitionService;
     _activityBuilder    = activityBuilder;
 }
コード例 #30
0
ファイル: ActivityBuilder.cs プロジェクト: levinhtxbt/elsa
 public IActivityBuilder Then(IActivityBuilder targetActivity)
 {
     WorkflowBuilder.Connect(this, targetActivity);
     return(this);
 }