You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sh...@apache.org on 2014/12/08 19:32:32 UTC

[4/6] airavata git commit: Preserve argument order and application arguments

Preserve argument order and application arguments


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/a61b37f1
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/a61b37f1
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/a61b37f1

Branch: refs/heads/master
Commit: a61b37f17cb1d9ee9c98029fb0ac7a8836cd993d
Parents: ca2f23b
Author: shamrath <sh...@gmail.com>
Authored: Thu Dec 4 22:31:29 2014 -0500
Committer: shamrath <sh...@gmail.com>
Committed: Thu Dec 4 22:31:29 2014 -0500

----------------------------------------------------------------------
 .../applicationInterfaceModel_types.cpp         |  22 +++-
 .../airavata/applicationInterfaceModel_types.h  |  23 +++--
 .../lib/airavata/experimentModel_types.cpp      |  12 +--
 .../lib/airavata/experimentModel_types.h        |  12 +--
 .../lib/airavata/workflowDataModel_types.cpp    |   4 +-
 .../lib/airavata/workflowDataModel_types.h      |   4 +-
 .../Model/AppCatalog/AppInterface/Types.php     |  20 ++++
 .../tools/RegisterOGCEUS3Application.java       |   2 +-
 .../tools/RegisterSampleApplications.java       |  76 +++++++-------
 .../tools/RegisterSampleApplicationsUtils.java  |   3 +-
 .../client/tools/RegisterUS3Application.java    |   2 +-
 .../appinterface/InputDataObjectType.java       | 102 ++++++++++++++++++-
 .../airavata/model/util/AppInterfaceUtil.java   |   2 +
 .../applicationInterfaceModel.thrift            |   3 +-
 .../data/impl/ApplicationInterfaceImpl.java     |   6 +-
 .../catalog/data/impl/WorkflowCatalogImpl.java  |   4 +-
 .../catalog/data/model/ApplicationInput.java    |  10 ++
 .../catalog/data/model/WorkflowInput.java       |  12 ++-
 .../resources/ApplicationInputResource.java     |  22 ++--
 .../data/resources/WorkflowInputResource.java   |  21 ++--
 .../catalog/data/util/AppCatalogJPAUtils.java   |   6 +-
 .../data/util/AppCatalogThriftConversion.java   |   4 +-
 .../app/catalog/test/AppInterfaceTest.java      |   2 +
 .../gfac/local/provider/impl/LocalProvider.java |  41 ++++++--
 .../registry/jpa/impl/ExperimentRegistry.java   |  12 +++
 .../registry/jpa/model/ApplicationInput.java    |  11 ++
 .../registry/jpa/model/Experiment_Input.java    |  11 ++
 .../registry/jpa/model/NodeInput.java           |  10 ++
 .../jpa/resources/ApplicationInputResource.java |  11 ++
 .../jpa/resources/ExperimentInputResource.java  |  11 ++
 .../jpa/resources/NodeInputResource.java        |  12 ++-
 .../registry/jpa/resources/Utils.java           |   3 +
 .../jpa/utils/ThriftDataModelConversion.java    |  15 ++-
 .../src/main/resources/registry-derby.sql       |   3 +
 .../src/main/resources/registry-mysql.sql       |   3 +
 .../engine/interpretor/WorkflowInterpreter.java |  14 ++-
 .../model/component/ws/WSComponent.java         |   2 +-
 .../component/ws/WSComponentApplication.java    |  95 +++++++++--------
 .../ws/WSComponentApplicationParameter.java     |  23 ++++-
 .../model/component/ws/WSComponentPort.java     |  16 ++-
 .../workflow/model/gpel/script/BPELScript.java  |   2 +-
 .../model/gpel/script/WorkflowWSDL.java         |   3 +-
 .../workflow/model/graph/GraphSchema.java       |   1 +
 .../workflow/model/graph/system/InputNode.java  |  11 ++
 .../workflow/model/utils/WorkflowConstants.java |  16 ++-
 .../registry/ComponentRegistryLoader.java       |   3 +-
 .../WorkflowInterpreterLaunchWindow.java        |   1 +
 47 files changed, 536 insertions(+), 168 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.cpp
index 4a064b0..b32630a 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.cpp
@@ -45,8 +45,8 @@ const char* _kDataTypeNames[] = {
 };
 const std::map<int, const char*> _DataType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(6, _kDataTypeValues, _kDataTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 
-const char* InputDataObjectType::ascii_fingerprint = "24F962C1CE4BE9FBD0F5D5EE9D1D5C00";
-const uint8_t InputDataObjectType::binary_fingerprint[16] = {0x24,0xF9,0x62,0xC1,0xCE,0x4B,0xE9,0xFB,0xD0,0xF5,0xD5,0xEE,0x9D,0x1D,0x5C,0x00};
+const char* InputDataObjectType::ascii_fingerprint = "91FB63C319A494A8E1E6563006402BC7";
+const uint8_t InputDataObjectType::binary_fingerprint[16] = {0x91,0xFB,0x63,0xC3,0x19,0xA4,0x94,0xA8,0xE1,0xE6,0x56,0x30,0x06,0x40,0x2B,0xC7};
 
 uint32_t InputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -127,6 +127,14 @@ uint32_t InputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot)
           xfer += iprot->skip(ftype);
         }
         break;
