3 Requirements Definition |
3.1 The JAIN TCAP Object Model
JAIN is built upon standardized Java APIs and Object technology. In Object Technology, data and programming logic are treated as objects. Unlike traditional computer programs, objects can be readily integrated into a running environment, accessed and managed remotely, debugged and maintained in live systems by standardized interfaces, etc.
A JAIN TCAP application can be either a traditional Java program or a JavaBean, where a JavaBean is a reusable software component/object. While JAIN does not mandate that all applications must be built as JavaBeans, the design of the API specification will not exclude any application from executing as a JavaBean. [Reference 6] The unifying features of a JavaBean are explained with examples at http://java.sun.com/beans/doc/beans.101.pdf. The main points are:
If the JAIN TCAP API specification is implemented using JavaBeans it offers the advantage of using reusable objects in a plug and play fashion.
REQ-OM-02-01: The API implementation shall not be restricted to JavaBeans.
This permits the JAIN TCAP API specification to be implemented
in standard Java code, such as a program, applet or servlet.
3.2 JAIN TCAP Naming Convention
JAIN TCAP objects must conform to a specific naming convention in order to support JavaBean implementation. [Reference 6] For a JavaBean to expose a property i.e. within a visual tool, it must supply an access method "get" to read the property value and/or a "set" method to write the property value. These "get" and "set" methods have the following signature:
If we discover a matching pair of "get<PropertyName>" and "set<PropertyName>" methods that take and return the same type, then we regard these methods as defining a read-write property whose name will be "<propertyName>". For a Boolean property the access method "get" signature changes to:public < PropertyType> get< PropertyName>();
public void set< PropertyName>(< PropertyType> a);
REQ-NC-01-01: The API specification shall follow the JavaBean naming convention. [Reference 6]public boolean is< PropertyName>();
REQ-NC-02-01: All access methods shall throw an exception when accessing a parameter that has not previously been set or is not supported by a specific implementation.
This will provide an efficient technique of inspecting
whether a parameter has been set, or is not supported by an implementation
as well as adhering to the Java language programming style.
3.3 JAIN TCAP Architecture
The JAIN TCAP API specification can be mapped onto the
ATM example in Appendix IV. This is illustrated in Figure
3.1.
The JAIN TCAP API specification provides a Java specification that enables the Listener and the Provider to communicate by Event passing, as well as providing the added advantage of portable Listeners. A vendor dependent implementation (for example JNI) will enable the Provider to communicate with the SS7 stack.
The TCK and the RI will test the JAIN TCAP API specification similar to the way a human and an ATM machine test their interface to each other, where the TCK is equivalent to the human and the RI is equivalent to the machine. It is important to notice that the RI does not communicate with the bank, in that the RI will not try to emulate a SS7 stack.
The implementation of the JAIN TCAP API specification is dependent on three main entities.
3.3.1 Event Requirements
3.3.1.1 JAIN TCAP Event Processing
JAIN TCAP messages are passed from the protocol stack to the applications as Event Objects. Event handling methods defined in the EventListener interface conform to a standard naming convention: void <eventOccurenceMethodName>(<EventStateObjectType> event);
Invoking the add<ListenerType> method adds the given listener to the set of Event Listeners registered for events associated with the <ListenerType>. Similarly invoking the remove<ListenerType> method removes the given Listener from the set of Event Listeners registered for Events associated with the <ListenerType>.
The error handling of the possible exceptions are all specific to the implementation of the JAIN TCAP specification, for example:
3.3.1.2 JAIN TCAP Events
JAIN TCAP Events, which are encapsulated TCAP messages, can contain dialogue or component information and the necessary operations to extract it.
REQ-ER-01-01: The API implementation shall send Component and Dialogue handling primitives between the JAIN TCAP Provider and the JAIN TCAP Listener as Events.
This will provide TCAP message passing from object to object, by following the JavaBean event model. [Reference 6]
REQ-ER-02-01: Events representing Component and Dialogue handling primitives shall be sent separately between the JAIN TCAP Provider and JAIN TCAP Listener.
Truer to TCAP processing, a TC-User must have the ability to send Component primitives to TCAP independently of Dialogue Handling primitives.
REQ-ER-03-01: Indication Events shall only be sent from the JAIN TCAP Provider to the JAIN TCAP Listener.
Only indication primitives can be sent from TCAP to the TC-User while only Request primitives may be sent from the TC-User to TCAP. It is important to distinguish between Request and Indication primitives, as a Request primitive might not have the same parameters as its corresponding Indication primitive. Furthermore, there are Indication primitives for which there are no corresponding Request primitives. By enforcing the same restriction on the API specification, the possibility of the JAIN TCAP Listener incorrectly sending an Event Indication to the JAIN TCAP Provider is avoided.
REQ-ER-04-01: Request Events shall only be sent from the JAIN TCAP Listener to the JAIN TCAP Provider.
This requirement prevents the possibility of the JAIN TCAP Provider incorrectly sending an Event Request to the JAIN TCAP Listener [See explanation for REQ-ER-03-01].
REQ-ER-05-01: Events with the same Dialogue Id shall be passed to the same JAIN TCAP Listener.
Dialogue Ids are independently assigned by each of the two nodes in communication via a transaction, enabling each node to uniquely identify the dialogue and associate the entire contents of the message with that particular dialogue. Since only one JAIN TCAP Listener will be used to handle a particular dialogue, all Request Events associated with that dialogue (identified by the Dialogue Id) should be passed to that JAIN TCAP Listener.
When a received TCAP message arrives at the SS7 Stack,
the JAIN TCAP Provider forwards the TCAP message as a JAIN TCAP Event to
the appropriate registered JAIN TCAP Listener(s). This event is sent as
a Multicast Event to all JAIN TCAP Listeners associated with that User
Address. Figure 3.4 shows a Provider "firing"
an Event to a registered Listener.
REQ-ER-06-01: Events shall only be passed to the JAIN TCAP Listener(s) with the corresponding User Address.
Since a JAIN TCAP Listener (or set of Listeners in a loadshare
configuration) can be identified within a particular node by a User Address,
the Events intended for the JAIN TCAP Listener(s) should only be passed
to the JAIN TCAP Listener(s) with that User Address.
3.3.2 JAIN TCAP Provider requirements
The implementation of the JAIN TCAP Provider interface provides the ability to communicate with the TCAP layer of the SS7 stack with the aid of vendor specific code. It is responsible for sending messages down the stack, keeping and maintaining a list of registered JAIN TCAP Listeners.
REQ-PR-01-01: One or more JAIN TCAP Providers shall have the capability to be attached or detached to a TCAP layer at any time.
This is necessary to handle the situation where a TCAP layer has been broken down into a number of signaling point codes within the SS7 stack. The "attach" functionality is part of the JAIN TCAP API specification, and enables the JAIN TCAP Provider to bind with the TCAP layer, which will initiate communication between the TCAP layer and the JAIN TCAP Provider. The JAIN TCAP Provider can attach to a stack during construction, attach after construction and detach at any time.
REQ-PR-02-01: The JAIN TCAP Provider shall have the capability to pass one or more Events to one or more registered JAIN TCAP Listeners.
A JAIN TCAP Provider may need the capability to communicate with one or more JAIN TCAP Listeners objects, even if the Listener objects are distributed [See Figure 4.1]. This is necessary to enable more than one JAIN TCAP Listener (TC-User) to use the services of a JAIN TCAP Provider (TCAP Layer of a SS7 stack). [See REQ-ER-03-01]
REQ-PR-03-01: A JAIN TCAP Provider shall be able to route messages to all JAIN TCAP Listeners registered with it.
When a JAIN TCAP Listener registers with one or more User Addresses the JAIN TCAP Provider must be able to route messages to those User Addresses.
REQ-PR-04-01: Only one JAIN TCAP Provider shall be used to handle a particular Dialogue.
This will ensure that a specific dialogue will always communicate via the same JAIN TCAP Provider.
REQ-PR-05-01: All Request Events associated with a Dialogue (identified by the Dialogue ID) shall be passed to that Dialogue's JAIN TCAP Provider.
[See Requirement REQ-ER-05-01].
3.3.2.1 JAIN TCAP Provider Peer Requirements
Within Java a Peer is a platform specific implementation of a Java Interface or API, therefore a JAIN TCAP Provider Peer is a stack vendor specific implementation of the JAIN TCAP Provider Interface.
REQ-PR-06-01: All TCAP messages shall be passed by the JAIN TCAP Provider peer to the JAIN TCAP Listener as Indication Events.
This will ensure that API specification will follow the JavaBean Event model. [See section 3.3.1.1]
REQ-PR-07-01: The JAIN TCAP Provider peer shall ensure that the order in which associated components encapsulated as Events are received by it, is the same order at, which they are passed to the TCAP layer.
This is necessary to prevent related components within a message arriving in the wrong order to the TCAP Layer. Within TCAP linked components must arrive to the layer in the correct sequential order.
REQ-PR-09-01: The API specification shall provide a common interface to access JAIN TCAP Provider peers.
This will ensure that additional JAIN TCAP Provider peer
functionality is hidden from the JAIN TCAP Listener implementation, as
well as providing a common method of instantiating JAIN TCAP Provider objects.
A common Object Orientated design pattern used to handle this in other
API's i.e. JTAPI, is the Peer Factory.
3.3.3 JAIN TCAP Listener Requirements
The implementation of the JAIN TCAP Listener interface provides the ability to register with the JAIN TCAP Provider, enabling the JAIN TCAP Listener to receive messages from the JAIN TCAP Provider. The JAIN TCAP Listener is responsible for receiving and processing these messages emitted by the JAIN TCAP Provider in the form of Events. To send a TCAP message the JAIN TCAP Listener creates a new Component or Dialogue handling primitive. The JAIN TCAP Listener passes the primitive as a JAIN TCAP Event to the JAIN TCAP Provider, which sends the JAIN TCAP Message into the SS7 Stack.
REQ-LR-01-01: All JAIN TCAP JAIN TCAP Listeners shall be able to register with all JAIN TCAP Providers.
This ensures that all JAIN TCAP Listeners are portable over all JAIN TCAP Providers, which is a fundamental requirement of the Java programming language i.e. write-once, run-anywhere.
3.3.3.1 JAIN TCAP Listener Events
REQ-LR-02-01: A JAIN TCAP Listener shall have the capability to pass one or more Events to one or more JAIN TCAP Providers. However, a JAIN TCAP Listener shall send an event to only one JAIN TCAP Provider at any specific time.
This allows the JAIN TCAP Listener to communicate with more than one JAIN TCAP Provider. It needs to be assumed that the JAIN TCAP Listener will accept Events from the JAIN TCAP Provider and vice versa, this enables the JAIN TCAP Listener and the JAIN TCAP Provider to communicate with each other via Event passing. This is necessary to enable a JAIN TCAP Listener (TC-User) to use the services of more than one JAIN TCAP Provider (TCAP Layer of a SS7 stack). [See REQ-ER-04-01]
3.3.3.2 JAIN TCAP Listener Registration
REQ-LR-03-01: The JAIN TCAP Listener shall receive TCAP messages encapsulated as JAIN TCAP Events from a JAIN TCAP Provider by following the JavaBean Event model. [See Section 3.3.1.1]
The JAIN TCAP Provider routes TCAP messages from the protocol stack to a JAIN TCAP Listener based on the Listeners User Address. The User Address consists of a Sub-System Number, a Signaling Point Code, and optionally a Global Title.
If a JAIN TCAP Listener wishes to receive Events from multiple JAIN TCAP Providers then that JAIN TCAP Listener shall register with each of the available JAIN TCAP Providers. Once the JAIN TCAP Listener has registered with the numerous JAIN TCAP Providers it can receive JAIN TCAP Events from any of the JAIN TCAP Providers. Figure 3.5 shows a JAIN TCAP Listener registered with multiple JAIN TCAP Providers.
REQ-LR-04-01: A JAIN TCAP Listener shall have the capability to register with one or more JAIN TCAP Providers using a unique User Address to receive Events.
Any JAIN TCAP Listener needs the capability to communicate with one or more JAIN TCAP Providers within the network. [See Section 3.3.1.1]
REQ-LR-05-01: The API specification shall not restrict a JAIN TCAP Listener from having multiple backup and load-share JAIN TCAP Listeners.
Many JAIN TCAP Listeners may be associated with the one
User Address.
3.4 Component and Dialogue Handling
A generic set of primitives shall be created that abstract
the functionality of the Component and Dialogue handling primitives of
the supported variants. The mapping between these generic primitives and
the variant specific primitives they represent is illustrated in Table
3.1 and Table 3.2.
Generic Primitive | Req | Ind | ITU '93 | ITU '97 | ANSI '92 | ANSI '96 |
Unidirectional |
|
|
|
|
||
Begin |
|
|
|
|
||
Continue |
|
|
|
|
||
End |
|
|
|
|
||
ProviderAbort |
|
|
|
|||
UserAbort |
|
|
|
|
||
Notice |
|
|
Table 3.1 – Mapping of Dialogue handling primitives
Generic Primitive | Req | Ind | ITU '93 | ITU '97 | ANSI '92 | ANSI '96 |
Invoke |
|
|
|
|
||
Result |
|
|
|
|
||
Error |
|
|
|
|
||
LocalReject |
|
|
||||
UserReject |
|
|
|
|
||
RemoteReject |
|
|
||||
LocalCancel |
|
|
|
|||
UserCancel |
|
|
|
|||
TimerReset |
|
|
REQ-CD-01-01: The API shall incorporate a common set of primitives that will map to protocol variant information. [See Reference 2-5]
This provides a higher level of abstraction within the API.
Similar to the ATM example, the JAIN TCAP API specification
can be mapped to an example of the real working of TCAP, i.e. Figure
2.4 "A Message Exchange for a Structured Dialogue". In Figure
3.6, the JAIN TCAP API specification focuses on the transfer of Events
between the JAIN TCAP Listener and the JAIN TCAP Provider in either direction.
This can be mapped to the passing of TCAP messages from an application
(User 1) to the TCAP Layer and similarly on the remote node (Node 2), passing
TCAP messages from the TCAP layer to the application (User 2). It is important
to notice that the JAIN TCAP API specification as shown, encompasses the
specification of the JAIN TCAP Listener, the JAIN TCAP Provider and the
Events sent between them.