[ https://issues.apache.org/jira/browse/OOZIE-2339?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16414845#comment-16414845 ]
Robert Kanter commented on OOZIE-2339: -------------------------------------- I just left some more comments on ReviewBoard. Though in the interest of time, I didn't look too carefully at some of the generating code like the {{DozerConverter}} classes and a lot of the unit tests. One high-level thing I wanted to bring up is what are we calling this feature? It looks like it's currently "Jobs API", but I have a few concerns about that name: # It's pretty generic-sounding and non-specific. # "Jobs" is a pretty overloaded term already. It refers to Oozie Jobs (i.e. Workflows, Coordinators, and Bundles), Hadoop/Pig/Sqoop/etc Jobs, the Launcher Job, etc. I'd like to avoid "Jobs" if possible, or at least qualify it with something else like "Programatic Jobs API" or something. I don't have a great alternative for a name, other than "Programatic Jobs API", which isn't super great either. Any ideas? > Provide an API for writing jobs based on the XSD schemas > -------------------------------------------------------- > > Key: OOZIE-2339 > URL: https://issues.apache.org/jira/browse/OOZIE-2339 > Project: Oozie > Issue Type: New Feature > Components: client > Affects Versions: 4.3.0 > Reporter: Robert Kanter > Assignee: Andras Piros > Priority: Major > Fix For: 5.1.0 > > Attachments: OOZIE-2339.001.patch, OOZIE-2339.002.patch, > OOZIE-2339.003.patch, OOZIE-2339.004.patch, OOZIE-2339.005.patch, > OOZIE-2339.006.patch, OOZIE-2339.008.patch, OOZIE-2339.010.patch, > OOZIE-2339.011.patch > > > Users often complain about the XML they have to write for Oozie jobs. It > would be nice if they could write them in something like Java, but we don't > want to have to maintain a separate Java API for this. I was looking around > and saw that JAXB might be the right thing here. From what I can tell, it > lets you create Java classes from XSD schemas. So, we should be able to > auto-generate a Java API for writing Oozie jobs, without having to really > maintain it. > We should investigate if this is feasible and, if so, implement it. > Some useful looking links: > * [JAXB > overview|https://en.wikipedia.org/wiki/Java_Architecture_for_XML_Binding] > * [JAXB description|https://jaxb.java.net/2.2.11/docs/ch03.html] > * [Maven JAXB plugin|https://java.net/projects/maven-jaxb2-plugin/pages/Home] > * [Apache Falcon|https://falcon.apache.org] > Key features: > * must have: > ** inside an {{oozie-jobs-api}} artifact > ** able to create workflow / coordinator / bundle definitions programmatically > ** synchronizing each and every XSD change on rebuild > ** can write {{workflow.xml}}, {{coordinator.xml}}, {{bundle.xml}}, and > {{jobs.properties}} artifacts of every XSD version > ** cloneability of workflow etc. {{Object}} s > ** perform cross checks, e.g. that the workflow graph is a DAG > ** only latest XSD versions should be supported as must have > * nice to have: > ** XSD version(s) can be provided. When not provided, latest ones are > considered as valid > ** implement a [*fluent API*|https://en.wikipedia.org/wiki/Fluent_interface] > ** have a Python / Jython REPL to make it easy to experiment > ** create documentation about usage > ** can read {{workflow.xml}}, {{coordinator.xml}}, {{bundle.xml}}, and > {{jobs.properties}} artifacts of every XSD version > ** can convert between XSD versions > ** support XSD change on the fly (within REPL) > ** support HDFS reads / writes > ** support dry run on an Oozie server to perform checks -- This message was sent by Atlassian JIRA (v7.6.3#76005)