Platform Development Studio - Developer’s Guide

     Previous  Next    Contents    View as PDF - New Window  Get Adobe Reader - New Window
Content starts here

Document Roadmap

Document Scope and Audience

Guide to This Document

Terminology

Related Documentation

Overview of the Platform Development Studio

Creating New Communication Services

The Eclipse Wizard

Example Communication Service

The Platform Test Environment

Integration and Customization

Service Interceptors

Subscriber-centric Policy

Integration with External Systems

Using the Eclipse Wizard

About the Eclipse Wizard

Configure Eclipse

Prerequisites

Basic configuration of Eclipse environment

Configuring of the Eclipse Wizard

Using the Eclipse Wizard

Generating a Communication Service Project

Adding a Plug-in to a Communication Service Project

Removing a Plug-in from a Communication Service Project

Description of a Generated Project

Generated project

Communication Service Project

RESTFul Service Facade

Default RESTful Service Facade

Customize the RESTful Service Facade

Custom URL Mapping Example

Using a Custom Handler Chain

Plug-in

SOAP2SOAP Plug-in

SIP Plug-in

Diameter Plug-in

Generated classes for a Plug-in

Interface: ManagedPluginService

Interface: PluginService

Interface: PluginInstanceFactory

Interface: PluginServiceLifecycle

PluginService

ManagedPlugin Skeleton

PluginInstance

PluginNorth

PluginNorth skeleton

RequestFactory Skeleton

Generated classes for a SOAP2SOAP Plug-in

Comparison with a Non-SOAP2SOAP Plug-in

Client Stubs

<Web Services Interface>_Stub

<Web Services Interface>

<Web Services Interface>Service_Impl

<Web Services Interface>Service

PluginInstance

PluginNorth

PluginSouth

RequestFactory

Build Files and Targets for a Communication Service Project

Main Build File

Communication Service Common Build File

Plug-in Build File

Ant Tasks

cs_gen

plugin_gen

cs_package

javadoc2annotation

Communication Service Example

Overview

High-level Flow for sendData (Flow A)

High-level Flow for startNotification and stopNotification (Flow B)

High-level flow for notifyDataReception (Flow C)

Interfaces

Web Service Interface Definition

Interface: SendData

Operation: sendData

Interface: NotificationManager

Operation: startEventNotification

Operation: stopEventNotification

Interface: NotificationListener

Operation: notifyDataReception

Network Interface Definition

sendDataToNetwork

receiveData

Directory Structure

Directories for WSDL

Application-initiated traffic

$PDS_HOME/example/communication_service/example/common/wsdl/service

Network-triggered traffic

$PDS_HOME/example/communication_service/example/common/wsdl/callback

Directories for Java Source

Communication Service Common

$PDS_HOME/example/communication_service/example/common/src

Plug-in

$PDS_HOME/example/communication_service/example/plugins/netex/src

Directories for resources

$PDS_HOME/example/communication_service/example/common/resources/at/META-INF

$PDS_HOME/example/communication_service/example/common/resources/nt/META-INF

Directories for Configuration of Plug-in

$PDS_HOME/example/communication_service/example/plugins/netex/config/edr

$PDS_HOME/example/communication_service/example/plugins/netex/instance_factory

$PDS_HOME/example/communication_service/example/plugins/netex/storage

Directories for Build and Configuration of Builds

$PDS_HOME/example/communication_service/

$PDS_HOME/example/communication_service/example/common

$PDS_HOME/example/communication_service/example/plugins/netex

Directories for Classes, JAR, and EAR Files

$PDS_HOME/example/communication_service/example/dist

$PDS_HOME/example/communication_service/example/common/dist

$PDS_HOME/example/communication_service/example/common/dist/request_factory_skel

$PDS_HOME/example/communication_service/example/plugins/netex/dist

$PDS_HOME/example/communication_service/example/plugins/netex/dist/mbean_generationdir

Classes

Communication Service Common

ExceptionType

NotificationManagerPluginFactory

public void validateRequest(Method method, Object... args)

public RequestInfo createRequestInfo(Class<? extends Plugin> type, Method method, Object... args)

public Throwable convertEx(Method method, Throwable e)

private Throwable convertEx(Method method, PluginException e)

Plug-in Layer

ContextTranslatorImpl

public void translate(Object param, ContextInfo info)

ExamplePluginService

public boolean isRunning()

public String[] getSupportedSchemes()

public void init(String id, PluginPool pool)

public void doStarted()

public void doStopped()

public void doActivated()

public void doDeactivated()

public void handleSuspending(CompletionBarrier barrier)

public void handleForceSuspending()

public boolean isActive()

public ServiceType getServiceType()

public String getNetworkProtocol()

createInstance(String)

ExamplePluginInstance

public String getId()

public void activate()

private void rethrowServiceDeploymentException(Exception e)

public ConfigurationStoreHandler getConfigurationStore()

public NetworkProxy getNetworkProxy()

public void connect()

ConnectTimerTask

ConfigurationStoreHandler

public void setLocalInteger(String key, Integer value),

public Integer getLocalInteger(String key),

public void setLocalString(String key, String value), and