+      case 8:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->inputOrder);
+          this->__isset.inputOrder = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -179,6 +187,11 @@ uint32_t InputDataObjectType::write(::apache::thrift::protocol::TProtocol* oprot
     xfer += oprot->writeString(this->metaData);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.inputOrder) {
+    xfer += oprot->writeFieldBegin("inputOrder", ::apache::thrift::protocol::T_I32, 8);
+    xfer += oprot->writeI32(this->inputOrder);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -193,6 +206,7 @@ void swap(InputDataObjectType &a, InputDataObjectType &b) {
   swap(a.standardInput, b.standardInput);
   swap(a.userFriendlyDescription, b.userFriendlyDescription);
   swap(a.metaData, b.metaData);
+  swap(a.inputOrder, b.inputOrder);
   swap(a.__isset, b.__isset);
 }
 
@@ -291,8 +305,8 @@ void swap(OutputDataObjectType &a, OutputDataObjectType &b) {
   swap(a.__isset, b.__isset);
 }
 
-const char* ApplicationInterfaceDescription::ascii_fingerprint = "355A0972969341C2A113049339427849";
-const uint8_t ApplicationInterfaceDescription::binary_fingerprint[16] = {0x35,0x5A,0x09,0x72,0x96,0x93,0x41,0xC2,0xA1,0x13,0x04,0x93,0x39,0x42,0x78,0x49};
+const char* ApplicationInterfaceDescription::ascii_fingerprint = "F2FFD013708A2D0DA86FD5438F17268E";
+const uint8_t ApplicationInterfaceDescription::binary_fingerprint[16] = {0xF2,0xFF,0xD0,0x13,0x70,0x8A,0x2D,0x0D,0xA8,0x6F,0xD5,0x43,0x8F,0x17,0x26,0x8E};
 
 uint32_t ApplicationInterfaceDescription::read(::apache::thrift::protocol::TProtocol* iprot) {
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.h
index 961feea..8076197 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.h
@@ -48,22 +48,23 @@ struct DataType {
 extern const std::map<int, const char*> _DataType_VALUES_TO_NAMES;
 
 typedef struct _InputDataObjectType__isset {
-  _InputDataObjectType__isset() : value(false), type(false), applicationArgument(false), standardInput(true), userFriendlyDescription(false), metaData(false) {}
+  _InputDataObjectType__isset() : value(false), type(false), applicationArgument(false), standardInput(true), userFriendlyDescription(false), metaData(false), inputOrder(false) {}
   bool value;
   bool type;
   bool applicationArgument;
   bool standardInput;
   bool userFriendlyDescription;
   bool metaData;
+  bool inputOrder;
 } _InputDataObjectType__isset;
 
 class InputDataObjectType {
  public:
 
-  static const char* ascii_fingerprint; // = "24F962C1CE4BE9FBD0F5D5EE9D1D5C00";
-  static const uint8_t binary_fingerprint[16]; // = {0x24,0xF9,0x62,0xC1,0xCE,0x4B,0xE9,0xFB,0xD0,0xF5,0xD5,0xEE,0x9D,0x1D,0x5C,0x00};
+  static const char* ascii_fingerprint; // = "91FB63C319A494A8E1E6563006402BC7";
+  static const uint8_t binary_fingerprint[16]; // = {0x91,0xFB,0x63,0xC3,0x19,0xA4,0x94,0xA8,0xE1,0xE6,0x56,0x30,0x06,0x40,0x2B,0xC7};
 
-  InputDataObjectType() : name(), value(), type((DataType::type)0), applicationArgument(), standardInput(false), userFriendlyDescription(), metaData() {
+  InputDataObjectType() : name(), value(), type((DataType::type)0), applicationArgument(), standardInput(false), userFriendlyDescription(), metaData(), inputOrder(0) {
   }
 
   virtual ~InputDataObjectType() throw() {}
@@ -75,6 +76,7 @@ class InputDataObjectType {
   bool standardInput;
   std::string userFriendlyDescription;
   std::string metaData;
+  int32_t inputOrder;
 
   _InputDataObjectType__isset __isset;
 
@@ -112,6 +114,11 @@ class InputDataObjectType {
     __isset.metaData = true;
   }
 
+  void __set_inputOrder(const int32_t val) {
+    inputOrder = val;
+    __isset.inputOrder = true;
+  }
+
   bool operator == (const InputDataObjectType & rhs) const
   {
     if (!(name == rhs.name))
@@ -140,6 +147,10 @@ class InputDataObjectType {
       return false;
     else if (__isset.metaData && !(metaData == rhs.metaData))
       return false;
+    if (__isset.inputOrder != rhs.__isset.inputOrder)
+      return false;
+    else if (__isset.inputOrder && !(inputOrder == rhs.inputOrder))
+      return false;
     return true;
   }
   bool operator != (const InputDataObjectType &rhs) const {
@@ -230,8 +241,8 @@ typedef struct _ApplicationInterfaceDescription__isset {
 class ApplicationInterfaceDescription {
  public:
 
-  static const char* ascii_fingerprint; // = "355A0972969341C2A113049339427849";
-  static const uint8_t binary_fingerprint[16]; // = {0x35,0x5A,0x09,0x72,0x96,0x93,0x41,0xC2,0xA1,0x13,0x04,0x93,0x39,0x42,0x78,0x49};
+  static const char* ascii_fingerprint; // = "F2FFD013708A2D0DA86FD5438F17268E";
+  static const uint8_t binary_fingerprint[16]; // = {0xF2,0xFF,0xD0,0x13,0x70,0x8A,0x2D,0x0D,0xA8,0x6F,0xD5,0x43,0x8F,0x17,0x26,0x8E};
 
   ApplicationInterfaceDescription() : applicationInterfaceId("DO_NOT_SET_AT_CLIENTS"), applicationName(), applicationDescription() {
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp
index 18a2674..ca30e91 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp
@@ -1843,8 +1843,8 @@ void swap(DataTransferDetails &a, DataTransferDetails &b) {
   swap(a.__isset, b.__isset);
 }
 
-const char* TaskDetails::ascii_fingerprint = "C0E50EB91BEBDC23A45D03BFD2BD630A";
-const uint8_t TaskDetails::binary_fingerprint[16] = {0xC0,0xE5,0x0E,0xB9,0x1B,0xEB,0xDC,0x23,0xA4,0x5D,0x03,0xBF,0xD2,0xBD,0x63,0x0A};
+const char* TaskDetails::ascii_fingerprint = "DFCB41DA19801BFF3CFE9E62BF38A6C7";
+const uint8_t TaskDetails::binary_fingerprint[16] = {0xDF,0xCB,0x41,0xDA,0x19,0x80,0x1B,0xFF,0x3C,0xFE,0x9E,0x62,0xBF,0x38,0xA6,0xC7};
 
 uint32_t TaskDetails::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -2190,8 +2190,8 @@ void swap(TaskDetails &a, TaskDetails &b) {
   swap(a.__isset, b.__isset);
 }
 
-const char* WorkflowNodeDetails::ascii_fingerprint = "F9600D5A8E84EAF65A64E38C18DFACAE";
-const uint8_t WorkflowNodeDetails::binary_fingerprint[16] = {0xF9,0x60,0x0D,0x5A,0x8E,0x84,0xEA,0xF6,0x5A,0x64,0xE3,0x8C,0x18,0xDF,0xAC,0xAE};
+const char* WorkflowNodeDetails::ascii_fingerprint = "1A079CC07FB1A7970B53C4E16D7A3344";
+const uint8_t WorkflowNodeDetails::binary_fingerprint[16] = {0x1A,0x07,0x9C,0xC0,0x7F,0xB1,0xA7,0x97,0x0B,0x53,0xC4,0xE1,0x6D,0x7A,0x33,0x44};
 
 uint32_t WorkflowNodeDetails::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -2646,8 +2646,8 @@ void swap(ValidationResults &a, ValidationResults &b) {
   swap(a.validationResultList, b.validationResultList);
 }
 
-const char* Experiment::ascii_fingerprint = "CDFB79AEABF988D5D38D8EEAEEBECC6F";
-const uint8_t Experiment::binary_fingerprint[16] = {0xCD,0xFB,0x79,0xAE,0xAB,0xF9,0x88,0xD5,0xD3,0x8D,0x8E,0xEA,0xEE,0xBE,0xCC,0x6F};
+const char* Experiment::ascii_fingerprint = "655CCC3196684D1F7DD154965195C52B";
+const uint8_t Experiment::binary_fingerprint[16] = {0x65,0x5C,0xCC,0x31,0x96,0x68,0x4D,0x1F,0x7D,0xD1,0x54,0x96,0x51,0x95,0xC5,0x2B};
 
 uint32_t Experiment::read(::apache::thrift::protocol::TProtocol* iprot) {
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h
index c4edbb7..fa45481 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h
@@ -1294,8 +1294,8 @@ typedef struct _TaskDetails__isset {
 class TaskDetails {
  public:
 
-  static const char* ascii_fingerprint; // = "C0E50EB91BEBDC23A45D03BFD2BD630A";
-  static const uint8_t binary_fingerprint[16]; // = {0xC0,0xE5,0x0E,0xB9,0x1B,0xEB,0xDC,0x23,0xA4,0x5D,0x03,0xBF,0xD2,0xBD,0x63,0x0A};
+  static const char* ascii_fingerprint; // = "DFCB41DA19801BFF3CFE9E62BF38A6C7";
+  static const uint8_t binary_fingerprint[16]; // = {0xDF,0xCB,0x41,0xDA,0x19,0x80,0x1B,0xFF,0x3C,0xFE,0x9E,0x62,0xBF,0x38,0xA6,0xC7};
 
   TaskDetails() : taskID("DO_NOT_SET_AT_CLIENTS"), creationTime(0), applicationId(), applicationVersion(), applicationDeploymentId() {
   }
@@ -1473,8 +1473,8 @@ typedef struct _WorkflowNodeDetails__isset {
 class WorkflowNodeDetails {
  public:
 
-  static const char* ascii_fingerprint; // = "F9600D5A8E84EAF65A64E38C18DFACAE";
-  static const uint8_t binary_fingerprint[16]; // = {0xF9,0x60,0x0D,0x5A,0x8E,0x84,0xEA,0xF6,0x5A,0x64,0xE3,0x8C,0x18,0xDF,0xAC,0xAE};
+  static const char* ascii_fingerprint; // = "1A079CC07FB1A7970B53C4E16D7A3344";
+  static const uint8_t binary_fingerprint[16]; // = {0x1A,0x07,0x9C,0xC0,0x7F,0xB1,0xA7,0x97,0x0B,0x53,0xC4,0xE1,0x6D,0x7A,0x33,0x44};
 
   WorkflowNodeDetails() : nodeInstanceId("DO_NOT_SET_AT_CLIENTS"), creationTime(0), nodeName("SINGLE_APP_NODE"), executionUnit((ExecutionUnit::type)1), executionUnitData() {
     executionUnit = (ExecutionUnit::type)1;
@@ -1712,8 +1712,8 @@ typedef struct _Experiment__isset {
 class Experiment {
  public:
 
-  static const char* ascii_fingerprint; // = "CDFB79AEABF988D5D38D8EEAEEBECC6F";
-  static const uint8_t binary_fingerprint[16]; // = {0xCD,0xFB,0x79,0xAE,0xAB,0xF9,0x88,0xD5,0xD3,0x8D,0x8E,0xEA,0xEE,0xBE,0xCC,0x6F};
+  static const char* ascii_fingerprint; // = "655CCC3196684D1F7DD154965195C52B";
+  static const uint8_t binary_fingerprint[16]; // = {0x65,0x5C,0xCC,0x31,0x96,0x68,0x4D,0x1F,0x7D,0xD1,0x54,0x96,0x51,0x95,0xC5,0x2B};
 
   Experiment() : experimentID("DO_NOT_SET_AT_CLIENTS"), projectID("DEFAULT"), creationTime(0), userName(), name(), description(), applicationId(), applicationVersion(), workflowTemplateId(), workflowTemplateVersion(), workflowExecutionInstanceId() {
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.cpp
index 53f0b70..195d6b6 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.cpp
@@ -27,8 +27,8 @@
 
 
 
-const char* Workflow::ascii_fingerprint = "0F4DE03295CE4C20055DE0E68CFA7A65";
-const uint8_t Workflow::binary_fingerprint[16] = {0x0F,0x4D,0xE0,0x32,0x95,0xCE,0x4C,0x20,0x05,0x5D,0xE0,0xE6,0x8C,0xFA,0x7A,0x65};
+const char* Workflow::ascii_fingerprint = "C0E4ABD766E59503FEF37ABFB58F6DC5";
+const uint8_t Workflow::binary_fingerprint[16] = {0xC0,0xE4,0xAB,0xD7,0x66,0xE5,0x95,0x03,0xFE,0xF3,0x7A,0xBF,0xB5,0x8F,0x6D,0xC5};
 
 uint32_t Workflow::read(::apache::thrift::protocol::TProtocol* iprot) {
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.h
index d688702..7ca41d9 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.h
@@ -46,8 +46,8 @@ typedef struct _Workflow__isset {
 class Workflow {
  public:
 
-  static const char* ascii_fingerprint; // = "0F4DE03295CE4C20055DE0E68CFA7A65";
-  static const uint8_t binary_fingerprint[16]; // = {0x0F,0x4D,0xE0,0x32,0x95,0xCE,0x4C,0x20,0x05,0x5D,0xE0,0xE6,0x8C,0xFA,0x7A,0x65};
+  static const char* ascii_fingerprint; // = "C0E4ABD766E59503FEF37ABFB58F6DC5";
+  static const uint8_t binary_fingerprint[16]; // = {0xC0,0xE4,0xAB,0xD7,0x66,0xE5,0x95,0x03,0xFE,0xF3,0x7A,0xBF,0xB5,0x8F,0x6D,0xC5};
 
   Workflow() : templateId("DO_NOT_SET_AT_CLIENTS"), name(), graph(), image() {
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppInterface/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppInterface/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppInterface/Types.php
index 5350e10..ff6b2be 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppInterface/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppInterface/Types.php
@@ -44,6 +44,7 @@ class InputDataObjectType {
   public $standardInput = false;
   public $userFriendlyDescription = null;
   public $metaData = null;
+  public $inputOrder = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -76,6 +77,10 @@ class InputDataObjectType {
           'var' => 'metaData',
           'type' => TType::STRING,
           ),
+        8 => array(
+          'var' => 'inputOrder',
+          'type' => TType::I32,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -100,6 +105,9 @@ class InputDataObjectType {
       if (isset($vals['metaData'])) {
         $this->metaData = $vals['metaData'];
       }
+      if (isset($vals['inputOrder'])) {
+        $this->inputOrder = $vals['inputOrder'];
+      }
     }
   }
 
@@ -171,6 +179,13 @@ class InputDataObjectType {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 8:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->inputOrder);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -219,6 +234,11 @@ class InputDataObjectType {
       $xfer += $output->writeString($this->metaData);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->inputOrder !== null) {
+      $xfer += $output->writeFieldBegin('inputOrder', TType::I32, 8);
+      $xfer += $output->writeI32($this->inputOrder);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterOGCEUS3Application.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterOGCEUS3Application.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterOGCEUS3Application.java
index 2b7c195..9ba0b4b 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterOGCEUS3Application.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterOGCEUS3Application.java
@@ -154,7 +154,7 @@ public class RegisterOGCEUS3Application {
             appModules.add(ultrascanModuleId);
 
             InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("input", null,
-                    DataType.URI, null, false, "input tar file", null);
+                    DataType.URI, null, 1, false, "input tar file", null);
            
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
index 41020a0..e4e1e32 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
@@ -363,7 +363,7 @@ public class RegisterSampleApplications {
 
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("s_struct", "",
-                    DataType.URI, null, false, "Starting Structure File", null));
+                    DataType.URI, null, 1, false, "Starting Structure File", null));
 
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
@@ -380,11 +380,11 @@ public class RegisterSampleApplications {
             applicationInputs.clear();
             applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("ffcomplient_struct", "",
-                    DataType.URI, null, false, "FFComplient Structure File", null));
+                    DataType.URI, null, 1, false, "FFComplient Structure File", null));
             applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("topology", "",
-                    DataType.URI, null, false, "Topology File", null));
+                    DataType.URI, null, 2, false, "Topology File", null));
             applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("control_param_emv", "",
-                    DataType.URI, null, false, "Controlled parameters array of EM Vacuum", null));
+                    DataType.URI, null, 3, false, "Controlled parameters array of EM Vacuum", null));
 
 
             applicationOutputs.clear();
@@ -399,7 +399,7 @@ public class RegisterSampleApplications {
             applicationInputs.clear();
             applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("energy_min_struct", "",
-                    DataType.URI, null, false, "Energy Minimized Structure File", null));
+                    DataType.URI, null, 1, false, "Energy Minimized Structure File", null));
 
             applicationOutputs.clear();
             applicationOutputs = new ArrayList<OutputDataObjectType>();
@@ -413,11 +413,11 @@ public class RegisterSampleApplications {
             applicationInputs.clear();
             applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("struct_with_pbc", "",
-                    DataType.URI, null, false, "Structure with PBC File", null));
+                    DataType.URI, null, 1, false, "Structure with PBC File", null));
             applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("solvent_struct", "",
-                    DataType.URI, null, false, "Solvent Structure File", null));
+                    DataType.URI, null, 2, false, "Solvent Structure File", null));
             applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("topology", "",
-                    DataType.URI, null, false, "Topology File", null));
+                    DataType.URI, null, 3, false, "Topology File", null));
 
             applicationOutputs.clear();
             applicationOutputs = new ArrayList<OutputDataObjectType>();
@@ -434,11 +434,11 @@ public class RegisterSampleApplications {
             applicationInputs.clear();
             applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("struct_with_water", "",
-                    DataType.URI, null, false, "Structure with water File", null));
+                    DataType.URI, null, 1, false, "Structure with water File", null));
             applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("topology_with_water", "",
-            		DataType.URI, null, false, "Topology including water File", null));
+                    DataType.URI, null, 2, false, "Topology including water File", null));
             applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("control_param_emv", "",
-                    DataType.URI, null, false, "Controlled parameters array of EM Vacuum", null));
+                    DataType.URI, null, 3, false, "Controlled parameters array of EM Vacuum", null));
 
             applicationOutputs.clear();
             applicationOutputs = new ArrayList<OutputDataObjectType>();
