User talk:Birarai

Remote Action Interface - RAI
Remote Action Interface (RAI)

As the Internet expands due to the addition of new systems, applications and users the need for efficient communication between all these entities increases. The Remote Action Interface Architecture (RAI) achieves loose coupling among internet entities. Any system which is network addressable is considered an entity. In order to simplify entity to entity communication there is a need to abstract away the complexity of the network. By eliminating the knowledge of the network from the implementation layer the RAI architecture is able to move data from one entity to another seamlessly. Implementing a solution built on the principles of Remote Action Interface (RAI) provides the ability for entities to self manage their own data without human intervention.

Within the RAI Architecture there are three classifications actions, entity and containers. The classifications are organized in a hierarchical tree structure. All leaf nodes are entities while all paths starting from the tree root (domain) are containers.

Actions: The four basic actions which can be preformed on an entity are view, delete, update, and add. From these four actions additional actions can be derived. Data sent to entity is contained within xml tags. Syntax: action@

Entity: The entity defines what time of actions it will perform. The entity must reside within a container. Syntax: action@entity

Container: Containers hold zero or more entities. The classification changes between entity and container depending on the manner in which the entity or container is being referenced. Syntax: action@entity.container

RAI Definition A request is sent to discovery@entity.container the response is a RAI definition, which lists all entities and actions.

RAI Architecture Implementation

RAI Server Today the communication and programming are two distinct layers. The RAI server functions as a mail and web server, which allows fusion of the network and the implementation layers. The RAI server is not able to hold the requester’s state information; therefore security access verification is done on each request.

RAI Language Extension In order to support the paradigm shift in computing architecture, programming languages must support embedded communication. Data within the application is passed to method using either the RAI request or conventional memory stack.

The first interaction directed at an entity is the RAI discovery request sent to discovery@entity.com. The response will contain the entity’s RAI Definition. The RAI definition is simple and universally available to all requesters. The requester is free to invoke any discovered action. The requester invokes an action by sending a request to action@entity.container. Data is sent to the RAI action in the format specified by the RAI definition. The RAI response is the result of a RAI request made by a remote entity. The format of the RAI response is outlined in the RAI action definition.

Implementation Example

Wal-Mart purchases products from hundreds of vendor world wide. Many of Wal-Mart’s suppliers’ change mailing addresses frequently. Every time a supplier changes its mailing address Wal-Mart must locate the supplier in their supplier database and manually update the address information. Having to manually find and update information costs Wal-Mart time and money. Costs are reduced by implementing a RAI solution. In the following example Wal-Mart initials are request to fedex ever week requesting FedEx to update their mailing address.

Sample RAI Definition entity FedEx.com { Entity address.FedEx.com; // entity declaration public view;                       // action declaration // input: none // returns: website };

entity address.FedEx.com { public view; // input: none // returns: company address information // 43 // wall street };

Fedex Source Code

Public view@address.Fedex.com { String streetNumber = “7”; String streetName; = “Long Tail Drive”;

// load data in to entity update@streetNumber.address.Fedex.com = streetNumber; update@streetName.address.Fedex.com = streetName;

// from is global variable // from variable can contains update@fedex.address.accounting.walmart.com return from = address.Fedex.com; }

Wal-Mart Source Code

Public update@fedex.address.account.walmart.com { // from is global variable // from variable can contains view@address.fedex.com

String Number = streetNumber.from; String Name = streetName.from; Return; }

birarai