public String getLocalString(String key)

ExampleMBean

Management

NotificationHandlerNorth

NotificationHandlerNorth()

public void deliver(String data, String destinationAddress, String originatingAddress)

private NotificationCallback getNotificationCallback()

private NotificationData getNotificationData(String destinationAddress)

NetworkToNotificationPluginAdapter

public void setNotificationHandler(NotificationHandlerNorth notificationHandlerNorth)

NetworkToNotificationPluginAdapterImpl

public void setNotificationHandler(NotificationHandlerNorth notificationHandlerNorth)

public String resolveAppInstanceGroupdId(ContextMapperInfo info)

public void receiveData(@ContextKey(EdrConst ants.FIELD_ORIGINATING_ADDRESS) String fromAddress, @ContextKey(EdrConstants.FIELD_DESTINATION_ADDRESS) @MapperInfo(C) String toAddress, String data)

NotificationManagerPluginNorth

public StartEventNotificationResponse startEventNotification(@ContextTranslate(ContextTranslatorImpl.class) StartEventNotification parameters)

public StopEventNotificationResponse stopEventNotification(@ContextTranslate(ContextTranslatorImpl.class) StopEventNotification parameters)stopEventNotification(StopEventNotification)

SendDataPluginNorth

public void setPluginToNetworkAdapter(SendDataPluginToNetworkAdapter adapter)

public SendDataResponse sendData(@ContextTranslate(ContextTranslatorImpl.class) SendData parameters)

SendDataPluginSouth

public SendDataPluginSouth()

public void send(NetworkProxy proxy, String address, String data)

public String resolveAppInstanceGroupdId(ContextMapperInfo info)

public void prepareRequestContext(RequestContext ctx, ContextMapperInfo info))

SendDataPluginToNetworkAdapter

SendDataPluginToNetworkAdapterImpl

public SendDataPluginToNetworkAdapterImpl()

public void setNetworkProxy(NetworkProxy networkProxy)

public void send(String address, String data)

FilterImpl

public boolean matches(Object value)

public void setParameters(Serializable ... parameters)

NotificationData

public NotificationData()

StoreHelper

public static StoreHelper getInstance()

public void addNotificationData(URI address, NotificationData notificationData)

public void removeNotificationData(String correlator)

public NotificationData getNotificationData(String destinationAddress)

private Store<String, NotificationData> getStore()

private Set<Map.Entry<String, NotificationData>> getEntries(String correlator, Store<String, NotificationData> store)

private void removeEntries(Set<Map.Entry<String, NotificationData>> set, Store<String, NotificationData> store)

ExamplePluginInstance

public ExamplePluginInstance(String id, ExamplePluginService parent)

public String getId()

public void activate()

public void handleResuming()

public void deactivate()

public void handleSuspending()

public List<PluginInterfaceHolder> getNorthInterfaces()/ public List<PluginInterfaceHolder> getSouthInterfaces()

public boolean isConnected()

public int customMatch(RequestInfo requestInfo)

private void rethrowDeploymentException(Exception e)

public ConfigurationStoreHandler getConfigurationStore()

ExamplePluginService

public ExamplePluginService()

public TimerManager getTimerManager()

public boolean isRunning()

public String[] getSupportedSchemes()

public void init(String id, PluginPool pool)

public void doStarted()

public void doStopped()/public void doActivated()/public void doDeactivated()

public void handleResuming()

public void handleSuspending(CompletionBarrier barrier)

public void handleForceSuspending ()

public ServiceType getServiceType()

public String getNetworkProtocol()

public ManagedPluginInstance createInstance(String pluginInstanceId)

Store configuration

SLA Example

Service Enabler Example with SIP plug-in

Overview

High-level Flow for sendData (Flow A)

High-level Flow for startNotification and stopNotification (Flow B)

High-level flow for notifyDataReception (Flow C)

Interfaces

Web Service Interface Definition

Network Interface Definition

Directory Structure

Differences Compared to the Example netex Plug-in

Configuration Files and Artifacts

Classes

ExampleServlet

public void init()

protected void doMessage()

ExampleSipHelper

public void init(ServletContext servletContext)

public SipSessionsUtil getSessionsUtil()

public SipFactory getSipFactory()

public synchronized void registerCallback(NetworkCallback callback)

public synchronized void unregisterCallback(NetworkCallback callback)

public synchronized void notifyCallbacks(String fromAddress, String toAddress, String message)

SendDataPluginSouth

public SendDataPluginSouth()

public void send(String address, String data)

public String resolveAppInstanceGroupdId(ContextMapperInfo info)

public void prepareRequestContext(RequestContext ctx, ContextMapperInfo info))

NotificationHandlerSouth

public NotificationHandlerNorth()

public void receiveData(@ContextKey(EdrConstants.FIELD_ORIGINATING_ADDRESS) String fromAddress, @ContextKey(EdrConstants.FIELD_DESTINATION_ADDRESS) @MapperInfo(C) String toAddress, String data)

public String resolveAppInstanceGroupdId(ContextMapperInfo info)

public void prepareRequestContext(RequestContext ctx, ContextMapperInfo info))

ExampleMBean