@@ -452,9 +452,9 @@ public class RegisterSampleApplications {
             applicationInputs.clear();
             applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("struct_topoogy", "",
-                    DataType.URI, null, false, "Structure and Topology File", null));
+                    DataType.URI, null, 1, false, "Structure and Topology File", null));
             applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("topology_with_water", "",
-            		DataType.URI, null, false, "Topology including water File", null));
+                    DataType.URI, null, 2, false, "Topology including water File", null));
 
             applicationOutputs.clear();
             applicationOutputs = new ArrayList<OutputDataObjectType>();
@@ -471,11 +471,11 @@ public class RegisterSampleApplications {
             applicationInputs.clear();
             applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("sys_topoogy", "",
-                    DataType.URI, null, false, "Structure and Topology File", null));
+                    DataType.URI, null, 1, false, "Structure and Topology File", null));
             applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("sys_config", "",
-            		DataType.URI, null, false, "Topology including water File", null));
+                    DataType.URI, null, 2, false, "Topology including water File", null));
             applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("control_param_ems", "",
-                    DataType.URI, null, false, "Controlled parameters array of EM Solvent", null));
+                    DataType.URI, null, 3, false, "Controlled parameters array of EM Solvent", null));
 
             applicationOutputs.clear();
             applicationOutputs = new ArrayList<OutputDataObjectType>();
