TODO:
- api to add your own task.
lots of work on the DSL specific parts. Graph and Sequence to make it easier to wire anything. macros can now add/modify the wiring, e.g. their end to the our end or the next task. [ use circuit for actual step_args/initialize process, too? ] You can now add an unlimited number of "your own" end events, which can then be interpreted on the outside (e.g. Endpoint)
-
Introduced the
fast_track: true
option for steps. If you were returningRailway.fail_fast!
and the like, you now need to declare that option, e.g.```ruby step :my_validate!, fast_track: true ```
params:, rest: ..
- Use
activity-0.7.1
.
- Use
activity-0.7.0
.
- Moved
VariableMapping
to theactivity
gem.
-
Use
activity
0.6.0. -
Remove
Operation::__call__
in favor of onecall
that dispatches to eithercall_with_public_interface
this implements the complicated publicOperation.()
semantic and will be faded out with the rise of workflow engines.call_with_circuit_interface
is the circuit-compatible version that will be invoked on nested operations.
This might seem a bit "magical" but simplifies the interface a lot. In better languages, you could use method overloading for that, in Ruby, we have to do that ourselves. This decision was made with the deprecation of
Operation.()
in mind. In the future, operations will mostly be invoked from workflow engines and not directly, where the engine takes care of applying the correct interface.
- Minor fixes for activity 0.5.2.
- Use
Activity::FastTrack
signals.
- Use
activity-0.4.2
.
- Use
activity-0.4.1
.
- Cleanly separate
Activity
andOperation
responsibilities. An operation is nothing more but a class around an activity, hosting instance methods and implementing inheritance.
TaskWrap.arguments_for_call
now returns the correctcircuit_options
where the:runner
etc.'s already merged.
- New taskWrap API for
activity
0.3.2.
- Add @mensfeld's "Macaroni" step style for a keyword-only signature for steps.
inspect: failure is << and success is >>
call vs call: it's now designed to be run in a composition where the skills stuff is done only once, and the reslt object is not necessary
FastTrack optional
Wrapped optional
-
Add
pass
andfail
as four-character aliases forsuccess
andfailure
. -
Remove
Uber::Callable
requirement and treat all non-:symbol
steps as callable objects. -
Remove non-kw options for steps. All steps receive keyword args now:
def model(options)
now must have a minimal signature as follows.
def model(options, **)
-
Remove
Operation#[]
andOperation#[]=
. Please only change state inoptions
. -
API change for
step Macro()
: the macro's return value is now called with the low-level "Task API" signature(direction, options, flow_options)
. You need to return[direction, options, flow_options]
. There's a soft-deprecation warning. -
Remove support for Ruby 1.9.3 for now. This can be re-introduced on demand.
-
Remove
pipetree
in favor oftrailblazer-circuit
. This allows rich workflows and state machines in an operation. -
Remove
uber
dependency.
- Rename
Operation::New
to:Instantiate
to avoid name clashes withNew
operations in applications. - Fix Ruby > 2.3.3's
Forwardable
issue.
-
Allow passing tmp options into
KW::Option
that will be merged withoptions
and then transformed into kw args, but only locally for the step scope (or wherever you doOption.()
). The API:Option::KW.(proc).(input, options, some: "more", ...)
Note that
KW::Option
could be massively sped up with simple optimizations.
- Use
Forwardable
instead ofUber::Delegates
.
Flow
is nowRailway
.- Any
Right
subclass will now be interpreted as success. - Add
fail!
,fail_fast!
,pass!
, andpass_fast!
. - The only semi-public method to modify the pipe is
Railway#add
- Removed
&
,>
,<
and%
"operators" in favor of#add
. - Extremely simplified the macro API. Macros now return a callable step with the interface
->(input, options)
and their pipe options, e.g.[ step, name: "my.macro"]
.
Removing Operation::consider
, which is now step
.
We now have three methods, only.
step
import macro or add step with the & operator, meaning its result is always evaluated and decides about left or right.success
always adds to right track.failure
always adds to left track.
This was heavily inspired by a discussion with @dnd, so, thanks! 🍻
-
Introduce a new keyword signature for steps:
step ->(options, params:, **) { options["x"] = params[:id] }
The same API works for instance methods and
Callable
s.Note that the implementation of
Option
andSkills#to_hash
are improveable, but work just fine for now.
- Simplify inheritance by basically removing it.
- Improvements with the pipe DSL.
_insert
provides better API now.
- Don't pass the operation into
Result
, but theSkill
options hash, only.
- Add
#inspect(slices)
.
- Works.