Git Product home page Git Product logo

Comments (4)

m4dcoder avatar m4dcoder commented on May 25, 2024
  • Unit Testing -> Orchestra will be able to do multipoint inspection of syntax, expressions, and context/variables in a single pass on the workflow definition. It can also take mocked task outputs and conduct a mock run of the workflow definition. As comparison, Mistral can only find 1 error at a time and it cannot evaluate context/variables until runtime.
  • Publish and reuse variable in the same task -> This sounds very useful. It's not possible with Mistral because publish is a dictionary and in python there is no sort order for dictionary items. So if Orchestra is to support this, the publish will have to become a list of single item dictionary.
  • when condition in task and evaluated prior to task execution -> This should be feasible with Orchestra. I don't see any conflict in the underlying graph model of the workflow. We will need to explore how to implement it.
  • Explicit main task / entry point -> There'll be other problems with this approach. The following will need to be considered before we can agree to implementing this.
    • For a workflow t1->t2->t3, what should happen to t1 if the entry point is explicitly marked t2? What if there are variables defined in the publish of t1 that t2 depends on?
    • For two branches t1->t2->t3 and t4->t5->t6, what should happen to the t4 branch if only t1 is specified as entry point?
    • For a join (visualize the letter y) where there are two starting tasks, what happens if only one of the task is specified as entry point?
  • Linear execution by default -> tasks is a dictionary and in python there is no sort order for dictionary items. Therefore, with this data structure, we can't default to linear execution. What if we change tasks to list? It maybe possible but then for more sophisticated workflows with many tasks, branches, joins, error handling, etc, I think the list and default linear order will be hard to interpret. What we can do here is to make a short hand for on-success so there's less typing but still being as explicit as possible.
  • Defined inputs and outputs -> Orchestra will keep these sections explicitly defined.
  • Local variables in workflow -> Both Mistral and Orchestra has a vars section in the language to define local variables only visible within the workflow.

from orquesta.

cognifloyd avatar cognifloyd commented on May 25, 2024

Perhaps the execution models are defined not by an execution_model key, but by the data type of tasks. If tasks is a list, treat it like a linear action-chain style workflow. If it's a hash/dict it should use parallel execution and tasks must be explicitly linked together with next sections.

Defining an entry-point in the workflow itself doesn't sound interesting to me, other than maybe as the default workflow entry-point. But, specifying the entry-point via a workflow input parameter would enable targeting pieces of workflows. Sure, someone could split their workflows into additional workflows to be able to select just a few tasks in the workflow. But, if a few tasks break in a workflow, and the rest of the (ran in parallel tasks) completed, it would be nice to re-run just the branch of the task graph that failed. Maybe I forgot to add a key to the key-value store, or github was temporarily overloaded/unreachable when that task ran, or ... Re-run with a target entry-point would be fantastic.

from orquesta.

cognifloyd avatar cognifloyd commented on May 25, 2024

πŸ‘ to publish as a list
I can't tell you how many times I've tried this:

  publish:
    output: "{{ task('task1').result.stdout }}"
    # this errors out because output isn't available in the contex yet
    hello_world: "{{ _.output + ' world' }}"

and then done approximately this:

    publish:
      output: "{{ task('task1').result.stdout }}"
    do: finish_publishing
finish_publishing
  action: noop
  next:
    publish:
      hello_world: "{{ _.output + ' world' }}"

πŸ‘ to when conditions

πŸ’― for Orchestra ;)

from orquesta.

m4dcoder avatar m4dcoder commented on May 25, 2024

We will close this issue here as this is for general user feedback during alpha/beta. If there are specific feature request or problem with orquesta, please open a separate issue for each.

from orquesta.

Related Issues (20)

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.