Implement event listeners of the FlowManager.

- This commit adds two types of event objects: FlowBatchStateChangedEvent and FlowStatesChangedEvent.
- Listeners for these objects are defined by FlowManagerListener interface.
- FlowBatchStateChangedEvent notifies state changes of the flow batch operation.
 -- The state is defined by FlowBatchState.
- FlowStatesChangedEvent notifies state changes of the set of Flow objects.
 -- The state is defined by FlowState.
- This task is a part of ONOS-1739.

Change-Id: Ie8b3bb1c58dbe6bc608936e4a269e1de12dee96c
diff --git a/src/main/java/net/onrc/onos/api/flowmanager/FlowState.java b/src/main/java/net/onrc/onos/api/flowmanager/FlowState.java
new file mode 100644
index 0000000..4cb03c7
--- /dev/null
+++ b/src/main/java/net/onrc/onos/api/flowmanager/FlowState.java
@@ -0,0 +1,38 @@
+package net.onrc.onos.api.flowmanager;
+
+/**
+ * Represents the state of the Flow object.
+ */
+public enum FlowState {
+
+    /**
+     * The flow object is submitted, but not compiled yet.
+     */
+    SUBMITTED,
+
+    /**
+     * The match-action plan has been compiled from the flow object, but not
+     * installed yet.
+     */
+    COMPILED,
+
+    /**
+     * The compiled match-action plan has been installed successfully.
+     */
+    INSTALLED,
+
+    /**
+     * The installed flow is withdrawing.
+     */
+    WITHDRAWING,
+
+    /**
+     * The installed flow has been withdrawn successfully.
+     */
+    WITHDRAWN,
+
+    /**
+     * The FlowManager has failed to compile, install or withdraw the flow.
+     */
+    FAILED,
+}