@@ -501,7 +501,7 @@ public class RegisterSampleApplications {
             appModules.add(echoModuleId);
 
             InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("echo_input", "echo_output=Hello World",
-                    DataType.STRING, null, false, "A test string to Echo", null);
+                    DataType.STRING, null, 1, false, "A test string to Echo", null);
 
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
@@ -530,7 +530,7 @@ public class RegisterSampleApplications {
             appModules.add(echoModuleId);
 
             InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Input_to_Echo", "Hello World",
-                    DataType.STRING, null, false, "A test string to Echo", null);
+                    DataType.STRING, null, 1, false, "A test string to Echo", null);
             
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
@@ -559,13 +559,13 @@ public class RegisterSampleApplications {
             appModules.add(amberModuleId);
 
             InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Heat_Restart_File", null,
-                    DataType.URI, null, false, "Heating up the system equilibration stage - 02_Heat.rst", null);
+                    DataType.URI, null, 1, false, "Heating up the system equilibration stage - 02_Heat.rst", null);
 
             InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("Production_Control_File", null,
-                    DataType.URI, null, false, "Constant pressure and temperature for production stage - 03_Prod.in", null);
+                    DataType.URI, null, 2, false, "Constant pressure and temperature for production stage - 03_Prod.in", null);
 
             InputDataObjectType input3 = RegisterSampleApplicationsUtils.createAppInput("Parameter_Topology_File", null,
-                    DataType.URI, null, false, "Parameter and Topology coordinates - prmtop", null);
+                    DataType.URI, null, 3, false, "Parameter and Topology coordinates - prmtop", null);
 
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
@@ -601,13 +601,13 @@ public class RegisterSampleApplications {
             appModules.add(autoDockModuleId);
 
             InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Heat_Restart_File", null,
-                    DataType.URI, null, false, "Heating up the system equilibration stage", null);
+                    DataType.URI, null, 1, false, "Heating up the system equilibration stage", null);
 
             InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("Production_Control_File", null,
-                    DataType.URI, null, false, "Constant pressure and temperature for production stage", null);
+                    DataType.URI, null, 2, false, "Constant pressure and temperature for production stage", null);
 
             InputDataObjectType input3 = RegisterSampleApplicationsUtils.createAppInput("Parameter_Topology_File", null,
-                    DataType.URI, null, false, "Parameter and Topology coordinates", null);
+                    DataType.URI, null, 3, false, "Parameter and Topology coordinates", null);
 
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
@@ -638,10 +638,10 @@ public class RegisterSampleApplications {
             appModules.add(espressoModuleId);
 
             InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("AI_Primitive_Cell", null,
-                    DataType.URI, null, false, "AI_Metal_Input_File - Al.sample.in", null);
+                    DataType.URI, null, 1, false, "AI_Metal_Input_File - Al.sample.in", null);
 
             InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("AI_Pseudopotential_File", null,
-                    DataType.URI, null, false, "Constant pressure and temperature for production stage - Al.pz-vbc.UPF", null);
+                    DataType.URI, null, 2, false, "Constant pressure and temperature for production stage - Al.pz-vbc.UPF", null);
 
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
@@ -672,10 +672,10 @@ public class RegisterSampleApplications {
             appModules.add(gromacsModuleId);
 
             InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Portable_Input_Binary_File", null,
-                    DataType.URI, null, false, "Coordinates velocities, molecular topology and simulation parameters - pdb1y6l-EM-vacuum.tpr", null);
+                    DataType.URI, null, 1, false, "Coordinates velocities, molecular topology and simulation parameters - pdb1y6l-EM-vacuum.tpr", null);
 
             InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("GROMOS_Coordinate_File", null,
-                    DataType.URI, null, false, "Trajectory Coordinates Molecular Structure in Gromos87 format - pdb1y6l-EM-vacuum.gro", null);
+                    DataType.URI, null, 2, false, "Trajectory Coordinates Molecular Structure in Gromos87 format - pdb1y6l-EM-vacuum.gro", null);
 
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
@@ -708,7 +708,7 @@ public class RegisterSampleApplications {
             appModules.add(lammpsModuleId);
 
             InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Friction_Simulation_Input", null,
-                    DataType.URI, null, false, "Friction Simulation Input - in.friction", null);
+                    DataType.URI, null, 1, false, "Friction Simulation Input - in.friction", null);
 
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
@@ -736,7 +736,7 @@ public class RegisterSampleApplications {
             appModules.add(nwChemModuleId);
 
             InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Water_Molecule_Input", null,
-                    DataType.URI, null, false, "Water Molecule Input File - water.nw", null);
+                    DataType.URI, null, 1, false, "Water Molecule Input File - water.nw", null);
 
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
@@ -765,10 +765,10 @@ public class RegisterSampleApplications {
             appModules.add(trinityModuleId);
 
             InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("RNA_Seq_Left_Input", null,
-                    DataType.URI, null, false, "RNA-Seq Left Library - reads.left.fq", null);
+                    DataType.URI, null, 1, false, "RNA-Seq Left Library - reads.left.fq", null);
 
             InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("RNA_Seq_Right_Input", null,
-                    DataType.URI, null, false, "RNA-Seq Right Library - reads.right.fq", null);
+                    DataType.URI, null, 2, false, "RNA-Seq Right Library - reads.right.fq", null);
 
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
@@ -800,13 +800,13 @@ public class RegisterSampleApplications {
             appModules.add(wrfModuleId);
 
             InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Config_Namelist_File", null,
-                    DataType.URI, null, false, "Namelist Configuration File - namelist.input", null);
+                    DataType.URI, null, 1, false, "Namelist Configuration File - namelist.input", null);
 
             InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("WRF_Initial_Conditions", null,
-                    DataType.URI, null, false, "Initial Conditions File - wrfinput_d01", null);
+                    DataType.URI, null, 2, false, "Initial Conditions File - wrfinput_d01", null);
 
             InputDataObjectType input3 = RegisterSampleApplicationsUtils.createAppInput("WRF_Boundary_File", null,
-                    DataType.URI, null, false, "Boundary Conditions File - wrfbdy_d01", null);
+                    DataType.URI, null, 3, false, "Boundary Conditions File - wrfbdy_d01", null);
 
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
@@ -841,13 +841,13 @@ public class RegisterSampleApplications {
             appModules.add(phastaModuleId);
 
             InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Parasolid_Geometric_Model", null,
-                    DataType.URI, null, false, "Parasolid geometric model - geom.xmt_txt", null);
+                    DataType.URI, null, 1, false, "Parasolid geometric model - geom.xmt_txt", null);
 
             InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("Problem_Definition", null,
-                    DataType.URI, null, false, "problem definition - geom.smd", null);
+                    DataType.URI, null, 2, false, "problem definition - geom.smd", null);
 
             InputDataObjectType input3 = RegisterSampleApplicationsUtils.createAppInput("Mesh_Description_File", null,
-                    DataType.URI, null, false, "Mesh Description - geom.sms", null);
+                    DataType.URI, null, 3, false, "Mesh Description - geom.sms", null);
 
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplicationsUtils.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplicationsUtils.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplicationsUtils.java
index 34f770a..58ba387 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplicationsUtils.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplicationsUtils.java
@@ -120,13 +120,14 @@ public class RegisterSampleApplicationsUtils {
 
     public static InputDataObjectType createAppInput
             (String inputName, String value, DataType type,
-             String applicationArgument, boolean stdIn, String description, String metadata) {
+             String applicationArgument, int order, boolean stdIn, String description, String metadata) {
         InputDataObjectType input = new InputDataObjectType();
 //        input.setIsEmpty(false);
         if (inputName != null) input.setName(inputName);
         if (value != null) input.setValue(value);
         if (type != null) input.setType(type);
         if (applicationArgument != null) input.setApplicationArgument(applicationArgument);
+        input.setInputOrder(order);
         if (description != null) input.setUserFriendlyDescription(description);
         input.setStandardInput(stdIn);
         if (metadata != null) input.setMetaData(metadata);

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterUS3Application.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterUS3Application.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterUS3Application.java
index ccb4e24..0e86469 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterUS3Application.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterUS3Application.java
@@ -154,7 +154,7 @@ public class RegisterUS3Application {
             appModules.add(ultrascanModuleId);
 
             InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("input", null,
-                    DataType.URI, null, false, "input tar file", null);
+                    DataType.URI, null, 1, false, "input tar file", null);
            
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/InputDataObjectType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/InputDataObjectType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/InputDataObjectType.java
index 97227b8..0cd666b 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/InputDataObjectType.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/InputDataObjectType.java
@@ -85,6 +85,7 @@ import org.slf4j.LoggerFactory;
   private static final org.apache.thrift.protocol.TField STANDARD_INPUT_FIELD_DESC = new org.apache.thrift.protocol.TField("standardInput", org.apache.thrift.protocol.TType.BOOL, (short)5);
   private static final org.apache.thrift.protocol.TField USER_FRIENDLY_DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("userFriendlyDescription", org.apache.thrift.protocol.TType.STRING, (short)6);
   private static final org.apache.thrift.protocol.TField META_DATA_FIELD_DESC = new org.apache.thrift.protocol.TField("metaData", org.apache.thrift.protocol.TType.STRING, (short)7);
+  private static final org.apache.thrift.protocol.TField INPUT_ORDER_FIELD_DESC = new org.apache.thrift.protocol.TField("inputOrder", org.apache.thrift.protocol.TType.I32, (short)8);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -99,6 +100,7 @@ import org.slf4j.LoggerFactory;
   private boolean standardInput; // optional
   private String userFriendlyDescription; // optional
   private String metaData; // optional
+  private int inputOrder; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   @SuppressWarnings("all") public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -112,7 +114,8 @@ import org.slf4j.LoggerFactory;
     APPLICATION_ARGUMENT((short)4, "applicationArgument"),
     STANDARD_INPUT((short)5, "standardInput"),
     USER_FRIENDLY_DESCRIPTION((short)6, "userFriendlyDescription"),
-    META_DATA((short)7, "metaData");
+    META_DATA((short)7, "metaData"),
+    INPUT_ORDER((short)8, "inputOrder");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -141,6 +144,8 @@ import org.slf4j.LoggerFactory;
           return USER_FRIENDLY_DESCRIPTION;
         case 7: // META_DATA
           return META_DATA;
+        case 8: // INPUT_ORDER
+          return INPUT_ORDER;
         default:
           return null;
       }
@@ -182,8 +187,9 @@ import org.slf4j.LoggerFactory;
 
   // isset id assignments
   private static final int __STANDARDINPUT_ISSET_ID = 0;
+  private static final int __INPUTORDER_ISSET_ID = 1;
   private byte __isset_bitfield = 0;
-  private _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE,_Fields.APPLICATION_ARGUMENT,_Fields.STANDARD_INPUT,_Fields.USER_FRIENDLY_DESCRIPTION,_Fields.META_DATA};
+  private _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE,_Fields.APPLICATION_ARGUMENT,_Fields.STANDARD_INPUT,_Fields.USER_FRIENDLY_DESCRIPTION,_Fields.META_DATA,_Fields.INPUT_ORDER};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -201,6 +207,8 @@ import org.slf4j.LoggerFactory;
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.META_DATA, new org.apache.thrift.meta_data.FieldMetaData("metaData", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.INPUT_ORDER, new org.apache.thrift.meta_data.FieldMetaData("inputOrder", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(InputDataObjectType.class, metaDataMap);
   }
@@ -241,6 +249,7 @@ import org.slf4j.LoggerFactory;
     if (other.isSetMetaData()) {
       this.metaData = other.metaData;
     }
+    this.inputOrder = other.inputOrder;
   }
 
   public InputDataObjectType deepCopy() {
@@ -257,6 +266,8 @@ import org.slf4j.LoggerFactory;
 
     this.userFriendlyDescription = null;
     this.metaData = null;
+    setInputOrderIsSet(false);
+    this.inputOrder = 0;
   }
 
   public String getName() {
@@ -427,6 +438,28 @@ import org.slf4j.LoggerFactory;
     }
   }
 
