You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by mo...@apache.org on 2013/05/20 18:51:39 UTC
svn commit: r1484523 [1/5] - in /oozie/trunk: ./
client/src/main/java/org/apache/oozie/
client/src/main/java/org/apache/oozie/cli/
client/src/main/java/org/apache/oozie/client/
client/src/main/java/org/apache/oozie/client/event/
client/src/main/java/or...
Author: mona
Date: Mon May 20 16:51:37 2013
New Revision: 1484523
URL: http://svn.apache.org/r1484523
Log:
OOZIE-1244 SLA Support in Oozie (mona)
Added:
oozie/trunk/client/src/main/java/org/apache/oozie/AppType.java
oozie/trunk/client/src/main/resources/oozie-sla-0.2.xsd
oozie/trunk/client/src/main/resources/oozie-workflow-0.5.xsd
oozie/trunk/core/src/main/java/org/apache/oozie/client/rest/sla/
oozie/trunk/core/src/main/java/org/apache/oozie/client/rest/sla/JsonSLARegistrationEvent.java
oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/sla/
oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/sla/SLACalculationInsertUpdateJPAExecutor.java
oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/sla/SLACalculatorGetJPAExecutor.java
oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/sla/SLARegistrationGetJPAExecutor.java
oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/sla/SLASummaryGetJPAExecutor.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalcStatus.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculator.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorBean.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorMemory.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLAOperations.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLARegistrationBean.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLASummaryBean.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/listener/
oozie/trunk/core/src/main/java/org/apache/oozie/sla/listener/SLAEventListener.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/listener/SLAJobEventListener.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/service/
oozie/trunk/core/src/main/java/org/apache/oozie/sla/service/SLAService.java
oozie/trunk/core/src/test/java/org/apache/oozie/sla/
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLACalculationJPAExecutor.java
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAEventGeneration.java
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAJobEventListener.java
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLARegistrationGetJPAExecutor.java
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAService.java
oozie/trunk/core/src/test/resources/coord-action-sla.xml
oozie/trunk/core/src/test/resources/wf-action-sla.xml
oozie/trunk/core/src/test/resources/wf-job-sla.xml
Modified:
oozie/trunk/client/src/main/java/org/apache/oozie/cli/OozieCLI.java
oozie/trunk/client/src/main/java/org/apache/oozie/client/JMSConnectionInfo.java
oozie/trunk/client/src/main/java/org/apache/oozie/client/SLAEvent.java
oozie/trunk/client/src/main/java/org/apache/oozie/client/event/Event.java
oozie/trunk/client/src/main/java/org/apache/oozie/client/event/JobEvent.java
oozie/trunk/client/src/main/java/org/apache/oozie/client/event/SLAEvent.java
oozie/trunk/client/src/main/java/org/apache/oozie/client/event/jms/JSONMessageDeserializer.java
oozie/trunk/client/src/main/java/org/apache/oozie/client/event/jms/MessageDeserializer.java
oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/CoordinatorActionMessage.java
oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/EventMessage.java
oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/JobMessage.java
oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/WorkflowJobMessage.java
oozie/trunk/client/src/main/java/org/apache/oozie/client/rest/JsonToBean.java
oozie/trunk/client/src/main/resources/oozie-coordinator-0.4.xsd
oozie/trunk/client/src/main/resources/oozie-workflow-0.4.5.xsd
oozie/trunk/client/src/test/java/org/apache/oozie/client/rest/TestJsonToBean.java
oozie/trunk/core/pom.xml
oozie/trunk/core/src/main/conf/oozie-site.xml
oozie/trunk/core/src/main/java/org/apache/oozie/CoordinatorActionBean.java
oozie/trunk/core/src/main/java/org/apache/oozie/ErrorCode.java
oozie/trunk/core/src/main/java/org/apache/oozie/SLAEventBean.java
oozie/trunk/core/src/main/java/org/apache/oozie/client/rest/JsonSLAEvent.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/TransitionXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordActionCheckXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordActionInputCheckXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordActionMaterializeCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordActionStartXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordActionTimeOutXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordActionUpdateXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordKillXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordMaterializeTransitionXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordPushDependencyCheckXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordRerunXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordSubmitXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordSuspendXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordinatorXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/SLAEventsXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/ActionEndXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/KillXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/ResumeXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/SignalXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/SubmitXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/SuspendXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/WorkflowXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/event/BundleJobEvent.java
oozie/trunk/core/src/main/java/org/apache/oozie/event/CoordinatorActionEvent.java
oozie/trunk/core/src/main/java/org/apache/oozie/event/CoordinatorJobEvent.java
oozie/trunk/core/src/main/java/org/apache/oozie/event/EventQueue.java
oozie/trunk/core/src/main/java/org/apache/oozie/event/MemoryEventQueue.java
oozie/trunk/core/src/main/java/org/apache/oozie/event/WorkflowActionEvent.java
oozie/trunk/core/src/main/java/org/apache/oozie/event/WorkflowJobEvent.java
oozie/trunk/core/src/main/java/org/apache/oozie/event/listener/JobEventListener.java
oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/CoordJobGetActionsNotCompletedJPAExecutor.java
oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/SLAEventInsertJPAExecutor.java
oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/SLAEventsGetForFilterJPAExecutor.java
oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/SLAEventsGetForSeqIdJPAExecutor.java
oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/SLAEventsGetJPAExecutor.java
oozie/trunk/core/src/main/java/org/apache/oozie/jms/JMSJobEventListener.java
oozie/trunk/core/src/main/java/org/apache/oozie/service/EventHandlerService.java
oozie/trunk/core/src/main/java/org/apache/oozie/service/JMSTopicService.java
oozie/trunk/core/src/main/java/org/apache/oozie/service/JPAService.java
oozie/trunk/core/src/main/java/org/apache/oozie/service/SchedulerService.java
oozie/trunk/core/src/main/java/org/apache/oozie/service/SchemaService.java
oozie/trunk/core/src/main/java/org/apache/oozie/servlet/SLAServlet.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/event/listener/SLAEventListener.java
oozie/trunk/core/src/main/java/org/apache/oozie/store/SLAStore.java
oozie/trunk/core/src/main/java/org/apache/oozie/util/XmlUtils.java
oozie/trunk/core/src/main/java/org/apache/oozie/util/db/SLADbOperations.java
oozie/trunk/core/src/main/java/org/apache/oozie/util/db/SLADbXOperations.java
oozie/trunk/core/src/main/resources/META-INF/persistence.xml
oozie/trunk/core/src/main/resources/oozie-default.xml
oozie/trunk/core/src/test/java/org/apache/oozie/TestSLAEventBean.java
oozie/trunk/core/src/test/java/org/apache/oozie/command/coord/TestCoordActionMaterializeCommand.java
oozie/trunk/core/src/test/java/org/apache/oozie/command/coord/TestCoordMaterializeTransitionXCommand.java
oozie/trunk/core/src/test/java/org/apache/oozie/event/TestEventGeneration.java
oozie/trunk/core/src/test/java/org/apache/oozie/event/TestEventQueue.java
oozie/trunk/core/src/test/java/org/apache/oozie/executor/jpa/TestSLAEventsGetJPAExecutor.java
oozie/trunk/core/src/test/java/org/apache/oozie/jms/TestJMSJobEventListener.java
oozie/trunk/core/src/test/java/org/apache/oozie/service/TestEventHandlerService.java
oozie/trunk/core/src/test/java/org/apache/oozie/service/TestJMSTopicService.java
oozie/trunk/core/src/test/java/org/apache/oozie/test/XDataTestCase.java
oozie/trunk/core/src/test/java/org/apache/oozie/test/XTestCase.java
oozie/trunk/examples/src/main/apps/sla/coordinator.xml
oozie/trunk/examples/src/main/apps/sla/job.properties
oozie/trunk/examples/src/main/apps/sla/workflow.xml
oozie/trunk/release-log.txt
oozie/trunk/tools/src/main/java/org/apache/oozie/tools/OozieDBCLI.java
Added: oozie/trunk/client/src/main/java/org/apache/oozie/AppType.java
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/java/org/apache/oozie/AppType.java?rev=1484523&view=auto
==============================================================================
--- oozie/trunk/client/src/main/java/org/apache/oozie/AppType.java (added)
+++ oozie/trunk/client/src/main/java/org/apache/oozie/AppType.java Mon May 20 16:51:37 2013
@@ -0,0 +1,25 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.oozie;
+
+/**
+ * App-type means job-type to enable to ease filtering
+ */
+public enum AppType {
+ WORKFLOW_JOB, WORKFLOW_ACTION, COORDINATOR_JOB, COORDINATOR_ACTION, BUNDLE_JOB, BUNDLE_ACTION
+}
Modified: oozie/trunk/client/src/main/java/org/apache/oozie/cli/OozieCLI.java
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/java/org/apache/oozie/cli/OozieCLI.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/client/src/main/java/org/apache/oozie/cli/OozieCLI.java (original)
+++ oozie/trunk/client/src/main/java/org/apache/oozie/cli/OozieCLI.java Mon May 20 16:51:37 2013
@@ -1543,6 +1543,8 @@ public class OozieCLI {
sources.add(new StreamSource(Thread.currentThread().getContextClassLoader().getResourceAsStream(
"oozie-workflow-0.4.xsd")));
sources.add(new StreamSource(Thread.currentThread().getContextClassLoader().getResourceAsStream(
+ "oozie-workflow-0.5.xsd")));
+ sources.add(new StreamSource(Thread.currentThread().getContextClassLoader().getResourceAsStream(
"oozie-coordinator-0.1.xsd")));
sources.add(new StreamSource(Thread.currentThread().getContextClassLoader().getResourceAsStream(
"oozie-coordinator-0.2.xsd")));
@@ -1557,6 +1559,8 @@ public class OozieCLI {
sources.add(new StreamSource(Thread.currentThread().getContextClassLoader().getResourceAsStream(
"oozie-sla-0.1.xsd")));
sources.add(new StreamSource(Thread.currentThread().getContextClassLoader().getResourceAsStream(
+ "oozie-sla-0.2.xsd")));
+ sources.add(new StreamSource(Thread.currentThread().getContextClassLoader().getResourceAsStream(
"hive-action-0.2.xsd")));
sources.add(new StreamSource(Thread.currentThread().getContextClassLoader().getResourceAsStream(
"hive-action-0.3.xsd")));
@@ -1581,7 +1585,7 @@ public class OozieCLI {
System.out.println("Valid workflow-app");
}
catch (Exception ex) {
- throw new OozieCLIException("Invalid workflow-app, " + ex.toString(), ex);
+ throw new OozieCLIException("Invalid app definition, " + ex.toString(), ex);
}
}
else {
Modified: oozie/trunk/client/src/main/java/org/apache/oozie/client/JMSConnectionInfo.java
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/java/org/apache/oozie/client/JMSConnectionInfo.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/client/src/main/java/org/apache/oozie/client/JMSConnectionInfo.java (original)
+++ oozie/trunk/client/src/main/java/org/apache/oozie/client/JMSConnectionInfo.java Mon May 20 16:51:37 2013
@@ -19,7 +19,7 @@ package org.apache.oozie.client;
import java.util.Properties;
-import org.apache.oozie.client.event.Event;
+import org.apache.oozie.AppType;
/**
* JMS connection related information
@@ -38,7 +38,7 @@ public interface JMSConnectionInfo {
* @param appType the appType for a job
* @return JMS topic pattern
*/
- String getTopicPattern(Event.AppType appType);
+ String getTopicPattern(AppType appType);
/**
* Retrieve the JNDI properties for establishing connection to JMS server
Modified: oozie/trunk/client/src/main/java/org/apache/oozie/client/SLAEvent.java
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/java/org/apache/oozie/client/SLAEvent.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/client/src/main/java/org/apache/oozie/client/SLAEvent.java (original)
+++ oozie/trunk/client/src/main/java/org/apache/oozie/client/SLAEvent.java Mon May 20 16:51:37 2013
@@ -6,9 +6,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -19,11 +19,11 @@ package org.apache.oozie.client;
import java.util.Date;
+@Deprecated
/**
* Bean that represents a SLA event
- * @deprecated This interface has been deprecated by the interface
- * SLAEvent in oozie.client.event package which works with the
- * new SLA Calculator system OOZIE-1244
+ * @deprecated This interface has been deprecated by the abstract class
+ * org.apache.oozie.client.event.SLAEvent designed for the new SLA Calculator system OOZIE-1244
*/
public interface SLAEvent {
Modified: oozie/trunk/client/src/main/java/org/apache/oozie/client/event/Event.java
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/java/org/apache/oozie/client/event/Event.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/client/src/main/java/org/apache/oozie/client/event/Event.java (original)
+++ oozie/trunk/client/src/main/java/org/apache/oozie/client/event/Event.java Mon May 20 16:51:37 2013
@@ -18,49 +18,38 @@
package org.apache.oozie.client.event;
/**
- * This interface defines an Event that can be generated via
- * Job status changes or SLA related events
+ * This interface defines an Event that can be generated via Job status changes
+ * or SLA related events
*/
-public interface Event {
+public abstract class Event {
+
+ protected MessageType msgType;
/**
* Events will be messages, broadly of type - Job related or SLA related
- *
*/
public static enum MessageType {
- JOB,
- SLA
+ JOB, SLA
}
- /**
- * Events carry the associated app-type or job-type to enable toggling on/off
- * events generated only for specific app-types or filtering on receiving side
- */
- public static enum AppType {
- WORKFLOW_JOB,
- WORKFLOW_ACTION,
- COORDINATOR_JOB,
- COORDINATOR_ACTION,
- BUNDLE_JOB,
- BUNDLE_ACTION
+ public Event(MessageType msgType) {
+ this.msgType = msgType;
}
- /**
- * Get the AppType of the event
- * @return AppType
- */
- public AppType getAppType();
+ public Event() {
+ }
/**
* Get the MessageType of the event
+ *
* @return MessageType
*/
- public MessageType getMsgType();
+ public MessageType getMsgType() {
+ return msgType;
+ }
- /**
- * Get the app-name of the job generating this event
- * @return String app-name
- */
- public String getAppName();
+ public void setMsgType(MessageType type) {
+ msgType = type;
+ }
}
Modified: oozie/trunk/client/src/main/java/org/apache/oozie/client/event/JobEvent.java
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/java/org/apache/oozie/client/event/JobEvent.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/client/src/main/java/org/apache/oozie/client/event/JobEvent.java (original)
+++ oozie/trunk/client/src/main/java/org/apache/oozie/client/event/JobEvent.java Mon May 20 16:51:37 2013
@@ -20,61 +20,41 @@ package org.apache.oozie.client.event;
import java.io.Serializable;
import java.util.Date;
-import org.apache.oozie.client.event.Event;
+import org.apache.oozie.AppType;
/**
* An abstract implementation of the Event interface, related to
* notification events after job status changes
*/
-public abstract class JobEvent implements Event, Serializable {
+public abstract class JobEvent extends Event implements Serializable {
private static final long serialVersionUID = 1L;
/**
* Coarse-grained status of the job event
- *
*/
public static enum EventStatus {
WAITING, STARTED, SUCCESS, SUSPEND, FAILURE
}
- private AppType appType;
- private MessageType msgType;
private String id;
private String parentId;
- private EventStatus eventStatus;
- private String appName;
private String user;
+ private AppType appType;
+ private String appName;
+ private EventStatus eventStatus;
private Date startTime;
private Date endTime;
- public JobEvent(AppType appType, String id, String parentId, String user, String appName) {
- this.appType = appType;
- this.msgType = MessageType.JOB;
+ public JobEvent(String id, String parentId, String user, AppType appType, String appName) {
+ super(MessageType.JOB);
this.id = id;
this.parentId = parentId;
this.user = user;
+ this.appType = appType;
this.appName = appName;
}
- @Override
- public AppType getAppType() {
- return appType;
- }
-
- public void setAppType(AppType type) {
- appType = type;
- }
-
- @Override
- public MessageType getMsgType() {
- return msgType;
- }
-
- public void setMsgType(MessageType type) {
- msgType = type;
- }
-
public String getId() {
return id;
}
@@ -91,15 +71,24 @@ public abstract class JobEvent implement
parentId = id;
}
- public EventStatus getEventStatus() {
- return eventStatus;
+ /**
+ * Get the AppType of the event
+ *
+ * @return AppType
+ */
+ public AppType getAppType() {
+ return appType;
}
- public void setEventStatus(EventStatus eStatus) {
- eventStatus = eStatus;
+ public void setAppType(AppType type) {
+ appType = type;
}
- @Override
+ /**
+ * Get the app-name of the job generating this event
+ *
+ * @return String app-name
+ */
public String getAppName() {
return appName;
}
@@ -108,6 +97,11 @@ public abstract class JobEvent implement
appName = name;
}
+ /**
+ * Get user name
+ *
+ * @return user
+ */
public String getUser() {
return user;
}
@@ -116,6 +110,20 @@ public abstract class JobEvent implement
user = euser;
}
+ /**
+ * Get the coarse status
+ *
+ * @return EventStatus
+ */
+ public EventStatus getEventStatus() {
+ return eventStatus;
+ }
+
+ public void setEventStatus(EventStatus eStatus) {
+ eventStatus = eStatus;
+ }
+
+
public Date getStartTime() {
return startTime;
}
@@ -134,8 +142,8 @@ public abstract class JobEvent implement
@Override
public String toString() {
- return "ID: " + getId() + ", AppType: " + getAppType() + ", Appname: " + getAppName() + ", Status: "
- + getEventStatus();
+ return "ID: " + getId() + ", MsgType:" + getMsgType() + ", AppType: " + getAppType() + ", Appname: "
+ + getAppName() + ", Status: " + getEventStatus();
}
}
Modified: oozie/trunk/client/src/main/java/org/apache/oozie/client/event/SLAEvent.java
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/java/org/apache/oozie/client/event/SLAEvent.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/client/src/main/java/org/apache/oozie/client/event/SLAEvent.java (original)
+++ oozie/trunk/client/src/main/java/org/apache/oozie/client/event/SLAEvent.java Mon May 20 16:51:37 2013
@@ -18,167 +18,172 @@
package org.apache.oozie.client.event;
import java.util.Date;
-
-import org.apache.oozie.client.event.Event;
-import org.apache.oozie.client.event.JobEvent.EventStatus;
+import org.apache.oozie.AppType;
/**
* A sub-class of the Event interface, related to
* notification events after SLA mets/misses
*/
-public interface SLAEvent extends Event {
+public abstract class SLAEvent extends Event {
- public static enum EventType {
- START_MET,
- START_MISS,
- END_MET,
- END_MISS,
- DURATION_MET,
- DURATION_MISS
+ public static enum EventStatus {
+ START_MET, START_MISS, END_MET, END_MISS, DURATION_MET, DURATION_MISS
}
- /**
- * Get the SLA event-type
- * @return SLAEvent.EventType
- */
- public EventType getEventType();
+ public static enum SLAStatus {
+ NOT_STARTED, IN_PROCESS, MET, MISS
+ }
/**
- * Get the job id
- * @return String id
+ * Get the SLA status
+ *
+ * @return SLAEvent.SLAStatus
*/
- public String getId();
+ public abstract SLAStatus getSLAStatus();
/**
- * Get the parent job id
- * @return String id
+ * Get the SLA event status
+ *
+ * @return SLAEvent.EventStatus
*/
- public String getParentId();
+ public abstract EventStatus getEventStatus();
- /**
- * Get the actual job status
- * @return EventStatus status
- */
- public EventStatus getJobStatus();
+ @Override
+ public MessageType getMsgType() {
+ return msgType;
+ }
/**
* Get the job-id
+ *
* @return String job-id
*/
- public String getJobId();
+ public abstract String getJobId();
/**
- * Get the sla event sequence-id
- * @return String sequence-id
+ * Get the id of the parent job
+ *
+ * @return String parent-id
*/
- public String getSequenceId();
+ public abstract String getParentId();
/**
- * Get the expected start-time for this job
- * @return Date expected start-time
+ * Get the AppType of the event
+ *
+ * @return AppType
*/
- public Date getExpectedStart();
+ public abstract AppType getAppType();
/**
- * Get the actual start-time for this job
- * @return Date actual start-time
+ * Get the app-name of the job generating this event
+ *
+ * @return String app-name
*/
- public Date getActualStart();
+ public abstract String getAppName();
/**
- * Get the expected end-time for this job
- * @return Date expected end-time
+ * Get the job's nominal time
+ *
+ * @return Date nominal time
*/
- public Date getExpectedEnd();
+ public abstract Date getNominalTime();
/**
- * Get the actual end-time for this job
- * @return Date actual end-time
+ * Get the expected start-time for this job
+ *
+ * @return Date expected start-time
*/
- public Date getActualEnd();
+ public abstract Date getExpectedStart(); // nominal time + should-start
/**
- * Get the expected duration for this job
- * @return Date expected duration
+ * Get the expected end-time for this job
+ *
+ * @return Date expected end-time
*/
- public long getExpectedDuration();
+ public abstract Date getExpectedEnd(); // nominal time + should-end
/**
- * Get the actual duration for this job
- * @return Date actual duration
+ * Get the expected duration for this job
+ *
+ * @return Date expected duration
*/
- public long getActualDuration();
+ public abstract long getExpectedDuration();
/**
* Get the sla notification-message
+ *
* @return String notification-message
*/
- public String getNotificationMsg();
-
- /**
- * Get the SLA alert-contact
- * @return String alert-contact
- */
- public String getAlertContact();
+ public abstract String getNotificationMsg();
/**
- * Get the SLA dev-contact
- * @return String dev-contact
+ * Get the SLA alert-events
+ *
+ * @return String alert-events
*/
- public String getDevContact();
+ public abstract String getAlertEvents();
/**
- * Get the SLA qa-contact
- * @return String qa-contact
+ * Get the SLA alert-contact
+ *
+ * @return String alert-contact
*/
- public String getQaContact();
+ public abstract String getAlertContact();
/**
- * Get the SLA alert-contact
- * @return String alert-contact
+ * Get the dependent upstream apps
+ *
+ * @return String upstream-apps
*/
- public String getSeContact();
+ public abstract String getUpstreamApps();
/**
- * Get the SLA alert-frequency
- * @return String alert-frequency
+ * Get job related data or configuration
+ *
+ * @return String job-data
*/
- public String getAlertFrequency();
+ public abstract String getJobData();
/**
- * Get the SLA alert-percentage
- * @return String alert-percentage
+ * Get the user for this job sla
+ *
+ * @return String user
*/
- public String getAlertPercentage();
+ public abstract String getUser();
/**
- * Get the dependent upstream apps
- * @return String upstream-apps
+ * Get the miscellaneous key-value configs
+ *
+ * @return String slaConfig
*/
- public String getUpstreamApps();
+ public abstract String getSlaConfig();
/**
- * Get job related data or configuration
- * @return String job-data
+ * Get the actual start time of job for SLA
+ *
+ * @return Date actual-start
*/
- public String getJobData();
+ public abstract Date getActualStart();
/**
- * Get last modified time of this sla event
- * @return Date last-modified-time
+ * Get the actual end time of job for SLA
+ *
+ * @return Date actual-end
*/
- public Date getLastModified();
+ public abstract Date getActualEnd();
/**
- * Get the user for this job sla
- * @return String user
+ * Get the actual duration of job for SLA
+ *
+ * @return long duration
*/
- public String getUser();
+ public abstract long getActualDuration();
/**
- * Get the nominal time for this job under sla
- * @return Date nominalTime
+ * Get the job status
+ *
+ * @return String job-status
*/
- public Date getNominalTime();
+ public abstract String getJobStatus();
}
Modified: oozie/trunk/client/src/main/java/org/apache/oozie/client/event/jms/JSONMessageDeserializer.java
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/java/org/apache/oozie/client/event/jms/JSONMessageDeserializer.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/client/src/main/java/org/apache/oozie/client/event/jms/JSONMessageDeserializer.java (original)
+++ oozie/trunk/client/src/main/java/org/apache/oozie/client/event/jms/JSONMessageDeserializer.java Mon May 20 16:51:37 2013
@@ -19,14 +19,10 @@ package org.apache.oozie.client.event.jm
import javax.jms.JMSException;
import javax.jms.Message;
-import javax.jms.TextMessage;
-
-import org.apache.oozie.client.event.Event;
-import org.apache.oozie.client.event.Event.AppType;
+import org.apache.oozie.AppType;
import org.apache.oozie.client.event.JobEvent.EventStatus;
import org.apache.oozie.client.event.Event.MessageType;
import org.apache.oozie.client.event.message.CoordinatorActionMessage;
-import org.apache.oozie.client.event.message.EventMessage;
import org.apache.oozie.client.event.message.WorkflowJobMessage;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
Modified: oozie/trunk/client/src/main/java/org/apache/oozie/client/event/jms/MessageDeserializer.java
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/java/org/apache/oozie/client/event/jms/MessageDeserializer.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/client/src/main/java/org/apache/oozie/client/event/jms/MessageDeserializer.java (original)
+++ oozie/trunk/client/src/main/java/org/apache/oozie/client/event/jms/MessageDeserializer.java Mon May 20 16:51:37 2013
@@ -20,7 +20,7 @@ package org.apache.oozie.client.event.jm
import org.apache.oozie.client.event.message.CoordinatorActionMessage;
import org.apache.oozie.client.event.message.EventMessage;
import org.apache.oozie.client.event.message.WorkflowJobMessage;
-import org.apache.oozie.client.event.Event;
+import org.apache.oozie.AppType;
import javax.jms.Message;
import javax.jms.TextMessage;
import javax.jms.JMSException;
@@ -47,7 +47,7 @@ public abstract class MessageDeserialize
+ "AppType and/or MessageBody is null/empty." + "Apptype is " + appTypeString + " MessageBody is "
+ messageBody);
}
- switch (Event.AppType.valueOf(appTypeString)) {
+ switch (AppType.valueOf(appTypeString)) {
case WORKFLOW_JOB:
WorkflowJobMessage wfJobMsg = getDeserializedObject(messageBody, WorkflowJobMessage.class);
return setProperties(wfJobMsg, textMessage);
Modified: oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/CoordinatorActionMessage.java
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/CoordinatorActionMessage.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/CoordinatorActionMessage.java (original)
+++ oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/CoordinatorActionMessage.java Mon May 20 16:51:37 2013
@@ -19,9 +19,9 @@ package org.apache.oozie.client.event.me
import java.util.Date;
+import org.apache.oozie.AppType;
import org.apache.oozie.client.CoordinatorAction;
import org.apache.oozie.client.event.JobEvent.EventStatus;
-import org.apache.oozie.client.event.Event.AppType;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonSerialize;
Modified: oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/EventMessage.java
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/EventMessage.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/EventMessage.java (original)
+++ oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/EventMessage.java Mon May 20 16:51:37 2013
@@ -19,7 +19,7 @@ package org.apache.oozie.client.event.me
import org.apache.oozie.client.event.Event;
import org.apache.oozie.client.event.Event.MessageType;
-import org.apache.oozie.client.event.Event.AppType;
+import org.apache.oozie.AppType;
import org.codehaus.jackson.annotate.JsonIgnore;
/**
@@ -28,7 +28,7 @@ import org.codehaus.jackson.annotate.Jso
*/
public abstract class EventMessage {
- private Event.AppType appType;
+ private AppType appType;
private Event.MessageType messageType;
/**
Modified: oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/JobMessage.java
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/JobMessage.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/JobMessage.java (original)
+++ oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/JobMessage.java Mon May 20 16:51:37 2013
@@ -21,7 +21,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.Map;
-import org.apache.oozie.client.event.Event.AppType;
+import org.apache.oozie.AppType;
import org.apache.oozie.client.event.Event.MessageType;
import org.apache.oozie.client.event.JobEvent;
import org.apache.oozie.client.event.jms.JMSHeaderConstants;
Modified: oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/WorkflowJobMessage.java
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/WorkflowJobMessage.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/WorkflowJobMessage.java (original)
+++ oozie/trunk/client/src/main/java/org/apache/oozie/client/event/message/WorkflowJobMessage.java Mon May 20 16:51:37 2013
@@ -19,8 +19,8 @@ package org.apache.oozie.client.event.me
import java.util.Date;
+import org.apache.oozie.AppType;
import org.apache.oozie.client.WorkflowJob;
-import org.apache.oozie.client.event.Event;
import org.apache.oozie.client.event.JobEvent.EventStatus;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonSerialize;
@@ -62,7 +62,7 @@ public class WorkflowJobMessage extends
public WorkflowJobMessage(EventStatus eventStatus, String workflowJobId,
String coordinatorActionId, Date startTime, Date endTime, WorkflowJob.Status status, String user,
String appName, String errorCode, String errorMessage) {
- super(eventStatus, Event.AppType.WORKFLOW_JOB, workflowJobId, coordinatorActionId, startTime,
+ super(eventStatus, AppType.WORKFLOW_JOB, workflowJobId, coordinatorActionId, startTime,
endTime, user, appName);
this.status = status;
this.errorCode = errorCode;
Modified: oozie/trunk/client/src/main/java/org/apache/oozie/client/rest/JsonToBean.java
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/java/org/apache/oozie/client/rest/JsonToBean.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/client/src/main/java/org/apache/oozie/client/rest/JsonToBean.java (original)
+++ oozie/trunk/client/src/main/java/org/apache/oozie/client/rest/JsonToBean.java Mon May 20 16:51:37 2013
@@ -25,7 +25,7 @@ import org.apache.oozie.client.JMSConnec
import org.apache.oozie.client.JMSConnectionInfoWrapper;
import org.apache.oozie.client.WorkflowAction;
import org.apache.oozie.client.WorkflowJob;
-import org.apache.oozie.client.event.Event.AppType;
+import org.apache.oozie.AppType;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
Modified: oozie/trunk/client/src/main/resources/oozie-coordinator-0.4.xsd
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/resources/oozie-coordinator-0.4.xsd?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/client/src/main/resources/oozie-coordinator-0.4.xsd (original)
+++ oozie/trunk/client/src/main/resources/oozie-coordinator-0.4.xsd Mon May 20 16:51:37 2013
@@ -120,7 +120,7 @@
<xs:complexType name="ACTION">
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="workflow" type="coordinator:WORKFLOW" minOccurs="1" maxOccurs="1"/>
- <xs:any namespace="uri:oozie:sla:0.1" minOccurs="0" maxOccurs="1"/>
+ <xs:any namespace="uri:oozie:sla:0.1 uri:oozie:sla:0.2" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="WORKFLOW">
Added: oozie/trunk/client/src/main/resources/oozie-sla-0.2.xsd
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/resources/oozie-sla-0.2.xsd?rev=1484523&view=auto
==============================================================================
--- oozie/trunk/client/src/main/resources/oozie-sla-0.2.xsd (added)
+++ oozie/trunk/client/src/main/resources/oozie-sla-0.2.xsd Mon May 20 16:51:37 2013
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:sla="uri:oozie:sla:0.2" elementFormDefault="qualified"
+ targetNamespace="uri:oozie:sla:0.2">
+
+ <xs:element name="info" type="sla:SLA-INFO"/>
+
+ <xs:complexType name="SLA-INFO">
+ <xs:sequence>
+ <xs:element name="nominal-time" type="xs:string" minOccurs="1"
+ maxOccurs="1"/>
+ <xs:element name="should-start" type="xs:string" minOccurs="0"
+ maxOccurs="1"/>
+ <xs:element name="should-end" type="xs:string" minOccurs="1"
+ maxOccurs="1"/>
+ <xs:element name="max-duration" type="xs:string" minOccurs="0"
+ maxOccurs="1"/>
+
+ <xs:element name="alert-events" type="xs:string" minOccurs="0"
+ maxOccurs="1"/>
+ <xs:element name="alert-contact" type="xs:string" minOccurs="0"
+ maxOccurs="1"/>
+ <xs:element name="notification-msg" type="xs:string" minOccurs="0"
+ maxOccurs="1"/>
+ <xs:element name="upstream-apps" type="xs:string" minOccurs="0"
+ maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+
+</xs:schema>
Modified: oozie/trunk/client/src/main/resources/oozie-workflow-0.4.5.xsd
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/resources/oozie-workflow-0.4.5.xsd?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/client/src/main/resources/oozie-workflow-0.4.5.xsd (original)
+++ oozie/trunk/client/src/main/resources/oozie-workflow-0.4.5.xsd Mon May 20 16:51:37 2013
@@ -1,339 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:workflow="uri:oozie:workflow:0.4.5"
- elementFormDefault="qualified" targetNamespace="uri:oozie:workflow:0.4.5">
-
- <xs:element name="workflow-app" type="workflow:WORKFLOW-APP"/>
-
- <xs:simpleType name="IDENTIFIER">
- <xs:restriction base="xs:string">
- <xs:pattern value="([a-zA-Z_]([\-_a-zA-Z0-9])*){1,39}"/>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:complexType name="WORKFLOW-APP">
- <xs:sequence>
- <xs:element name="parameters" type="workflow:PARAMETERS" minOccurs="0" maxOccurs="1"/>
- <xs:element name="global" type="workflow:GLOBAL" minOccurs="0" maxOccurs="1"/>
- <xs:element name="credentials" type="workflow:CREDENTIALS" minOccurs="0" maxOccurs="1"/>
- <xs:element name="start" type="workflow:START" minOccurs="1" maxOccurs="1"/>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element name="decision" type="workflow:DECISION" minOccurs="1" maxOccurs="1"/>
- <xs:element name="fork" type="workflow:FORK" minOccurs="1" maxOccurs="1"/>
- <xs:element name="join" type="workflow:JOIN" minOccurs="1" maxOccurs="1"/>
- <xs:element name="kill" type="workflow:KILL" minOccurs="1" maxOccurs="1"/>
- <xs:element name="action" type="workflow:ACTION" minOccurs="1" maxOccurs="1"/>
- </xs:choice>
- <xs:element name="end" type="workflow:END" minOccurs="1" maxOccurs="1"/>
- <xs:any namespace="uri:oozie:sla:0.1" minOccurs="0" maxOccurs="1"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- </xs:complexType>
-
- <xs:complexType name="PARAMETERS">
- <xs:sequence>
- <xs:element name="property" minOccurs="1" maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:string"/>
- <xs:element name="value" minOccurs="0" maxOccurs="1" type="xs:string"/>
- <xs:element name="description" minOccurs="0" maxOccurs="1" type="xs:string"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="GLOBAL">
- <xs:sequence>
- <xs:element name="job-tracker" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="name-node" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="job-xml" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="configuration" type="workflow:CONFIGURATION" minOccurs="0" maxOccurs="1"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="START">
- <xs:attribute name="to" type="workflow:IDENTIFIER" use="required"/>
- </xs:complexType>
-
- <xs:complexType name="END">
- <xs:attribute name="name" type="workflow:IDENTIFIER" use="required"/>
- </xs:complexType>
-
- <xs:complexType name="DECISION">
- <xs:sequence>
- <xs:element name="switch" type="workflow:SWITCH" minOccurs="1" maxOccurs="1"/>
- </xs:sequence>
- <xs:attribute name="name" type="workflow:IDENTIFIER" use="required"/>
- </xs:complexType>
-
- <xs:element name="switch" type="workflow:SWITCH"/>
-
- <xs:complexType name="SWITCH">
- <xs:sequence>
- <xs:sequence>
- <xs:element name="case" type="workflow:CASE" minOccurs="1" maxOccurs="unbounded"/>
- <xs:element name="default" type="workflow:DEFAULT" minOccurs="1" maxOccurs="1"/>
- </xs:sequence>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="CASE">
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="to" type="workflow:IDENTIFIER" use="required"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
-
- <xs:complexType name="DEFAULT">
- <xs:attribute name="to" type="workflow:IDENTIFIER" use="required"/>
- </xs:complexType>
-
- <xs:complexType name="FORK_TRANSITION">
- <xs:attribute name="start" type="workflow:IDENTIFIER" use="required"/>
- </xs:complexType>
-
- <xs:complexType name="FORK">
- <xs:sequence>
- <xs:element name="path" type="workflow:FORK_TRANSITION" minOccurs="2" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="name" type="workflow:IDENTIFIER" use="required"/>
- </xs:complexType>
-
- <xs:complexType name="JOIN">
- <xs:attribute name="name" type="workflow:IDENTIFIER" use="required"/>
- <xs:attribute name="to" type="workflow:IDENTIFIER" use="required"/>
- </xs:complexType>
-
- <xs:element name="kill" type="workflow:KILL"/>
-
- <xs:complexType name="KILL">
- <xs:sequence>
- <xs:element name="message" type="xs:string" minOccurs="1" maxOccurs="1"/>
- </xs:sequence>
- <xs:attribute name="name" type="workflow:IDENTIFIER" use="required"/>
- </xs:complexType>
-
- <xs:complexType name="ACTION_TRANSITION">
- <xs:attribute name="to" type="workflow:IDENTIFIER" use="required"/>
- </xs:complexType>
-
- <xs:element name="map-reduce" type="workflow:MAP-REDUCE"/>
- <xs:element name="pig" type="workflow:PIG"/>
- <xs:element name="sub-workflow" type="workflow:SUB-WORKFLOW"/>
- <xs:element name="fs" type="workflow:FS"/>
- <xs:element name="java" type="workflow:JAVA"/>
-
- <xs:complexType name="ACTION">
- <xs:sequence>
- <xs:choice minOccurs="1" maxOccurs="1">
- <xs:element name="map-reduce" type="workflow:MAP-REDUCE" minOccurs="1" maxOccurs="1"/>
- <xs:element name="pig" type="workflow:PIG" minOccurs="1" maxOccurs="1"/>
- <xs:element name="sub-workflow" type="workflow:SUB-WORKFLOW" minOccurs="1" maxOccurs="1"/>
- <xs:element name="fs" type="workflow:FS" minOccurs="1" maxOccurs="1"/>
- <xs:element name="java" type="workflow:JAVA" minOccurs="1" maxOccurs="1"/>
- <xs:any namespace="##other" minOccurs="1" maxOccurs="1"/>
- </xs:choice>
- <xs:element name="ok" type="workflow:ACTION_TRANSITION" minOccurs="1" maxOccurs="1"/>
- <xs:element name="error" type="workflow:ACTION_TRANSITION" minOccurs="1" maxOccurs="1"/>
- <xs:any namespace="uri:oozie:sla:0.1" minOccurs="0" maxOccurs="1"/>
- </xs:sequence>
- <xs:attribute name="name" type="workflow:IDENTIFIER" use="required"/>
- <xs:attribute name="cred" type="xs:string"/>
- <xs:attribute name="retry-max" type="xs:string"/>
- <xs:attribute name="retry-interval" type="xs:string"/>
- </xs:complexType>
-
- <xs:complexType name="MAP-REDUCE">
- <xs:sequence>
- <xs:element name="job-tracker" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="name-node" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="prepare" type="workflow:PREPARE" minOccurs="0" maxOccurs="1"/>
- <xs:choice minOccurs="0" maxOccurs="1">
- <xs:element name="streaming" type="workflow:STREAMING" minOccurs="0" maxOccurs="1"/>
- <xs:element name="pipes" type="workflow:PIPES" minOccurs="0" maxOccurs="1"/>
- </xs:choice>
- <xs:element name="job-xml" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="configuration" type="workflow:CONFIGURATION" minOccurs="0" maxOccurs="1"/>
- <xs:element name="file" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="archive" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="PIG">
- <xs:sequence>
- <xs:element name="job-tracker" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="name-node" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="prepare" type="workflow:PREPARE" minOccurs="0" maxOccurs="1"/>
- <xs:element name="job-xml" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="configuration" type="workflow:CONFIGURATION" minOccurs="0" maxOccurs="1"/>
- <xs:element name="script" type="xs:string" minOccurs="1" maxOccurs="1"/>
- <xs:element name="param" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="argument" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="file" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="archive" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="SUB-WORKFLOW">
- <xs:sequence>
- <xs:element name="app-path" type="xs:string" minOccurs="1" maxOccurs="1"/>
- <xs:element name="propagate-configuration" type="workflow:FLAG" minOccurs="0" maxOccurs="1"/>
- <xs:element name="configuration" type="workflow:CONFIGURATION" minOccurs="0" maxOccurs="1"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="FS">
- <xs:sequence>
- <xs:element name="name-node" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="job-xml" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="configuration" type="workflow:CONFIGURATION" minOccurs="0" maxOccurs="1"/>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element name="delete" type="workflow:DELETE"/>
- <xs:element name="mkdir" type="workflow:MKDIR"/>
- <xs:element name="move" type="workflow:MOVE"/>
- <xs:element name="chmod" type="workflow:CHMOD"/>
- <xs:element name="touchz" type="workflow:TOUCHZ"/>
- <xs:element name="chgrp" type="workflow:CHGRP"/>
- </xs:choice>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="JAVA">
- <xs:sequence>
- <xs:element name="job-tracker" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="name-node" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="prepare" type="workflow:PREPARE" minOccurs="0" maxOccurs="1"/>
- <xs:element name="job-xml" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="configuration" type="workflow:CONFIGURATION" minOccurs="0" maxOccurs="1"/>
- <xs:element name="main-class" type="xs:string" minOccurs="1" maxOccurs="1"/>
- <xs:choice minOccurs="0" maxOccurs="1">
- <xs:element name="java-opts" type="xs:string" minOccurs="1" maxOccurs="1"/>
- <xs:element name="java-opt" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
- </xs:choice>
- <xs:element name="arg" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="file" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="archive" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="capture-output" type="workflow:FLAG" minOccurs="0" maxOccurs="1"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="FLAG"/>
-
- <xs:complexType name="CONFIGURATION">
- <xs:sequence>
- <xs:element name="property" minOccurs="1" maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:string"/>
- <xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:string"/>
- <xs:element name="description" minOccurs="0" maxOccurs="1" type="xs:string"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="STREAMING">
- <xs:sequence>
- <xs:element name="mapper" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="reducer" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="record-reader" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="record-reader-mapping" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="env" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="PIPES">
- <xs:sequence>
- <xs:element name="map" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="reduce" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="inputformat" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="partitioner" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="writer" type="xs:string" minOccurs="0" maxOccurs="1"/>
- <xs:element name="program" type="xs:string" minOccurs="0" maxOccurs="1"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="PREPARE">
- <xs:sequence>
- <xs:element name="delete" type="workflow:DELETE" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="mkdir" type="workflow:MKDIR" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="DELETE">
- <xs:attribute name="path" type="xs:string" use="required"/>
- </xs:complexType>
-
- <xs:complexType name="MKDIR">
- <xs:attribute name="path" type="xs:string" use="required"/>
- </xs:complexType>
-
- <xs:complexType name="MOVE">
- <xs:attribute name="source" type="xs:string" use="required"/>
- <xs:attribute name="target" type="xs:string" use="required"/>
- </xs:complexType>
-
- <xs:complexType name="CHMOD">
- <xs:sequence>
- <xs:element name="recursive" type="workflow:FLAG" minOccurs="0" maxOccurs="1"></xs:element>
- </xs:sequence>
- <xs:attribute name="path" type="xs:string" use="required"/>
- <xs:attribute name="permissions" type="xs:string" use="required"/>
- <xs:attribute name="dir-files" type="xs:string"/>
- </xs:complexType>
-
- <xs:complexType name="TOUCHZ">
- <xs:attribute name="path" type="xs:string" use="required"/>
- </xs:complexType>
-
- <xs:complexType name="CHGRP">
- <xs:sequence>
- <xs:element name="recursive" type="workflow:FLAG" minOccurs="0" maxOccurs="1"></xs:element>
- </xs:sequence>
- <xs:attribute name="path" type="xs:string" use="required"/>
- <xs:attribute name="group" type="xs:string" use="required"/>
- <xs:attribute name="dir-files" type="xs:string"/>
- </xs:complexType>
-
- <xs:complexType name="CREDENTIALS">
- <xs:sequence minOccurs="0" maxOccurs="unbounded">
- <xs:element name="credential" type="workflow:CREDENTIAL"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="CREDENTIAL">
- <xs:sequence minOccurs="0" maxOccurs="unbounded" >
- <xs:element name="property" minOccurs="1" maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:string"/>
- <xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:string"/>
- <xs:element name="description" minOccurs="0" maxOccurs="1" type="xs:string"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="type" type="xs:string" use="required"/>
- </xs:complexType>
-</xs:schema>
Added: oozie/trunk/client/src/main/resources/oozie-workflow-0.5.xsd
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/resources/oozie-workflow-0.5.xsd?rev=1484523&view=auto
==============================================================================
--- oozie/trunk/client/src/main/resources/oozie-workflow-0.5.xsd (added)
+++ oozie/trunk/client/src/main/resources/oozie-workflow-0.5.xsd Mon May 20 16:51:37 2013
@@ -0,0 +1,339 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:workflow="uri:oozie:workflow:0.5"
+ elementFormDefault="qualified" targetNamespace="uri:oozie:workflow:0.5">
+
+ <xs:element name="workflow-app" type="workflow:WORKFLOW-APP"/>
+
+ <xs:simpleType name="IDENTIFIER">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="([a-zA-Z_]([\-_a-zA-Z0-9])*){1,39}"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:complexType name="WORKFLOW-APP">
+ <xs:sequence>
+ <xs:element name="parameters" type="workflow:PARAMETERS" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="global" type="workflow:GLOBAL" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="credentials" type="workflow:CREDENTIALS" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="start" type="workflow:START" minOccurs="1" maxOccurs="1"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="decision" type="workflow:DECISION" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="fork" type="workflow:FORK" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="join" type="workflow:JOIN" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="kill" type="workflow:KILL" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="action" type="workflow:ACTION" minOccurs="1" maxOccurs="1"/>
+ </xs:choice>
+ <xs:element name="end" type="workflow:END" minOccurs="1" maxOccurs="1"/>
+ <xs:any namespace="uri:oozie:sla:0.1 uri:oozie:sla:0.2" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="PARAMETERS">
+ <xs:sequence>
+ <xs:element name="property" minOccurs="1" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:string"/>
+ <xs:element name="value" minOccurs="0" maxOccurs="1" type="xs:string"/>
+ <xs:element name="description" minOccurs="0" maxOccurs="1" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="GLOBAL">
+ <xs:sequence>
+ <xs:element name="job-tracker" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="name-node" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="job-xml" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="configuration" type="workflow:CONFIGURATION" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="START">
+ <xs:attribute name="to" type="workflow:IDENTIFIER" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="END">
+ <xs:attribute name="name" type="workflow:IDENTIFIER" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="DECISION">
+ <xs:sequence>
+ <xs:element name="switch" type="workflow:SWITCH" minOccurs="1" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="workflow:IDENTIFIER" use="required"/>
+ </xs:complexType>
+
+ <xs:element name="switch" type="workflow:SWITCH"/>
+
+ <xs:complexType name="SWITCH">
+ <xs:sequence>
+ <xs:sequence>
+ <xs:element name="case" type="workflow:CASE" minOccurs="1" maxOccurs="unbounded"/>
+ <xs:element name="default" type="workflow:DEFAULT" minOccurs="1" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="CASE">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="to" type="workflow:IDENTIFIER" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="DEFAULT">
+ <xs:attribute name="to" type="workflow:IDENTIFIER" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="FORK_TRANSITION">
+ <xs:attribute name="start" type="workflow:IDENTIFIER" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="FORK">
+ <xs:sequence>
+ <xs:element name="path" type="workflow:FORK_TRANSITION" minOccurs="2" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="workflow:IDENTIFIER" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="JOIN">
+ <xs:attribute name="name" type="workflow:IDENTIFIER" use="required"/>
+ <xs:attribute name="to" type="workflow:IDENTIFIER" use="required"/>
+ </xs:complexType>
+
+ <xs:element name="kill" type="workflow:KILL"/>
+
+ <xs:complexType name="KILL">
+ <xs:sequence>
+ <xs:element name="message" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="workflow:IDENTIFIER" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="ACTION_TRANSITION">
+ <xs:attribute name="to" type="workflow:IDENTIFIER" use="required"/>
+ </xs:complexType>
+
+ <xs:element name="map-reduce" type="workflow:MAP-REDUCE"/>
+ <xs:element name="pig" type="workflow:PIG"/>
+ <xs:element name="sub-workflow" type="workflow:SUB-WORKFLOW"/>
+ <xs:element name="fs" type="workflow:FS"/>
+ <xs:element name="java" type="workflow:JAVA"/>
+
+ <xs:complexType name="ACTION">
+ <xs:sequence>
+ <xs:choice minOccurs="1" maxOccurs="1">
+ <xs:element name="map-reduce" type="workflow:MAP-REDUCE" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="pig" type="workflow:PIG" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="sub-workflow" type="workflow:SUB-WORKFLOW" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="fs" type="workflow:FS" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="java" type="workflow:JAVA" minOccurs="1" maxOccurs="1"/>
+ <xs:any namespace="##other" minOccurs="1" maxOccurs="1"/>
+ </xs:choice>
+ <xs:element name="ok" type="workflow:ACTION_TRANSITION" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="error" type="workflow:ACTION_TRANSITION" minOccurs="1" maxOccurs="1"/>
+ <xs:any namespace="uri:oozie:sla:0.1 uri:oozie:sla:0.2" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="workflow:IDENTIFIER" use="required"/>
+ <xs:attribute name="cred" type="xs:string"/>
+ <xs:attribute name="retry-max" type="xs:string"/>
+ <xs:attribute name="retry-interval" type="xs:string"/>
+ </xs:complexType>
+
+ <xs:complexType name="MAP-REDUCE">
+ <xs:sequence>
+ <xs:element name="job-tracker" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="name-node" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="prepare" type="workflow:PREPARE" minOccurs="0" maxOccurs="1"/>
+ <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:element name="streaming" type="workflow:STREAMING" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="pipes" type="workflow:PIPES" minOccurs="0" maxOccurs="1"/>
+ </xs:choice>
+ <xs:element name="job-xml" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="configuration" type="workflow:CONFIGURATION" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="file" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="archive" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="PIG">
+ <xs:sequence>
+ <xs:element name="job-tracker" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="name-node" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="prepare" type="workflow:PREPARE" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="job-xml" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="configuration" type="workflow:CONFIGURATION" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="script" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="param" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="argument" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="file" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="archive" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="SUB-WORKFLOW">
+ <xs:sequence>
+ <xs:element name="app-path" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="propagate-configuration" type="workflow:FLAG" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="configuration" type="workflow:CONFIGURATION" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="FS">
+ <xs:sequence>
+ <xs:element name="name-node" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="job-xml" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="configuration" type="workflow:CONFIGURATION" minOccurs="0" maxOccurs="1"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="delete" type="workflow:DELETE"/>
+ <xs:element name="mkdir" type="workflow:MKDIR"/>
+ <xs:element name="move" type="workflow:MOVE"/>
+ <xs:element name="chmod" type="workflow:CHMOD"/>
+ <xs:element name="touchz" type="workflow:TOUCHZ"/>
+ <xs:element name="chgrp" type="workflow:CHGRP"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="JAVA">
+ <xs:sequence>
+ <xs:element name="job-tracker" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="name-node" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="prepare" type="workflow:PREPARE" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="job-xml" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="configuration" type="workflow:CONFIGURATION" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="main-class" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:element name="java-opts" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="java-opt" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:choice>
+ <xs:element name="arg" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="file" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="archive" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="capture-output" type="workflow:FLAG" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="FLAG"/>
+
+ <xs:complexType name="CONFIGURATION">
+ <xs:sequence>
+ <xs:element name="property" minOccurs="1" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:string"/>
+ <xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:string"/>
+ <xs:element name="description" minOccurs="0" maxOccurs="1" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="STREAMING">
+ <xs:sequence>
+ <xs:element name="mapper" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="reducer" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="record-reader" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="record-reader-mapping" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="env" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="PIPES">
+ <xs:sequence>
+ <xs:element name="map" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="reduce" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="inputformat" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="partitioner" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="writer" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="program" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="PREPARE">
+ <xs:sequence>
+ <xs:element name="delete" type="workflow:DELETE" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="mkdir" type="workflow:MKDIR" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="DELETE">
+ <xs:attribute name="path" type="xs:string" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="MKDIR">
+ <xs:attribute name="path" type="xs:string" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="MOVE">
+ <xs:attribute name="source" type="xs:string" use="required"/>
+ <xs:attribute name="target" type="xs:string" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="CHMOD">
+ <xs:sequence>
+ <xs:element name="recursive" type="workflow:FLAG" minOccurs="0" maxOccurs="1"></xs:element>
+ </xs:sequence>
+ <xs:attribute name="path" type="xs:string" use="required"/>
+ <xs:attribute name="permissions" type="xs:string" use="required"/>
+ <xs:attribute name="dir-files" type="xs:string"/>
+ </xs:complexType>
+
+ <xs:complexType name="TOUCHZ">
+ <xs:attribute name="path" type="xs:string" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="CHGRP">
+ <xs:sequence>
+ <xs:element name="recursive" type="workflow:FLAG" minOccurs="0" maxOccurs="1"></xs:element>
+ </xs:sequence>
+ <xs:attribute name="path" type="xs:string" use="required"/>
+ <xs:attribute name="group" type="xs:string" use="required"/>
+ <xs:attribute name="dir-files" type="xs:string"/>
+ </xs:complexType>
+
+ <xs:complexType name="CREDENTIALS">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="credential" type="workflow:CREDENTIAL"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="CREDENTIAL">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded" >
+ <xs:element name="property" minOccurs="1" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:string"/>
+ <xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:string"/>
+ <xs:element name="description" minOccurs="0" maxOccurs="1" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="type" type="xs:string" use="required"/>
+ </xs:complexType>
+</xs:schema>
Modified: oozie/trunk/client/src/test/java/org/apache/oozie/client/rest/TestJsonToBean.java
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/test/java/org/apache/oozie/client/rest/TestJsonToBean.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/client/src/test/java/org/apache/oozie/client/rest/TestJsonToBean.java (original)
+++ oozie/trunk/client/src/test/java/org/apache/oozie/client/rest/TestJsonToBean.java Mon May 20 16:51:37 2013
@@ -22,6 +22,7 @@ import java.util.Properties;
import junit.framework.TestCase;
+import org.apache.oozie.AppType;
import org.apache.oozie.client.BulkResponse;
import org.apache.oozie.client.BundleJob;
import org.apache.oozie.client.CoordinatorAction;
@@ -29,7 +30,6 @@ import org.apache.oozie.client.Coordinat
import org.apache.oozie.client.JMSConnectionInfo;
import org.apache.oozie.client.WorkflowAction;
import org.apache.oozie.client.WorkflowJob;
-import org.apache.oozie.client.event.Event;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
@@ -324,9 +324,9 @@ public class TestJsonToBean extends Test
JSONObject json = new JSONObject();
json.put(JsonTags.JMS_TOPIC_PREFIX, "topicPrefix");
Properties topicProps = new Properties();
- topicProps.put(Event.AppType.WORKFLOW_JOB, "wfTopic");
- topicProps.put(Event.AppType.WORKFLOW_ACTION, "wfTopic");
- topicProps.put(Event.AppType.COORDINATOR_ACTION, "coordTopic");
+ topicProps.put(AppType.WORKFLOW_JOB, "wfTopic");
+ topicProps.put(AppType.WORKFLOW_ACTION, "wfTopic");
+ topicProps.put(AppType.COORDINATOR_ACTION, "coordTopic");
json.put(JsonTags.JMS_TOPIC_PATTERN, JSONValue.toJSONString(topicProps));
Properties props = new Properties();
props.put("k1", "v1");
@@ -339,9 +339,9 @@ public class TestJsonToBean extends Test
JSONObject json = createJMSInfoJSONObject();
JMSConnectionInfo jmsDetails = JsonToBean.createJMSConnectionInfo(json);
assertEquals("topicPrefix", jmsDetails.getTopicPrefix());
- assertEquals("wfTopic", jmsDetails.getTopicPattern(Event.AppType.WORKFLOW_JOB));
- assertEquals("wfTopic", jmsDetails.getTopicPattern(Event.AppType.WORKFLOW_ACTION));
- assertEquals("coordTopic", jmsDetails.getTopicPattern(Event.AppType.COORDINATOR_ACTION));
+ assertEquals("wfTopic", jmsDetails.getTopicPattern(AppType.WORKFLOW_JOB));
+ assertEquals("wfTopic", jmsDetails.getTopicPattern(AppType.WORKFLOW_ACTION));
+ assertEquals("coordTopic", jmsDetails.getTopicPattern(AppType.COORDINATOR_ACTION));
Properties jmsProps = jmsDetails.getJNDIProperties();
assertNotNull(jmsDetails.getJNDIProperties());
assertEquals("v1", jmsProps.get("k1"));
Modified: oozie/trunk/core/pom.xml
URL: http://svn.apache.org/viewvc/oozie/trunk/core/pom.xml?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/core/pom.xml (original)
+++ oozie/trunk/core/pom.xml Mon May 20 16:51:37 2013
@@ -375,6 +375,7 @@
<include name="**/JsonCoordinatorJob.class"/>
<include name="**/JsonCoordinatorAction.class"/>
<include name="**/JsonSLAEvent.class"/>
+ <include name="**/JsonSLARegistrationEvent.class"/>
<include name="**/JsonBundleJob.class"/>
<include name="**/WorkflowJobBean.class"/>
@@ -382,6 +383,9 @@
<include name="**/CoordinatorJobBean.class"/>
<include name="**/CoordinatorActionBean.class"/>
<include name="**/SLAEventBean.class"/>
+ <include name="**/SLARegistrationBean.class"/>
+ <include name="**/SLACalculatorBean.class"/>
+ <include name="**/SLASummaryBean.class"/>
<include name="**/BundleJobBean.class"/>
<include name="**/BundleActionBean.class"/>
</fileset>
Modified: oozie/trunk/core/src/main/conf/oozie-site.xml
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/conf/oozie-site.xml?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/core/src/main/conf/oozie-site.xml (original)
+++ oozie/trunk/core/src/main/conf/oozie-site.xml Mon May 20 16:51:37 2013
@@ -36,7 +36,12 @@
<property>
<name>oozie.service.SchemaService.wf.ext.schemas</name>
- <value>shell-action-0.1.xsd,shell-action-0.2.xsd,email-action-0.1.xsd,hive-action-0.2.xsd,hive-action-0.3.xsd,hive-action-0.4.xsd,hive-action-0.5.xsd,sqoop-action-0.2.xsd,sqoop-action-0.3.xsd,ssh-action-0.1.xsd,ssh-action-0.2.xsd,distcp-action-0.1.xsd</value>
+ <value>
+ shell-action-0.1.xsd,shell-action-0.2.xsd,email-action-0.1.xsd,hive-action-0.2.xsd,
+ hive-action-0.3.xsd,hive-action-0.4.xsd,hive-action-0.5.xsd,sqoop-action-0.2.xsd,
+ sqoop-action-0.3.xsd,ssh-action-0.1.xsd,ssh-action-0.2.xsd,distcp-action-0.1.xsd,
+ oozie-sla-0.1.xsd,oozie-sla-0.2.xsd
+ </value>
</property>
<property>
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/CoordinatorActionBean.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/CoordinatorActionBean.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/CoordinatorActionBean.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/CoordinatorActionBean.java Mon May 20 16:51:37 2013
@@ -107,7 +107,7 @@ import org.apache.openjpa.persistence.jd
// Query to maintain backward compatibility for coord job info command
@NamedQuery(name = "GET_ALL_COLS_FOR_ACTIONS_FOR_COORD_JOB_ORDER_BY_NOMINAL_TIME", query = "select OBJECT(a) from CoordinatorActionBean a where a.jobId = :jobId order by a.nominalTimestamp"),
// Query to retrieve action id, action status, pending status and external Id of not completed Coordinator actions
- @NamedQuery(name = "GET_COORD_ACTIONS_NOT_COMPLETED", query = "select a.id, a.status, a.pending, a.externalId, a.pushMissingDependencies from CoordinatorActionBean a where a.jobId = :jobId AND a.status <> 'FAILED' AND a.status <> 'TIMEDOUT' AND a.status <> 'SUCCEEDED' AND a.status <> 'KILLED'"),
+ @NamedQuery(name = "GET_COORD_ACTIONS_NOT_COMPLETED", query = "select a.id, a.status, a.pending, a.externalId, a.pushMissingDependencies, a.nominalTimestamp, a.createdTimestamp from CoordinatorActionBean a where a.jobId = :jobId AND a.status <> 'FAILED' AND a.status <> 'TIMEDOUT' AND a.status <> 'SUCCEEDED' AND a.status <> 'KILLED'"),
// Query to retrieve action id, action status, pending status and external Id of running Coordinator actions
@NamedQuery(name = "GET_COORD_ACTIONS_RUNNING", query = "select a.id, a.status, a.pending, a.externalId from CoordinatorActionBean a where a.jobId = :jobId and a.status = 'RUNNING'"),
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/ErrorCode.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/ErrorCode.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/ErrorCode.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/ErrorCode.java Mon May 20 16:51:37 2013
@@ -186,7 +186,7 @@ public enum ErrorCode {
E1004(XLog.STD, "Expression language evaluation error, {0}"),
E1005(XLog.STD, "Could not read the coordinator job configuration read from DB, {0}"),
E1006(XLog.STD, "Invalid coordinator application [{0}], {1}"),
- E1007(XLog.STD, "Unable to add record to SLA table. [{0}], {1}"),
+ E1007(XLog.STD, "Unable to add record for SLA. [{0}], {1}"),
E1008(XLog.STD, "Not implemented. [{0}]"),
E1009(XLog.STD, "Unable to parse XML response. [{0}]"),
E1010(XLog.STD, "Invalid data in coordinator xml. [{0}]"),
@@ -205,8 +205,7 @@ public enum ErrorCode {
E1100(XLog.STD, "Command precondition does not hold before execution, [{0}]"),
- E1101(XLog.STD, "SLA Nominal time is required."),
- E1102(XLog.STD, "SLA should-start can't be empty."),
+ E1101(XLog.STD, "SLA <{0}> cannot be empty."),
E1201(XLog.STD, "State [{0}] is invalid for job [{1}]."),
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/SLAEventBean.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/SLAEventBean.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/SLAEventBean.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/SLAEventBean.java Mon May 20 16:51:37 2013
@@ -35,6 +35,7 @@ import org.apache.oozie.util.DateUtils;
import org.apache.oozie.util.XLog;
import org.jdom.Element;
+@Deprecated
@Entity
@NamedQueries({
@NamedQuery(name = "GET_SLA_EVENT_NEWER_SEQ_LIMITED", query = "select OBJECT(w) from SLAEventBean w where w.event_id > :id order by w.event_id"),
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/client/rest/JsonSLAEvent.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/client/rest/JsonSLAEvent.java?rev=1484523&r1=1484522&r2=1484523&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/client/rest/JsonSLAEvent.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/client/rest/JsonSLAEvent.java Mon May 20 16:51:37 2013
@@ -35,6 +35,7 @@ import javax.persistence.Transient;
import org.apache.oozie.client.SLAEvent;
import org.json.simple.JSONObject;
+@Deprecated
@Entity
@Table(name = "SLA_EVENTS")
@DiscriminatorColumn(name = "bean_type", discriminatorType = DiscriminatorType.STRING)