Apache Airavata Source - README.txt
Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
--------------------------------------------------------------------------------

About
=====
Apache Airavata, a software framework to executing and managing computational jobs on 
distributed computing resources including local clusters, supercomputers, national grids, 
academic and commercial clouds. Airavata builds on general concepts of service oriented computing, 
distributed messaging, and workflow composition and orchestration. Airavata bundles a server package,
a client API to access the server and a general purpose GUI XBaya as a application registration, workflow
construction execution and monitoring. XBaya GUI also provides capabilities to access the workflow 
produced data.  

Contact
========
For additional information about Apache Airavata, please contact the user or dev mailing lists:
http://airavata.apache.org/community/mailing-lists.html

Description of Airavata Directory Structure
==================================
    - modules
      This contains the source code of all the airavata maven projects organized as libraries, services and distributions

    - samples
      This contains all the system wide samples provided in Airavata distribution. All the sample are having its README file
      So users have to refer each readme file before running each sample.

    - tools
      This contains source code libraries that can enhance Airavata features.

    - README
      This document.
    
    - RELEASE_NOTES
      The describe the key features and know issues with the current release. 

    - INSTALL
      This document will contain information on installing Apache-Airavata.

Airavata Source Distribution Directory Structure
================================================

    AIRAVATA_TRUNK
		├── modules
		│   ├── airavata-client
		│   ├── commons
		│   │   ├── gfac-schema
		│   │   ├── utils
		│   │   ├── workflow-execution-context
		│   │   └── workflow-tracking
		│   ├── distribution
		│   │   ├── airavata-client
		│   │   ├── airavata-server
		│   │   ├── xbaya-gui
		│   │   └── release
		│   ├── gfac-core
		│   ├── integration-tests
		│   ├── registry
		│   │   ├── airavata-jpa-registry
		│   │   ├── airavata-registry-service
		│   │   ├── airavata-registry-test
		│   │   ├── registry-api
		│   ├── rest
		│   │   ├── client
		│   │   ├── mappings
		│   │   ├── service
		│   │   └── webapp
		│   ├── security
		│   ├── credential-store
		│   ├── server
		│   ├── test-suite
		│   ├── thrift
		│   │   ├── interpreter-service
		│   │   ├── interpreter-service-client
		│   │   ├── interpreter-service-handler
		│   ├── workflow-interpreter
		│   ├── workflow-model
		│   │   ├── workflow-model-component-node
		│   │   └── workflow-model-core
		│   ├── ws-messenger
		│   │   ├── commons
		│   │   ├── distribution
		│   │   ├── messagebox
		│   │   ├── messagebroker
		│   │   ├── message-monitor
		│   │   └── samples
		│   └── xbaya-gui
		├── samples
		├── tools
		│   ├── phoebus-integration
		│   └── registry-migrate
		├── INSTALL
		├── LICENSE
		├── NOTICE
		├── README
		└── RELEASE_NOTES

Available Binary Distributions
==============================

Server Distributions
--------------------
* Airavata Server
  The Airavata Server binary distribution allows you to run a standalone Airavata Server which includes all the airavata services 
  shipped with a default derby database as the backend registry. For stable purposes, a mysql configuration is recommended. 

* Airavata Server Web Application
  This is similar package as the Airavata Server but is distributed as the server Web Application archive.
  This war is compatible with Apache Tomcat application server. The war bundles all airavata services 
  enabled by defualt to startup a derby database as the backend registry. For stable purposes, a mysql configuration is recommended. 

Client Distributions
--------------------
* Airavata XBaya
  The Airavata XBaya distribution is a client GUI application with features to register applications as web services, construct workflows,
  execute and monitor workflows and browse the generated results from the airavata registry.

* Airavata Client
  The Airavata Client distribution is a set of libraries and configurations files that allow a 3rd party application to programatically 
  access Airavata functionality through Airavata API. 
  
 How to test and run samples
===========================
* If you built Airavata from source, and if you see "BUILD SUCCESS", then the test cases should have passes.
* The test cases are beyond unit level, they startup embedded services and run through basic workflow use cases.
* To walk through Airavata features, follow "Airavata in Five Minutes" tutorial at http://airavata.apache.org/documentation/tutorials/airavata-in-5-minutes.html. 
* For intermediate level Airavata features, follow "Airavata in Ten Minutes" tutorial at http://airavata.apache.org/documentation/tutorials/airavata-in-5-minutes.html.
* For advanced use cases, please contact mailing lists - http://airavata.apache.org/community/mailing-lists.html 