+  public int getInputOrder() {
+    return this.inputOrder;
+  }
+
+  public void setInputOrder(int inputOrder) {
+    this.inputOrder = inputOrder;
+    setInputOrderIsSet(true);
+  }
+
+  public void unsetInputOrder() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __INPUTORDER_ISSET_ID);
+  }
+
+  /** Returns true if field inputOrder is set (has been assigned a value) and false otherwise */
+  public boolean isSetInputOrder() {
+    return EncodingUtils.testBit(__isset_bitfield, __INPUTORDER_ISSET_ID);
+  }
+
+  public void setInputOrderIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __INPUTORDER_ISSET_ID, value);
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case NAME:
@@ -485,6 +518,14 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
+    case INPUT_ORDER:
+      if (value == null) {
+        unsetInputOrder();
+      } else {
+        setInputOrder((Integer)value);
+      }
+      break;
+
     }
   }
 
@@ -511,6 +552,9 @@ import org.slf4j.LoggerFactory;
     case META_DATA:
       return getMetaData();
 
+    case INPUT_ORDER:
+      return Integer.valueOf(getInputOrder());
+
     }
     throw new IllegalStateException();
   }
@@ -536,6 +580,8 @@ import org.slf4j.LoggerFactory;
       return isSetUserFriendlyDescription();
     case META_DATA:
       return isSetMetaData();
+    case INPUT_ORDER:
+      return isSetInputOrder();
     }
     throw new IllegalStateException();
   }
@@ -616,6 +662,15 @@ import org.slf4j.LoggerFactory;
         return false;
     }
 
+    boolean this_present_inputOrder = true && this.isSetInputOrder();
+    boolean that_present_inputOrder = true && that.isSetInputOrder();
+    if (this_present_inputOrder || that_present_inputOrder) {
+      if (!(this_present_inputOrder && that_present_inputOrder))
+        return false;
+      if (this.inputOrder != that.inputOrder)
+        return false;
+    }
+
     return true;
   }
 
