OrangeScape inherently supports REST style service interface. Both the
user interface (AJAX) and other integrating applications use this
service interface to communicate with the business tier. Based on your
use case, you can choose one of the following approaches
for integration:
- Point-to-Point Integration:
This is typically used for integrating 2 modules that belong to a
single application. Such modules could have been developed as
independent applications initially for modularization or manageability
purposes. Later when you want these applications to work together as a
single application, you can use Point-to-Point integration.
- Incremental data integration:
This is typically used in scenarios where one application is
responsible for the creation and lifecycle (i.e business process) of a
certain set of data and all the other applications use that data as
reference/master data. In such cases, the owner application maintains
modification time stamp of the data and all the other applications
query for only incrementally modified data since its last
synchronization and updates them into their datastore. This is
typically used in batch update scenario.
- Middleware-based integration:
This is used in scenarios where same data is transactional in nature in
2 different applications and both applications have its own business
process to govern that data. Usually such applications are already
built and has their own architecture and design. Therefore a middleware
is used to transform data from one application to another, to queue
data for guaranteed delivery and asynchronous execution of the business
method exposed as service.
Point-to-point Integration
Point-to-Point integration makes 2 assumptions on the integrating applications:
- Service
invocations are synchronous and distributed transactions are not
supported. So both the applications are expected to be available or
unavailable at the same time.
- Protocol and data representation
between the integrating application needs to be similar. Hence there is
no need for connector or data transformation.
This
means that the typical integration for Point-to-Pont integration is
intra-application integration i.e. module to module integration of the
same application. In such cases, the integration is triggered by
executing REST call using Action design in one model, which invokes a
REST service of another model. The data that goes out from the calling
model is called Inbound message and the data that comes into
the receiving model though REST interface is called the Outbound
message.
Inbound messages
As
explained earlier, OrangeScape uses the same REST service interface for
integration as well as user interface. The 2 services that are relevant
for integration are:
- Activity service: Activity
service lists all the items that are waiting for the logged in user for
that particular activity. You can invoke this to get this list or
create an instance, in case of start activity. The REST end point for
activity looks like this:
http://<application>.appspot.com/<primary or secondary>/<model key>/<activity key>
- Example: http://os-demo.appspot.com/1/Application_c548d211/SheetMetadata_0163dc56/ActivityDefinition_76185608
The 2 method relevant for this REST service are:
- GET
method - to list all the items waiting for that user in that activity.
The data representation can be of html or json. For integration, you
would typically use JSON. To get data as JSON, you should
use mimetype=text/json
- Example: http://os-demo.appspot.com/1/Application_c548d211/SheetMetadata_0163dc56/ActivityDefinition_76185608?mimetype=text/json
- POST method - to create a new instance, is the activity is a start activity.
- Model service: Model
service provides the endpoint of a specific instance in a given
activity context. The REST end point for Model/Instance looks like this:
http://<application>.appspot.com/<primary or secondary>/<model key>/<activity key>/<instance key>
- Example: http://os-demo.appspot.com/1/Application_c548d211/SheetMetadata_0163dc56/ActivityDefinition_76185608/Invoice_93193?mimetype=text/json
The methods relevant for this REST service are:
- GET method - to get the content of the instance and its children based on form design
- POST method - to create child of the instance
- PUT
method - to update parameter values in the format:
<parameter1>=<value1>&<parameter2>=<value2>&
- DELETE method - to delete the child or the instance itself
- POST method with invoke=<action> - to invoke the action designed for that model using action design
Outbound messages
Outbound
messages are REST call from action design that invokes either the
Inbound Activity service or Model service. pls refer to action design
for more information.
Incremental Data Integration
Incremental data integration assumes that there is a owner application
and multiple subscribing application. The data in the owner application
is transactional in nature. The same data is used as mater data in all
the subscribing application. This means that the data change can be
done by the owner application only. This application will maintain an
update time stamp as one of its columns. This application should allow
the subscribing application to specify a time stamp and query the data
that has been modified after the specified time.
The
subscribing applications should find the max timestamp of the update
time stamp and use that timestamp to query the incremental data as
explained above. The incremental data can be of inserts or updates. So
all the applications should maintain a common natural key. This key is
generated by the owner application and the other applications maintain
that key in their application as well. Depending on whether
the natural key exists or not, the application can do inserts or
updates.
This synchronization is typically done at the database level. The database scripts can be scheduled to run a batch jobs.
Middleware based Integration
When using a middleware based approach it is important to understand common concepts below:
- Integration
Process - This is a process flow that orchestrates a meaningful
integration process involving one or more connectors to hetrogenous
systems.
- Connectors - This a piece of software that participates in a integration process and knows how to interact with a host system
- Neutral Message Format - A common message format(s) supported by the integration process.
This
above description is not expected to be a complete and comprehensive.
This has been provided only as a overview. For detailed information of
the above, developers are requested to read related middleware
documentation as appropriate to their project. Also is very
important to understand that middleware based integration approach is
used for business processes that cross hetrogenous system boundaries.
It should not be used for data sychronization activities like 'Master
Data Sync' etc.
OrangeScape will support the following to participate in a integration process.
- Inbound Connector
- Outbound Invocation Capability
Inbound Connector
This
is a connector supplied by OrangeScape to participate in the
integration process. The inbound connector has capability to accept
'inbound' message into OrangeScape. It performs two key functions:
- Transform data sent in neutral format (typically XML) to the format expected by OrangeScape (JSON)
- Transporting
the message to OrangeScape by invoking a REST service end point. The
REST service end point and related parameters for the invoking will be
provided by the integraion process developer as configuration to the
inbound connector
Outbound Invocation Capability
Whenever
OrangeScape needs to send a message to the integration process, it will
be implemented via action design. The action design has capability to
use various action commands to transform the OrangeScape message format
(JSON) to the neutral message format supported by the integration
middleware. There will be configuration parameters that specify the end
point of the integration server and the required parameters that need
to passed while doing the Outbound message invocation. Click
here to read about
"WebService" action.