[ https://issues.apache.org/jira/browse/OOZIE-2992?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16091434#comment-16091434 ]
Daniel Becker commented on OOZIE-2992: -------------------------------------- In Luigi, you build workflow nodes by inheriting from the Python class *luigi.Task* and overriding some methods. Dependencies are specified by returning other *Task* instances from the *requires()* method, and then the current task will depend on those, and wait for those to run before it runs. This way, this works "the other way" than Oozie: Oozie defines an action and what other action to transition to _after_ it has completed, Luigi defines what should run _before_ the action. It is possible to create subworkflows by creating a node that depends on the actions that we would like to include in the subworkflow. ---- I think that defining the dependencies (the edges of the workflow graph) in the various class methods that may be spread across the code is not as clear as defining all of them at a central place as in Oozie configuration files or Airflow (though it is possible to spread it across the code in Airflow, too). Also, in Oozie we can specify a success and a failure transition, which we should include in the new API. > Investigate Luigi API > --------------------- > > Key: OOZIE-2992 > URL: https://issues.apache.org/jira/browse/OOZIE-2992 > Project: Oozie > Issue Type: Sub-task > Components: client > Reporter: Andras Piros > Assignee: Daniel Becker > Original Estimate: 8h > Remaining Estimate: 8h > > Please investigate [*Luigi API*|https://github.com/spotify/luigi] whether > it's usable to us. -- This message was sent by Atlassian JIRA (v6.4.14#64029)