#25 ✓resolved
bahuvrihi

Run should allow specification of basic workflow joins

Reported by bahuvrihi | April 29th, 2008 @ 11:01 AM | in Tap-1.0.0

The run command syntax might be extended to include workflow joins like:

sequence

  # app.sequcence(a,b,c)

  % tap run -- a --= b --= c
  % tap run -- r1task --+ r2task --= r2sequenced -- r1task --= r1sequenced

fork

  # app.fork(src, *targets)

  % tap run -- src --[ target -- target -- target --]

merge

  # app.merge(target, *sources)

  % tap run -- --{ source -- source -- source --} target 

Comments and changes to this ticket

  • bahuvrihi

    bahuvrihi May 29th, 2008 @ 12:36 PM

    See Basic Control Flow Patterns

    These five patterns are what should be included.

  • bahuvrihi

    bahuvrihi July 30th, 2008 @ 08:33 AM

    • Tag set to feature, tap
    • Milestone changed from Tap 0.10.0 to Tap-1.0.0
  • bahuvrihi

    bahuvrihi August 4th, 2008 @ 04:13 PM

    Syntax brainstorm. The exclusive choice may be easy to implement in code but really cannot be done without a block in the command line.

    ===========
    
    ===========
    0. a --
    
    =========== 
    0. a --:1
    1. b --
    
    ===========
    0. a --[1,2]
    1. b --
    2. c --
    
    ===========
    0. a --[1,2]
    1. b --{3}
    2. c --{3}
    3. d
    
    ===========
    0. a --[1,2,3]
    1. b --{4}
    2. c --{4}
    3. d
    4. e
    
    ===========
    0. a --:1
    1. b --[2,3]
    2. c --{5}
    3. d --{5}
    4. e --{5}
    5. f --
    
    
    Numbers indicate which tasks to use.  For sequence, no number implies the next task.
    --: sequence 
    --[] parallell split/fork 
    --() synchronization/sync
    --x exclusive choice/... (omit)
    --{} simple merge/merge
    
  • bahuvrihi

    bahuvrihi August 4th, 2008 @ 04:54 PM

    These can get put anywhere, say at the end, or in the middle if desired. First number is assumed to be the last task declared (ex, tasks.length-1). For sequence, the second number is assumbed to be the next task to be declared (ex, tasks.length). In the other cases, numbers must be specified explicitly.

    
    --1:2 sequence 1, 2
    --1[2,3] parallel split/fork 1 into 2, 3
    --1(2) synchronization/sync 1 into 2 (listed once for each merge)
    --x exclusive choice/... (omit)
    --1{2} simple merge/merge 1 into 2 (listed once for each merge)
    
    

    Variations:

    
      % tap run -- a --:1 b --[2,3] c --{5} d --{5} e --{5} f --
    
      % tap run -- a -- b -- c -- d -- e -- f --0:1 --1[2,3] --2{5} --3{5} --4{5}
    
  • bahuvrihi

    bahuvrihi August 4th, 2008 @ 05:22 PM

    Keep in mind workflow tasks should not take inputs. Do something like:

    • parse for tasks, add to array
    • collect workflow breaks
    • construct workflow from breaks, pulling tasks out of the array as you go. raise error if any of the pulled tasks have inputs
    • enque remaining with inputs

    Any task can have configurations.

  • bahuvrihi

    bahuvrihi August 25th, 2008 @ 10:47 PM

    • State changed from “new” to “resolved”
    • Assigned user set to “bahuvrihi”

    (from [41521cecf33c34a8b7f82fc04e90b7435ba8c1ee]) Added workflow syntax to run [#25 state:resolved responsible:bahuvrihi] http://github.com/bahuvrihi/tap/...

  • bahuvrihi

    bahuvrihi September 2nd, 2008 @ 11:54 PM

    (from [15f36dc701297bc033b7b79857bd210619ab7a3d]) Updated documentation for App. Added sync_merge and switch workflow patterns. [#25 state:resolved responsible:bahuvrihi] http://github.com/bahuvrihi/tap/...

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

A framework for making configurable, file-based tasks and workflows.

People watching this ticket

Tags

Referenced by

Pages