@@ -702,6 +757,16 @@ import org.slf4j.LoggerFactory;
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetInputOrder()).compareTo(other.isSetInputOrder());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetInputOrder()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.inputOrder, other.inputOrder);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -785,6 +850,12 @@ import org.slf4j.LoggerFactory;
       }
       first = false;
     }
+    if (isSetInputOrder()) {
+      if (!first) sb.append(", ");
+      sb.append("inputOrder:");
+      sb.append(this.inputOrder);
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -890,6 +961,14 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 8: // INPUT_ORDER
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.inputOrder = iprot.readI32();
+              struct.setInputOrderIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -948,6 +1027,11 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldEnd();
         }
       }
+      if (struct.isSetInputOrder()) {
+        oprot.writeFieldBegin(INPUT_ORDER_FIELD_DESC);
+        oprot.writeI32(struct.inputOrder);
+        oprot.writeFieldEnd();
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -985,7 +1069,10 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetMetaData()) {
         optionals.set(5);
       }
-      oprot.writeBitSet(optionals, 6);
+      if (struct.isSetInputOrder()) {
+        optionals.set(6);
+      }
+      oprot.writeBitSet(optionals, 7);
       if (struct.isSetValue()) {
         oprot.writeString(struct.value);
       }
@@ -1004,6 +1091,9 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetMetaData()) {
         oprot.writeString(struct.metaData);
       }
+      if (struct.isSetInputOrder()) {
+        oprot.writeI32(struct.inputOrder);
+      }
     }
 
     @Override
@@ -1011,7 +1101,7 @@ import org.slf4j.LoggerFactory;
       TTupleProtocol iprot = (TTupleProtocol) prot;
       struct.name = iprot.readString();
       struct.setNameIsSet(true);
-      BitSet incoming = iprot.readBitSet(6);
+      BitSet incoming = iprot.readBitSet(7);
       if (incoming.get(0)) {
         struct.value = iprot.readString();
         struct.setValueIsSet(true);
@@ -1036,6 +1126,10 @@ import org.slf4j.LoggerFactory;
         struct.metaData = iprot.readString();
         struct.setMetaDataIsSet(true);
       }
