Giter VIP home page Giter VIP logo

spring-cloud-task's Introduction

Spring Cloud Task

Is a project centered around the idea of processing on demand. A user is able to develop a β€œtask” that can be deployed, executed and removed on demand, yet the result of the process persists beyond the life of the task for future reporting.

Requirements:

  • Java 17 or Above

Build Main Project:

  $ ./mvnw clean install

Example:

  @SpringBootApplication
  @EnableTask
  public class MyApp {

      @Bean
      public MyTaskApplication myTask() {
          return new MyTaskApplication();
      }

      public static void main(String[] args) {
          SpringApplication.run(MyApp.class);
      }

      public static class MyTaskApplication implements ApplicationRunner {

          @Override
          public void run(ApplicationArguments args) throws Exception {
              System.out.println("Hello World");
          }
      }
  }

Code of Conduct

This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].

Building the Project

This project requires that you invoke the Javadoc engine from the Maven command line. You can do so by appending javadoc:aggregate to the rest of your Maven command. For example, to build the entire project, you could use mvn clean install -DskipTests -P docs.

spring-cloud-task's People

Contributors

augilar avatar cppwfs avatar csaethre19 avatar fmbenhassine avatar ghillert avatar gitter-badger avatar guoyiang avatar harpreets789 avatar hpoettker avatar ilayaperumalg avatar ksanjeev9211 avatar lianej avatar making avatar marcingrzejszczak avatar markpollack avatar mminella avatar ntschutta avatar robertmcnees avatar royclarkson avatar ryanjbaxter avatar sabbyanandan avatar scbrown avatar simrangupta234 avatar spencergibb avatar spring-builds avatar spring-operator avatar trisberg avatar tschuettel avatar tyler2cr avatar tzolov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

spring-cloud-task's Issues

User wants ability to store common exit code when running multiple CommandLineRunners.

User wants ability to store exit code using the same logic as Spring boot in cases where more than CommandLineRunnners are within the spring boot app. Currently implementation uses last exit code in returned list.
Using the getExitCode as a template or submitting a PR to spring boot to make SpringApplication.getExitCode public. Here is a link to the code: https://github.com/spring-projects/spring-boot/blob/9c412232d5fe0353f0fd117ba438ed080683eee1/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java#L1167

Create JobLauncherTask

As a developer, I want to be able to use Spring Cloud Task to run a Spring Batch job.

Add support to receive task lifecycle events from another module

As a user, I'd want to be able to receive task lifecycle events from another module, so I can orchestrate set of modules in a composite workflow.

Acceptance:
I should be able to do something like: fooTask | barSink where the fooTask and barSink modules are connected by a bus to send and received events

Add TaskExplorer implementation

As a user, I'd want the TaskExplorer implementation, so I can use this contract to query task details [such as: name, execution-count etc.] from the database.

Release infrastructure

As a committer, I want to be able to release and promote Spring Cloud Task to the appropriate maven repositories.

Developers want methods that return lists to be pageable

Currently findRunningTaskExecutions and getTaskExecutionsByName return either the full list or have a partially implemented paging paradigm. Developers would like to pass in a pageable object and get a page instead of a list or set.

Add @EnableTask and @Task annotation

As a user, I'd want a @Task API, so I can associate task-name via this annotation and have it interpreted as runnable Spring Boot application.

Add support to launch task from another module

As a user, I'd want to be able to launch a task from another module, so I can orchestrate mix and match of task and stream modules as composite workflows.

Acceptance:
I should be able to do: fooSource | barTask, where fooSource would be responsible for launching barTask, which is a task module.

Clean up Sonar Issues

With us tracking Sonar issues now, we should start by cleaning things up so we have a clean slate.

Remove requirement for executionId to display step execution in shell

When viewing a job's step execution via the shell, the user is required to provide both the job execution id and the step execution id. Since the job repository is backed by a database and the step execution id is unique across jobs, the step execution id should be enough.

Acceptance:
The following command should return the details of the step:
xd:> job execution step display --id 36

Add support for deployment properties

As a user, I'd like to launch tasks with deployment properties, so I can define how the deployment will be orchestrated.

Acceptance:

  • Following task definition accepts deployment manifest to override certain behavior of the sampleJob application
task create myjob --definition "sampleJob"

task deploy myjob --properties "module.sampleJob.foo=bar"
  • Deployment manifest is an optional DSL attribute for task deploys

Create a BOM for users to add SCT dependencies

As a user, I want to be able to use Spring Cloud Task (SCT) and manage the version of Spring Boot independently.

Back Story: Since SCT depends on Boot, we need a BOM that contains only the dependencies for SCT so that users can layer that on top of the Boot dependencies they are already bringing in.

TaskExecutionListener

As a developer, I want to be able to execute code before and/or after the execution of a task.

Restricting Spring Cloud Task instances

There are use cases where an application is triggered by cron scheduler but due to communication with 3rd party API(s), the application runs slow and hence the cron scheduler triggers another instance of the application again while the first instance is still running.

Allow `TaskConfigurer` to be configurable

As a developer, I want to be able to customize the way the TaskRepository and/or TaskExplorer are created by providing my own implementation of the TaskConfigurer.

Use NOCACHE for Oracle sequence

When creating the Oracle sequence TASK_SEQ we should use NOCACHE to avoid the default to CACHE 20.

With the current default, every time we run a task, we increment the sequence by 20 while only using one of these sequence values.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.