SLA

Container Services

Container service APIs

Class: InstanceFactory

Class: ClusterHelper

Service: EventChannel Service

Interface: EventChannel

Interface: EventChannelListener

Service: Statistics service

Plug-in

Management

EDR

SLA Enforcement

Service Correlation

Interface: ExternalInvocation

Class: ExternalInvocatorFactory

Class: ServiceCorrelation

Implementing the ExternalInvocation Interface

Parameter Tunneling

Storage Services

ConfigurationStore

Interfaces

StorageService

Store configuration file

<store>

<db_table>

<query>

<provider-mapping>

<providers>

Shared libraries

Communication Service Description

High-level Components

Communication Service Common

Plug-in

Plug-in Service and Plug-in Instance

States

PluginPool

Interface: Plugin

Interface: PluginNorth

Interface: PluginNorthCallBack

Interface: PluginSouth

Interface: ManagedPluginService

Interface: PluginService

Interface: PluginInstanceFactory

Interface: PluginServiceLifecycle

Interface: ManagedPluginInstance

Interface: PluginInstance

Interface: PluginInstanceLifecycle

Class: RequestFactory

Class: CallbackFactory

Interface: Callback

Class: RequestInfo

Class: ServiceType

Interface: ContextMapperInfo

Interface: RequestContext

Class: ManagedPlugin

Class: AbstractManagedPlugin

Management

SLA Enforcement

Shared libraries

Annotations, EDRs, Alarms, and CDRs

About aspects and annotations

How aspects are applied

Context Aspect

EDR Generation

Exception scenarios

Adding data to the RequestContext

Using translators

Trigger an EDR programmatically

EDR Content

Using send lists

RequestContext and EDR

Categorizing EDRs

The EDR descriptor

Special characters

Values provided

Boolean semantic of the filters

Example filters

Example 1: filter

Example 2: Alarm filter

Example 3: Alarm filter

Example 4: filter

Example 5: filter with corresponding code for manually triggering a matching EDR

Check-list for EDR generation

Frequently Asked Questions about EDRs and EDR filters

Alarm generation

Trigger an alarm programmatically

Alarm content

CDR generation

Triggering a CDR

Trigger a CDR programmatically

CDR content

Additional_info column

Excluded keys (EdrConstants if not specified):

Out-of-the box (OOTB) CDR support

Making Communication Services Manageable

Overview

Create Standard JMX MBeans

Create an MBean Interface

Implement the MBean

Register the MBean with the Runtime MBean Server

Use the Configuration Store to Persist Values

Service Interceptors

Overview

Interceptor Decisions and Request Flow

Decisions

Flow Control

Changing the invocation order

Standard Interceptors

Retry functionality for plug-ins

Custom Interceptors

Developing Custom Interceptors

Deploying Custom Interceptors

Custom Service Level Agreements

Introduction

Custom SLAs and XSDs

Custom SLA Enforcement

Get an SLA using a DOM Object

Get an SLA using a Custom Parser

Example

Custom SLA Schema and Example SLA

Enforcement Logic

Subscriber-centric Policy

Service Classes and the Subscriber SLA

The <reference> tag

The <restriction> tag

Managing the Subscriber SLA

The Profile Provider SPI and Subscriber Contracts

Deploying the Custom Profile Provider

Subscriber Policy Enforcement

Do Relevant Subscriber Contracts Exist

Is There Adequate Budget for the Contracts

Creating an EDR Listener and Generating SNMP MIBs

Overview of External EDR listeners

Example using a pure JMS listener

Example using JMSListener utility with no filter

Using JMSListener utility with a filter

Description of EDR listener utility

Class JMSListener

Class EdrFilterFactory

Class EdrData

Class ConfigDescriptor

Class EdrConfigDescriptor

Class AlarmConfigDescriptor

Class CdrConfigDescriptor

Updating EDR configuration files

Generating SNMP MIBs

Converting Traffic Paths and Plug-ins to Communication Services

Converting Network Protocol Plug-ins

Converting Traffic Paths

Checklist

Policy

Overview

Policy Request Data

Adding a New Rule

Mapping PolicyRequest Data

Creating a New Rule File by Extending an Existing File: an Example

Using RequestContext Parameters Defined in Service Level Agreements

Callable Policy Web Service

Introduction

Callable Policy Web Service interface definition

Endpoints

Detailed service description

Policy Evaluation

Policy management

XML Schema data type definition

AdditionalDataValue structure

AdditionalDataValueType enumeration

Interface: Policy

Operation: evaluate

Input message: evaluateRequest

Output message: evaluateResponse

Referenced faults

Interface: PolicyManagement

Operation: viewRuleFile

Input message: viewRuleFile

Output message: viewRuleFileResponse

Referenced faults

Operation: deleteRuleFile

Input message: deleteRuleFile

Output message: deleteRuleFileResponse

Referenced faults

Operation: loadRules

Input message: loadRules

Output message: loadRulesResponse

Referenced faults

Operation: listRuleFiles

Input message: listRuleFiles

Output message: listRuleFilesResponse

Referenced faults

Rule files

Checklist


  Back to Top       Previous  Next