+      if (incoming.get(6)) {
+        struct.inputOrder = iprot.readI32();
+        struct.setInputOrderIsSet(true);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/AppInterfaceUtil.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/AppInterfaceUtil.java b/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/AppInterfaceUtil.java
index 4030857..ad7a0de 100644
--- a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/AppInterfaceUtil.java
+++ b/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/AppInterfaceUtil.java
@@ -45,6 +45,7 @@ public class AppInterfaceUtil {
                                                               String value,
                                                               DataType type,
                                                               String applicationArgument,
+                                                              int order,
                                                               boolean standardInput,
                                                               String userFriendlyDesc,
                                                               String metadata){
@@ -54,6 +55,7 @@ public class AppInterfaceUtil {
         appInput.setType(type);
         appInput.setMetaData(metadata);
         appInput.setApplicationArgument(applicationArgument);
+        appInput.setInputOrder(order);
         appInput.setUserFriendlyDescription(userFriendlyDesc);
         appInput.setStandardInput(standardInput);
         return appInput;

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/airavata-api/thrift-interface-descriptions/applicationInterfaceModel.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/applicationInterfaceModel.thrift b/airavata-api/thrift-interface-descriptions/applicationInterfaceModel.thrift
index 2bb16dc..5646dc5 100644
--- a/airavata-api/thrift-interface-descriptions/applicationInterfaceModel.thrift
+++ b/airavata-api/thrift-interface-descriptions/applicationInterfaceModel.thrift
@@ -77,7 +77,8 @@ struct InputDataObjectType {
     4: optional string applicationArgument,
     5: optional bool standardInput = 0,
     6: optional string userFriendlyDescription,
-    7: optional string metaData
+    7: optional string metaData,
+    8: optional i32 inputOrder
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java
index d430ebe..67bd1bc 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java
@@ -101,8 +101,9 @@ public class ApplicationInterfaceImpl implements ApplicationInterface {
                     inputResource.setInputVal(input.getValue());
                     inputResource.setDataType(input.getType().toString());
                     inputResource.setMetadata(input.getMetaData());
-                    inputResource.setStandareInput(input.isStandardInput());
+                    inputResource.setStandardInput(input.isStandardInput());
                     inputResource.setAppArgument(input.getApplicationArgument());
+                    inputResource.setInputOrder(input.getInputOrder());
                     inputResource.save();
                 }
             }
@@ -216,8 +217,9 @@ public class ApplicationInterfaceImpl implements ApplicationInterface {
                     inputResource.setInputVal(input.getValue());
                     inputResource.setDataType(input.getType().toString());
                     inputResource.setMetadata(input.getMetaData());
-                    inputResource.setStandareInput(input.isStandardInput());
+                    inputResource.setStandardInput(input.isStandardInput());
                     inputResource.setAppArgument(input.getApplicationArgument());
+                    inputResource.setInputOrder(input.getInputOrder());
                     inputResource.save();
                 }
             }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/WorkflowCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/WorkflowCatalogImpl.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/WorkflowCatalogImpl.java
index 3474b40..a57ac49 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/WorkflowCatalogImpl.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/WorkflowCatalogImpl.java
@@ -98,7 +98,7 @@ public class WorkflowCatalogImpl implements WorkflowCatalog {
                     wfInputResource.setWfTemplateId(resource.getWfTemplateId());
                     wfInputResource.setDataType(input.getType().toString());
                     wfInputResource.setAppArgument(input.getApplicationArgument());
-                    wfInputResource.setStandareInput(input.isStandardInput());
+                    wfInputResource.setStandardInput(input.isStandardInput());
                     wfInputResource.setUserFriendlyDesc(input.getUserFriendlyDescription());
                     wfInputResource.setMetadata(input.getMetaData());
                     wfInputResource.save();
@@ -148,7 +148,7 @@ public class WorkflowCatalogImpl implements WorkflowCatalog {
                     existingInput.setWfTemplateId(existingWF.getWfTemplateId());
                     existingInput.setDataType(input.getType().toString());
                     existingInput.setAppArgument(input.getApplicationArgument());
-                    existingInput.setStandareInput(input.isStandardInput());
+                    existingInput.setStandardInput(input.isStandardInput());
                     existingInput.setUserFriendlyDesc(input.getUserFriendlyDescription());
                     existingInput.setMetadata(input.getMetaData());
                     existingInput.save();

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInput.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInput.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInput.java
index 689f24e..e0416b9 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInput.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInput.java
@@ -47,6 +47,8 @@ public class ApplicationInput implements Serializable {
     private String userFriendlyDesc;
     @Column(name = "STANDARD_INPUT")
     private boolean standardInput;
+    @Column(name="INPUT_ORDER")
+    private int inputOrder;
 
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "INTERFACE_ID")
@@ -123,4 +125,12 @@ public class ApplicationInput implements Serializable {
     public void setStandardInput(boolean standardInput) {
         this.standardInput = standardInput;
     }
+
+    public int getInputOrder() {
+        return inputOrder;
+    }
+
+    public void setInputOrder(int inputOrder) {
+        this.inputOrder = inputOrder;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/WorkflowInput.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/WorkflowInput.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/WorkflowInput.java
index 81d2b6d..5682f56 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/WorkflowInput.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/WorkflowInput.java
@@ -48,8 +48,10 @@ public class WorkflowInput implements Serializable {
     private String userFriendlyDesc;
     @Column(name = "STANDARD_INPUT")
     private boolean standardInput;
+    @Column(name = "INPUT_ORDER")
+    private int inputOrder;
 
-    @ManyToOne(cascade= CascadeType.MERGE)
+    @ManyToOne(cascade = CascadeType.MERGE)
     @JoinColumn(name = "WF_TEMPLATE_ID")
     private Workflow workflow;
 
@@ -124,4 +126,12 @@ public class WorkflowInput implements Serializable {
     public void setStandardInput(boolean standardInput) {
         this.standardInput = standardInput;
     }
+
+    public int getInputOrder() {
+        return inputOrder;
+    }
+
+    public void setInputOrder(int inputOrder) {
+        this.inputOrder = inputOrder;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java
index 6894ff1..21a0844 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java
@@ -48,7 +48,8 @@ public class ApplicationInputResource extends AbstractResource {
     private String metadata;
     private String appArgument;
     private String userFriendlyDesc;
-    private boolean standareInput;
+    private int inputOrder;
+    private boolean standardInput;
 
     private AppInterfaceResource appInterfaceResource;
 
@@ -288,7 +289,8 @@ public class ApplicationInputResource extends AbstractResource {
             applicationInput.setMetadata(metadata);
             applicationInput.setAppArgument(appArgument);
             applicationInput.setUserFriendlyDesc(userFriendlyDesc);
-            applicationInput.setStandardInput(standareInput);
+            applicationInput.setStandardInput(standardInput);
+            applicationInput.setInputOrder(inputOrder);
             if (existingApplicationInput == null) {
                 em.persist(applicationInput);
             } else {
@@ -404,11 +406,19 @@ public class ApplicationInputResource extends AbstractResource {
         this.appInterfaceResource = appInterfaceResource;
     }
 
-    public boolean isStandareInput() {
-        return standareInput;
+    public boolean isStandardInput() {
+        return standardInput;
     }
 
-    public void setStandareInput(boolean standareInput) {
-        this.standareInput = standareInput;
+    public void setStandardInput(boolean standardInput) {
+        this.standardInput = standardInput;
+    }
+
+    public int getInputOrder() {
+        return inputOrder;
+    }
+
+    public void setInputOrder(int inputOrder) {
+        this.inputOrder = inputOrder;
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/WorkflowInputResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/WorkflowInputResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/WorkflowInputResource.java
index 75c1351..23f6536 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/WorkflowInputResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/WorkflowInputResource.java
@@ -48,7 +48,8 @@ public class WorkflowInputResource extends AbstractResource {
     private String metadata;
     private String appArgument;
     private String userFriendlyDesc;
-    private boolean standareInput;
+    private boolean standardInput;
+    private int inputOrder;
 
     private WorkflowResource workflowResource;
 
@@ -286,7 +287,7 @@ public class WorkflowInputResource extends AbstractResource {
             workflowInput.setMetadata(metadata);
             workflowInput.setAppArgument(appArgument);
             workflowInput.setUserFriendlyDesc(userFriendlyDesc);
-            workflowInput.setStandardInput(standareInput);
+            workflowInput.setStandardInput(standardInput);
             if (existingWFInput == null) {
                 em.persist(workflowInput);
             } else {
@@ -402,11 +403,19 @@ public class WorkflowInputResource extends AbstractResource {
         this.workflowResource = workflowResource;
     }
 
-    public boolean isStandareInput() {
-        return standareInput;
+    public boolean isStandardInput() {
+        return standardInput;
     }
 
-    public void setStandareInput(boolean standareInput) {
-        this.standareInput = standareInput;
+    public void setStandardInput(boolean standardInput) {
+        this.standardInput = standardInput;
+    }
+
+    public int getInputOrder() {
+        return inputOrder;
+    }
+
+    public void setInputOrder(int inputOrder) {
+        this.inputOrder = inputOrder;
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
index aca396a..de6a010 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
@@ -760,7 +760,8 @@ public class AppCatalogJPAUtils {
             resource.setMetadata(o.getMetadata());
             resource.setAppArgument(o.getAppArgument());
             resource.setUserFriendlyDesc(o.getUserFriendlyDesc());
-            resource.setStandareInput(o.isStandardInput());
+            resource.setStandardInput(o.isStandardInput());
+            resource.setInputOrder(o.getInputOrder());
             resource.setAppInterfaceResource((AppInterfaceResource)createAppInterfaceResource(o.getApplicationInterface()));
         }
         return resource;
@@ -777,8 +778,9 @@ public class AppCatalogJPAUtils {
             resource.setDataType(o.getDataType());
             resource.setMetadata(o.getMetadata());
             resource.setAppArgument(o.getAppArgument());
+            resource.setInputOrder(o.getInputOrder());
             resource.setUserFriendlyDesc(o.getUserFriendlyDesc());
-            resource.setStandareInput(o.isStandardInput());
+            resource.setStandardInput(o.isStandardInput());
             resource.setWorkflowResource((WorkflowResource)createWorkflow(o.getWorkflow()));
         }
         return resource;

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
index 9646bda..0ada380 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
@@ -556,9 +556,10 @@ public class AppCatalogThriftConversion {
         inputDataObjectType.setName(input.getInputKey());
         inputDataObjectType.setValue(input.getInputVal());
         inputDataObjectType.setApplicationArgument(input.getAppArgument());
+        inputDataObjectType.setInputOrder(input.getInputOrder());
         inputDataObjectType.setMetaData(input.getMetadata());
         inputDataObjectType.setType(DataType.valueOf(input.getDataType()));
-        inputDataObjectType.setStandardInput(input.isStandareInput());
+        inputDataObjectType.setStandardInput(input.isStandardInput());
         inputDataObjectType.setUserFriendlyDescription(input.getUserFriendlyDesc());
         return inputDataObjectType;
     }
@@ -696,6 +697,7 @@ public class AppCatalogThriftConversion {
         InputDataObjectType input = new InputDataObjectType();
         input.setName(resource.getInputKey());
         input.setApplicationArgument(resource.getAppArgument());
+        input.setInputOrder(resource.getInputOrder());
         input.setType(DataType.valueOf(resource.getDataType()));
         input.setMetaData(resource.getMetadata());
         input.setUserFriendlyDescription(resource.getUserFriendlyDesc());

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/AppInterfaceTest.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/AppInterfaceTest.java b/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/AppInterfaceTest.java
index 1a1dbd3..d2e5d0c 100644
--- a/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/AppInterfaceTest.java
+++ b/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/AppInterfaceTest.java
@@ -47,6 +47,7 @@ import static org.junit.Assert.assertTrue;
 public class AppInterfaceTest {
     private static Initialize initialize;
     private static AppCatalog appcatalog;
+    private static int order = 1;
 
     @Before
     public void setUp() {
@@ -169,6 +170,7 @@ public class AppInterfaceTest {
         input.setValue(value);
         input.setType(type);
         input.setApplicationArgument("test arg");
+        input.setInputOrder(order++);
         return input;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/provider/impl/LocalProvider.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/provider/impl/LocalProvider.java b/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/provider/impl/LocalProvider.java
index 8b79ff9..8f034ae 100644
--- a/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/provider/impl/LocalProvider.java
+++ b/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/provider/impl/LocalProvider.java
@@ -23,8 +23,12 @@ package org.apache.airavata.gfac.local.provider.impl;
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
 
 import org.apache.airavata.gfac.Constants;
 import org.apache.airavata.gfac.GFacException;
@@ -252,20 +256,35 @@ public class LocalProvider extends AbstractProvider {
     private void buildCommand() {
         cmdList.add(jobExecutionContext.getExecutablePath());
         Map<String, Object> inputParameters = jobExecutionContext.getInMessageContext().getParameters();
-        for (Object inputObject : inputParameters.values()) {
-            if (inputObject instanceof InputDataObjectType) {
-                InputDataObjectType inputDataObjectType = (InputDataObjectType) inputObject;
-                if (inputDataObjectType.getApplicationArgument() != null
-                        && !inputDataObjectType.getApplicationArgument().equals("")) {
-                    cmdList.add(inputDataObjectType.getApplicationArgument());
-                }
 
-                if (inputDataObjectType.getValue() != null
-                        && !inputDataObjectType.getValue().equals("")) {
-                    cmdList.add(inputDataObjectType.getValue());
-                }
+        // sort the inputs first and then build the command List
+        Comparator<InputDataObjectType> inputOrderComparator = new Comparator<InputDataObjectType>() {
+            @Override
+            public int compare(InputDataObjectType inputDataObjectType, InputDataObjectType t1) {
+                log.info(" $$$$$$$$$$$$ inpput object order " + inputDataObjectType.getInputOrder() + " , t1 order " + t1.getInputOrder() + "$$$$$$$$$$$$$$$$" );
+                return inputDataObjectType.getInputOrder() - t1.getInputOrder();
+            }
+        };
+        Set<InputDataObjectType> sortedInputSet = new TreeSet<InputDataObjectType>(inputOrderComparator);
+        for (Object object : inputParameters.values()) {
+            if (object instanceof InputDataObjectType) {
+                InputDataObjectType inputDOT = (InputDataObjectType) object;
+                sortedInputSet.add(inputDOT);
+            }
+        }
+        log.info("$$$$$$$$$$$ size of sorted set = " + sortedInputSet.size() + "$$$$$$$$$$$$$$$$$$$");
+        for (InputDataObjectType inputDataObjectType : sortedInputSet) {
+            if (inputDataObjectType.getApplicationArgument() != null
+                    && !inputDataObjectType.getApplicationArgument().equals("")) {
+                cmdList.add(inputDataObjectType.getApplicationArgument());
+            }
+
+            if (inputDataObjectType.getValue() != null
+                    && !inputDataObjectType.getValue().equals("")) {
+                cmdList.add(inputDataObjectType.getValue());
             }
         }
+
     }
 
     private void initProcessBuilder(ApplicationDeploymentDescription app){

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
index b091ebf..5768a0d 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
@@ -274,6 +274,8 @@ public class ExperimentRegistry {
                     resource.setDataType(input.getType().toString());
                 }
                 resource.setMetadata(input.getMetaData());
+                resource.setAppArgument(input.getApplicationArgument());
+                resource.setInputOrder(input.getInputOrder());
                 resource.save();
             }
         } catch (Exception e) {
@@ -293,6 +295,8 @@ public class ExperimentRegistry {
                             exinput.setDataType(input.getType().toString());
                         }
                         exinput.setMetadata(input.getMetaData());
+                        exinput.setAppArgument(input.getApplicationArgument());
+                        exinput.setInputOrder(input.getInputOrder());
                         exinput.save();
                     }
                 }
@@ -816,6 +820,8 @@ public class ExperimentRegistry {
                     resource.setDataType(input.getType().toString());
                 }
                 resource.setMetadata(input.getMetaData());
+                resource.setAppArgument(input.getApplicationArgument());
+                resource.setInputOrder(input.getInputOrder());
                 resource.save();
             }
         } catch (Exception e) {
@@ -837,6 +843,8 @@ public class ExperimentRegistry {
                         resource.setDataType(input.getType().toString());
                     }
                     resource.setMetadata(input.getMetaData());
+                    resource.setAppArgument(input.getApplicationArgument());
+                    resource.setInputOrder(input.getInputOrder());
                     resource.save();
                 }
             }
@@ -994,6 +1002,8 @@ public class ExperimentRegistry {
                     resource.setDataType(input.getType().toString());
                 }
                 resource.setMetadata(input.getMetaData());
+                resource.setAppArgument(input.getApplicationArgument());
+                resource.setInputOrder(input.getInputOrder());
                 resource.save();
             }
         } catch (Exception e) {
@@ -1059,6 +1069,8 @@ public class ExperimentRegistry {
                         resource.setDataType(input.getType().toString());
                     }
                     resource.setMetadata(input.getMetaData());
+                    resource.setAppArgument(input.getApplicationArgument());
+                    resource.setInputOrder(input.getInputOrder());
                     resource.save();
                 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/ApplicationInput.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/ApplicationInput.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/ApplicationInput.java
index c80cb1b..6ece1c2 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/ApplicationInput.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/ApplicationInput.java
@@ -47,6 +47,9 @@ public class ApplicationInput implements Serializable {
     @Column(name = "APP_ARGUMENT")
     private String appArgument;
 
+    @Column(name = "INPUT_ORDER")
+    private int inputOrder;
+
     @Column(name = "STANDARD_INPUT")
     private boolean standardInput;
 
@@ -57,6 +60,14 @@ public class ApplicationInput implements Serializable {
     @JoinColumn(name = "TASK_ID")
     private TaskDetail task;
 
+    public int getInputOrder() {
+        return inputOrder;
+    }
+
+    public void setInputOrder(int inputOrder) {
+        this.inputOrder = inputOrder;
+    }
+
     public String getTaskId() {
         return taskId;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Input.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Input.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Input.java
index a0dd404..cfa2bd6 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Input.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Input.java
@@ -58,10 +58,21 @@ public class Experiment_Input implements Serializable {
     @Column(name = "METADATA")
     private String metadata;
 
+    @Column(name = "INPUT_ORDER")
+    private int inputOrder;
+
     @ManyToOne
     @JoinColumn(name = "EXPERIMENT_ID")
     private Experiment experiment;
 
+    public int getInputOrder() {
+        return inputOrder;
+    }
+
+    public void setInputOrder(int inputOrder) {
+        this.inputOrder = inputOrder;
+    }
+
     public String getExperiment_id() {
         return experiment_id;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/NodeInput.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/NodeInput.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/NodeInput.java
index d25886e..6b5ce02 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/NodeInput.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/NodeInput.java
@@ -45,6 +45,8 @@ public class NodeInput implements Serializable {
     private String value;
     @Column(name = "APP_ARGUMENT")
     private String appArgument;
+    @Column(name = "INPUT_ORDER")
+    private int inputOrder;
 
     @Column(name = "STANDARD_INPUT")
     private boolean standardInput;
@@ -127,4 +129,12 @@ public class NodeInput implements Serializable {
     public void setUserFriendlyDesc(String userFriendlyDesc) {
         this.userFriendlyDesc = userFriendlyDesc;
     }
+
+    public int getInputOrder() {
+        return inputOrder;
+    }
+
+    public void setInputOrder(int inputOrder) {
+        this.inputOrder = inputOrder;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a61b37f1/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ApplicationInputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ApplicationInputResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ApplicationInputResource.java
index 8d3f704..adca11b 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ApplicationInputResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ApplicationInputResource.java
@@ -45,6 +45,15 @@ public class ApplicationInputResource extends AbstractResource {
     private String appArgument;
     private boolean standardInput;
     private String userFriendlyDesc;
+    private int inputOrder;
+
+    public int getInputOrder() {
+        return inputOrder;
+    }
+
+    public void setInputOrder(int inputOrder) {
+        this.inputOrder = inputOrder;
+    }
 
     public String getAppArgument() {
         return appArgument;
@@ -153,6 +162,7 @@ public class ApplicationInputResource extends AbstractResource {
             applicationInput.setAppArgument(appArgument);
             applicationInput.setStandardInput(standardInput);
             applicationInput.setUserFriendlyDesc(userFriendlyDesc);
+            applicationInput.setInputOrder(inputOrder);
             if (value != null){
                 applicationInput.setValue(value.toCharArray());
             }
@@ -167,6 +177,7 @@ public class ApplicationInputResource extends AbstractResource {
                 existingInput.setAppArgument(appArgument);
                 existingInput.setStandardInput(standardInput);
                 existingInput.setUserFriendlyDesc(userFriendlyDesc);
+                existingInput.setInputOrder(inputOrder);
                 if (value != null){
                     existingInput.setValue(value.toCharArray());
                 }