Cisco BTS 10200 Softswitch CORBA アダプタ インターフェイス仕様 プログラマ ガイド
CORBA のアーキテクチャと アプリケーション プログラミング インターフェイス
CORBA のアーキテクチャとアプリケーション プログラミング インターフェイス
発行日;2012/02/07 | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 523KB) | フィードバック

目次

CORBA のアーキテクチャと

CORBA アダプタのアーキテクチャ

ORB の仕様

コンパイラ ツール

ORB の展開

NameService

BTS 10200 ソフトスイッチの IDL

Bts10200 の API

Bts10200 のセキュリティ API

Login

Logout

Bts10200 のプロビジョニング API

getCommandDoc

request

マクロ コマンド

動作とアトリビュート

マクロ コマンドの管理

CORBA/XML インターフェイス

外部インターフェイス

CAD インターフェイス

操作

cadexception

CORBA のアーキテクチャと
アプリケーション プログラミング
インターフェイス

この章では、Cisco BTS 10200 ソフトスイッチの CORBA(Common Object Request Broker Architecture)アダプタのアーキテクチャと Application Programming Interface(API; アプリケーション プログラミング インターフェイス)について説明します。

CORBA アダプタのアーキテクチャ

この CORBA アダプタ(CAD)インターフェイスは、Cisco BTS 10200 ソフトスイッチの Element Management System(EMS; 要素管理システム)コンポーネントのアダプタ アーキテクチャを利用します。このアーキテクチャは、外部インターフェイスを EMS の共通インフラストラクチャに適応させることにより、各種のアダプタで Operations Administration Maintenance and Provisioning(OAM&P; 保守運用管理とプロビジョニング)の提供を可能にします。図1-1 に CAD のアーキテクチャ全体を図示し、CORBA のアーキテクチャを示します。

このアーキテクチャは、セキュア CORBA とノンセキュア CORBA が同時にアクティブになるデュアル モードのサポートを提供します。これは、以前のリリースではインストール オプションでした。ノンセキュア モードとセキュア モードが完全にサポートされます。このデュアル モード サポートの一部として、CIS アプリケーションを管理する Cisco BTS 10200 ソフトスイッチの EMS 上に 2 つの Java プロセスが存在します。各プロセスには、それぞれの固有機能を示す一意の名前が付けられています。

ノンセキュア: -D_CIS_IIOP

セキュア: -D_CIS_SSLIOP

このデュアル モード サポートには副作用があります。両方のモードがアクティブになっている場合、新しいセキュア CORBA モードは以前のリリースと同様には動作しません。この新しい動作にはネーム スペースの衝突が含まれるため、問題を避けるために新しいセキュア POA コンテキストおよびネーム スペースが提供されています。

ノンセキュア モードとセキュア モードのどちらでも、アクティブな EM01 EMS アプリケーション上でのみ接続が許可されます。アクティブな EM01 アプリケーションが障害状態になるか、冗長メイトに手動でスイッチオーバーすると、自動的に接続がドロップされます。さらに、該当する EMS へ新しいクエリーが解決されないように、オブジェクトがローカル INS または NameService から削除されます。この動作によって、スタンバイ EMS からのプロビジョニングを防止し、従来の CORBA の問題を解決しています。

Virtual IP address(VIP; バーチャル IP アドレス)が設定されている場合、CORBA インストレーションは自動的に VIP を iiop.hostname として使用します。VIP が設定されていない場合は、最初の EMS 管理 IP アドレスが iiop.hostname として使用されます。これにより、NameService がアクティブな EMS 上のすべての IP アドレスをリッスンできます。VIP の使用については、『 Cisco BTS 10200 Softswitch CLI Reference Guide, Operations, Administration and Maintenance 』を参照してください。

CORBA をインストールすると、CORBA SDK も EMS 上にインストールされます。インストーラでサンプルのテスト プログラムを実行すると、CORBA がインストールされたことを確認できます。詳細については、 付録 C「CORBA クライアント パッケージ(BTSxsdk)のサンプル実装」 を参照してください。

クライアント アプリケーションの開発は、CIS アプリケーションの bts.properties ファイルの影響を受けます。ログイン セッションは、10 分間放置すると期限切れになります。つまり、セッションをアクティブな状態に保つには、10 分に 1 回、コマンドが各セッションに発行される必要があります。これは、接続プールの使用を伴うすべてのクライアント アプリケーションで重要です。

図1-1 CORBA のアーキテクチャ

 

ORB の仕様

CAD インターフェイスで使用される Object Request Broker(ORB; オブジェクト リクエスト ブローカ)は、OpenORB 1.3.1 準拠のパッケージです。この ORB は、Portable Object Adapter(POA; ポータブル オブジェクト アダプタ)など、この他の高度な機能もサポートしています。POA は CAD で使用される実装モデルです。

コンパイラ ツール

必要なコンパイラは、J2SE Development Kit(JDK)1.4.1 以上です。Cisco BTS 10200 ソフトスイッチでは、コンパイルおよび Java Runtime Environment(JRE; Java ランタイム環境)に JDK1.5.0(JDK5)を使用しています。クライアント側アプリケーションには、次のツールも必要になる場合があります。

Xerces パーサー

ECS レポート ビルダ

ORB の展開

図1-2 に、ORB の展開プロセスを示します。

図1-2 ORB の展開

 

クライアント側アプリケーションに OpenORB を使用する場合、クライアント環境を正しく設定してアプリケーションを使用できる状態にするには、いくつかの基本的な手順を実行する必要があります。まず、OpenORB を Java のプライマリ ORB として使用するようにクライアント マシン上の JVM を設定します。この設定は、実行時に実施することも、JVM の orb.properties で永続的に設定することもできます。後者の場合は、JVM インストールの所有者特権が必要です。通常、これはルートです。ルートユーザが次のコマンドを実行する必要があります。

java -jar openorb_1.3.1.jar
 

このコマンドによって、次の値を使用した orb.properties 設定が適切な場所に配置されます。

org.omg.CORBA.ORBClass=org.openorb.CORBA.ORB
org.omg.CORBA.ORBSingletonClass=org.openorb.CORBA.ORBSingleton
 

または、クライアント アプリケーションの各呼び出しに対する環境オーバーライドとして、この設定を提供する必要があります。

クライアント プログラマにとって有益となる値は、この他に OpenORB の DEBUG オプションがあります。これらのオプションは、クライアント アプリケーションによって生成されるデバッグ情報の量を制御するものです。デバッグ情報は、アプリケーションの標準出力に送信されます。このデータをプログラマがログ ファイルにキャプチャするには、基本的なシェル リダイレクト コマンドを使用してデータをリダイレクトします。Web サービスなど、この他の環境では操作が異なる場合があります。最も多くのデバッグ出力を取得できるのは、下に示したオプションです。これらのオプションを使用すると、IIOP/SSLIOP メッセージのダンプが生成されます。このダンプは、Cisco BTS 10200 ソフトスイッチとの通信に関する問題のデバッグでは最も有益です。

-Dopenorb.debug.trace=DEBUG -Dopenorb.debug.level=HIGH

このオプションは、Java 呼び出しの一環で、クライアント アプリケーションに対する環境設定として提供されます。以降の例では、Interface Definition Language(IDL; インターフェイス定義言語)のコンパイルについて示すとともに、POA を検索してコンパイル済み IDL オブジェクトにバインドするために必要な Java コードを示します。

この一般的な OpenORB プロセスは、Cisco BTS 10200 ソフトスイッチと対話するどのクライアント アプリケーションの開発でも重要な部分です。Cisco BTS 10200 ソフトスイッチで提供される IDL は、インターフェイス クラスにコンパイルしてからクライアント アプリケーションで使用する必要があります。


) IDL とは、ある言語で記述されたプログラムまたはオブジェクトと、未知の言語で記述された別のプログラムとの通信を可能にする言語の一般的な呼称です。分散オブジェクト技術では、新しいオブジェクトが、送信先となる任意のプラットフォーム環境での実行方法を発見できる必要があります。ORB は、オブジェクト間のクライアント/サーバ関係において仲介者として機能するミドルウェア プログラムです。


このコード例では、Cisco BTS 10200 ソフトスイッチ製品で開発された Java パッケージ ツリーを使用しています。このコードは変更できます。他のクライアントでは、IDL インターフェイス オブジェクトを包含する別のパッケージ ツリーを指定できます。このスクリプトの詳細については、SDK を参照してください。

#!/bin/sh
##############################################################################
# Copyright (c) 2002, 2006 by Cisco Systems, Inc.
#
# AUTHOR: A. J. Blanchard
#
# DESC: Invoke the IDL compiler for the OpenORB package.
#
##############################################################################
set -e
set -a
#set -x
 
#
# List required jar files
#
CLASSPATH=./opt/BTSoorb/lib/logkit.jar:/opt/BTSoorb/lib/openorb-1.0.1.jar:/opt/BTSoorb/lib/openorb_tools-1.3.1.jar:/opt/BTSoorb/lib/xerces.jar:/opt/BTSoorb/lib/avalon-framework.jar:/opt/BTSoorb/lib/openorb_ots-1.3.1.jar:/opt/BTSoorb/lib/openorb_pss-1.3.1.jar:/opt/BTSoorb/lib/openorb_ins-1.3.1.jar:/opt/BTSoorb/lib/openorb_tns-1.3.1.jar
 
export CLASSPATH
 
java -classpath $CLASSPATH org.openorb.compiler.IdlCompiler $1 -jdk1.4 -all -verbose -d ./

Java ファイルは、パッケージ ディレクトリ内で指定されたローカル ディレクトリ ツリーに生成されます。このパッケージ パスは、オブジェクト インターフェイス実装を発見するためのバインド ロジックで必要になります。

 
#!/bin/sh
##############################################################################
# Copyright (c) 2002, 2006 by Cisco Systems, Inc.
#
# AUTHOR: A. J. Blanchard
#
# DESC: Compile Java ORB programs with the required components from OpenORB.
#
##############################################################################
set -e
set -a
#set -x
CLASSPATH=./opt/BTSoorb/lib/logkit.jar:/opt/BTSoorb/lib/openorb-1.3.1.jar:/opt/BTSoorb/lib/openorb_tools-1.3.1.jar:/opt/BTSoorb/lib/xerces.jar:$HOME/mb/devel/em/lib/cad.jar:$HOME/mb/devel/em/lib/ecs-1.4.1.jar:/opt/BTSoorb/lib/openorb_ots-1.3.1.jar:/opt/BTSoorb/lib/openorb_pss-1.3.1.jar:/opt/BTSoorb/lib/openorb_ins-1.3.1.jar:/opt/BTSoorb/lib/openorb_tns-1.3.1.jar
export CLASSPATH
javac -classpath $CLASSPATH -d ./ $*

Java ファイルのパッケージをコンパイルして、必要なクラス ファイルを生成します。これらのクラス ファイルが、クライアントのクラスパスに存在している必要があります。


) この例は、単一のディレクトリ内にあるすべての Java ファイルを 1 つのコマンドだけでビルドする場合の一般的な方法を示しています。これは、Java コードを最も早く一括でコンパイルする方法の 1 つです。


Cisco BTS 10200 ソフトスイッチは、CORBA インターフェイスの利用例を網羅した Software Development Kit(SDK; ソフトウェア開発キット)を提供しています。これらの例では、次のような多くのトピックを取り上げています。

CLI

バッチ ファイル処理

マルチスレッドの同時使用

SSL


) 下の例は、BTS 10200 オブジェクトの基本的な抽象化を示しています。この他のツールを使用する場合は、IDL オブジェクトを OpenORB ファイルとともに修正する必要があります。


package com.sswitch.oam.ccc;
 
import java.lang.*;
import java.io.*;
import java.util.*;
import java.text.*;
// CORBA stuff
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import org.omg.Messaging.*;
// XML Stuff
import org.apache.ecs.xml.*;
import org.apache.ecs.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import org.apache.xml.serialize.*;
// BTS Code jar files...
import com.sswitch.oam.cad.*;
import com.sswitch.oam.xml.*;
import com.sswitch.oam.util.*;
 
/**
* CorbaXmlIntf.java
* Copyright (c) 2002, 2006 by Cisco Systems, Inc.
* -- This is the client side driver stub. This allows the client application
* to generate the Request object which is then digested in this class as a
* XML document and sent as a request to the CORBA server. The results are
* then returned to the user or the CORBA exception is thrown.
*
* @author A. J. Blanchard
* @version 4.0
* @since BTS 10200 4.0
*
*/
 
public class CorbaXmlIntf {
 
/*
* Class private data
*/
private String [] objArgs;
private org.omg.CORBA.ORB objOrb;
private org.omg.CosNaming.NamingContextExt objContext;
 
private com.sswitch.oam.cad.Bts10200 objBts;
private com.sswitch.oam.cad.Bts10200_Security objBtsSec;
private org.omg.CORBA.StringHolder objKey;
 
/**
* Generic Constructor for the test driver.
*/
public CorbaXmlIntf(String[] args)
{
// Initialize the ORB.
objOrb = org.omg.CORBA.ORB.init(args, null);
objArgs = args;
return;
}
 
/**
* This is the primary execution method for the object. It performs the
* actual request and calls for the print of the reply.
*/
public void connect() throws CadExceptions
{
//
// Log into the target machine with generic optiuser
//
try {
bind();
objKey = new org.omg.CORBA.stringholder();
objBtsSec.login(“btsadmin”, “btsadmin”, objKey);
Log.info("BTS10200 Login successful: "+objKey.value);
}
catch (Exception e) {
Log.error("Exception in CORBA Bind/Login = "+
Util.stackTraceToString(e));
throw new CadExceptions(1, e.toString());
}
}
 
/**
* This method generate the request to the CORBA server and returns
* the reply or an exception if the interface throws an exception.
* The argument "request" must be an XML formatted document.
*
* @param request This XML request document.
* @returns String This is the XML formatted answer.
*/
public String request(String request)
throws CadExceptions
{
String answer=null;
try {
org.omg.CORBA.StringHolder reply = new org.omg.CORBA.StringHolder();
// Issue request to BTS 10200
objBts.request(request, objKey.value, reply);
 
// Build an XMLReply from the document
answer= reply.value;
}
catch (Exception e) {
Log.warning("Request Command Exception:\n " +
Util.stackTraceToString(e));
throw new CadExceptions(1, e.toString());
}
return answer;
} // end request()
 
/**
* This method generate the request for a command document to the
* CORBA server and returns the reply or an exception if the interface
* throws an exception.
*
* @param noun This noun for the request.
* @param verb This verb for the request.
* @returns String This is the XML formatted answer.
*/
public String getCommandDoc(String verb, String noun)
throws CadExceptions
{
String answer=null;
try {
org.omg.CORBA.StringHolder reply = new org.omg.CORBA.StringHolder();
// Issue request to BTS 10200
objBts.getCommandDoc(noun, verb, objKey.value, reply);
 
// Build an XMLReply from the document
answer= reply.value;
}
catch (Exception e) {
Log.warning("Request Command Exception:\n " +
Util.stackTraceToString(e));
throw new CadExceptions(1, e.toString());
}
return answer;
} // end getCommandDoc()
 
/**
* This method generate the request for a command document to the
* CORBA server and returns the reply or an exception if the interface
* throws an exception.
*
* @param noun This noun for the request.
* @param verb This verb for the request.
* @returns String This is the XML formatted answer.
*/
public String getExtCommandDoc(String verb, String noun)
throws CadExceptions
{
String answer=null;
try {
org.omg.CORBA.StringHolder reply = new org.omg.CORBA.StringHolder();
// Issue request to BTS 10200
objBts.getExtCommandDoc(noun, verb, objKey.value, reply);
 
// Build an XMLReply from the document
answer= reply.value;
}
catch (Exception e) {
Log.warning("Request Command Exception:\n " +
Util.stackTraceToString(e));
throw new CadExceptions(1, e.toString());
}
return answer;
} // end getExtCommandDoc()
 
/**
* This module disconnects the user from the BTS 10200 CORBA interface.
*/
public void disconnect() throws CadExceptions
{
objBtsSec.logout(objKey.value);
return;
}
 
/*=====================================================================
* Internal processing methods...
*=====================================================================*/
 
/**
* This method binds to the target CORBA objects for us to operate
*/
protected void bind()
throws org.omg.CORBA.ORBPackage.InvalidName,
org.omg.CosNaming.NamingContextPackage.InvalidName,
org.omg.CosNaming.NamingContextPackage.NotFound,
org.omg.CosNaming.NamingContextPackage.CannotProceed
{
 
org.omg.CosNaming.NameComponent[] nameComponent = null;
org.omg.CORBA.Object result = null;
 
insLocate();
 
result = objContext.resolve(objContext.to_name("Bts10200_Security_poa"));
objBtsSec = Bts10200_SecurityHelper.narrow(result);
 
result = objContext.resolve(objContext.to_name("Bts10200_poa"));
objBts = Bts10200Helper.narrow(result);
Log.info("Basic POA(s) have been located and bound.");
return;
}
 
/**
* Load the name service and find the context for the CORBA objects.
* Remember, the INS must be the one located on the BTS. This has the
* object references. Use a 'corbaloc:' for now but later a migration
* to URL for name service location would be good.
*/
protected void insLocate()
throws org.omg.CORBA.ORBPackage.InvalidName
{
//System.out.println("Locate NameService in system.");
org.omg.CORBA.Object initial_context_obj =
objOrb.resolve_initial_references("NameService");
objContext =
org.omg.CosNaming.NamingContextExtHelper.narrow(initial_context_obj);
Log.info("NameService found in initial context.");
return;
}
 
} // end CorbaXmlIntf
 

実際の実装では、POA 選択を動的に実行すること、および何らかの形でのサイトへの誘導(たとえば、ソフトスイッチのホーム ロケーションやソフトスイッチ ID の一部への誘導)に基づいて実行することが可能です。いったん POA が選択されると、すべてのオブジェクト実装は同一になります。どのオブジェクトでもサイト固有の動作はありません。ただし、サイト固有アトリビュートは存在し、ローカル データベースの内容に基づいて導出されます。

NameService

OpenORB の NameService モジュールは、NameService Specification Version 1.2(2002 年 9 月)の Object Management Group(OMG; オブジェクト管理グループ)準拠の実装を提供します。このモジュールは、Cisco BTS 10200 ソフトスイッチ上の CORBA の動作には必須です。クライアントは、NameService に接続し、corbaloc プロセスを通じて Cisco BTS 10200 ソフトスイッチ CORBA オブジェクトへの参照を取得します。アプリケーションのクライアント側で OpenORB を使用する場合は、次の構文を適用して NameService に接続します。

 
“corbaloc::1.2@<Host Name>:14001/NameService”
 

corbaloc 文字列は、/opt/BTSoorb/config ディレクトリにある OpenORB.xml コンフィギュレーション ファイルで初期参照として指定できます。または、クライアント アプリケーションで必要に応じて動的に生成することができます。ホスト名は、IP アドレスにすることをお勧めします。

各 Cisco BTS 10200 ソフトスイッチ EMS には管理インターフェイスがあり、INS または NameService では、これらの両方の管理インターフェイスにわたって解決されるホスト名を使用する必要があります。これは必須条件です。ただし、クライアント側アクセスは、どのインターフェイスが使用されているかを意識しません。クライアントは、所定の管理インターフェイスがさまざまな理由でダウンする可能性があること、およびそれがネーム サービスへのアクセスに影響することを認識している必要があります。どのサブネットでも、スイッチやルータの障害は時間の経過に伴って自然に発生する可能性があり、これに対処するためには、両方の IP アドレスを使用し、ホスト名でリトライすることを推奨する必要があります。

各 Cisco BTS 10200 ソフトスイッチには、それぞれ独自のデュプレックス INS ペアがあります。各 INS は、Cisco BTS 10200 ソフトスイッチの片側からのオブジェクトを表しています。このリソース ロケーション文字列を使用して、NameService への参照を生成します。各 Cisco BTS 10200 ソフトスイッチにはそれぞれ独自のネーム サービス インスタンスがあり、ネーム サービスは EMS ごとに個別に利用できます。このモジュールの Cisco BTS 10200 ソフトスイッチのデフォルト UDP ポートは、14001 です。OpenORB モデルでは、この値はコンフィギュレーション ファイル OpenORB.xml で渡されます。ソフトウェア開発キット(SDK)には、OpenORB クライアント実装を使用した動作可能サンプルをビルドするためのコード例とともに、この設定の例が含まれています。

要求インターセプタを適用すると、複数の NameService モジュールを使用できます。プロキシ オブジェクトを使用することで、ForwardRequest(CORBA 3.0 spec. 1.3.1)プロトコルを使用して要求を転送できます。詳細については、「プロキシ」を参照してください。

NameService モジュールを使用したオブジェクト解決の例を次に示します。ここでは、基本的な POA をローカル Cisco BTS 10200 ソフトスイッチへのルートレベル参照として使用していることに注意してください。

org.omg.CORBA.Object initial_context_obj =
objOrb.resolve_initial_references(“NameService”);
objContext =
org.omg.CosNaming.NamingContextExtHelper.narrow(initial_context_obj);
result = objContext.resolve(objContext.to_name(“Bts10200_poa”));
objBts = Bts10200Helper.narrow(result);
 

BTS 10200 ソフトスイッチの IDL

この IDL は、CAD インターフェイスのオブジェクトレベル インターフェイスを表現するために使用されます。このオブジェクト インターフェイスには、オブジェクトのアトリビュートと動作が含まれています。この項では、Cisco BTS 10200 ソフトスイッチの IDL の概要を示します。これらの IDL オブジェクトは、Cisco BTS 10200 ソフトスイッチのプロビジョニングに使用される XML 記述およびドキュメントへのアクセスを定義するものです。この XML ドキュメントの詳細については、後の章で扱います。CORBA は、ほとんどの部分でこれらの XML ドキュメントのトランスポートとして機能します。

bts10200.idl ファイルは、システム全体の全般的なデータ構造と型定義を含んでいます。また、エラー インターフェイス(例外)も保持しています。bts10200.idl ファイルの全文については、「Cisco BTS 10200 ソフトスイッチの IDL コード」を参照してください。このファイルは、Cisco BTS 10200 ソフトスイッチで使用するために定義されたすべてのオブジェクトを含んでいます。各オブジェクトの内訳を次に示します。

Bts10200_Security :プライマリ セキュリティ オブジェクト。別のオブジェクトで使用されるログイン キーの作成に使用されます。Cisco BTS 10200 ソフトスイッチにアクセスするには、このオブジェクトが必要です。

Bts10200 :XML 記述ドキュメントのほか、プロビジョニング ドキュメントと制御ドキュメントの取得に使用される基本オブジェクト。

CadException :Cisco BTS 10200 ソフトスイッチ CAD インターフェイスのすべてのエラー報告に使用されるオブジェクト。

Macro :このオブジェクトは、独自の show コマンドや display コマンドを定義し、Cisco BTS 10200 ソフトスイッチ上で実行します。このオブジェクトによって、ユーザは複雑な関係を基にしてシンプルな表示コマンドを作成できるようになり、これらのコマンドを永続的に保存して、以後に「マクロ」コマンドとして再び呼び出すことができます。

Bts10200 の API

この項では、CAD インターフェイスへの実際の API コールについて説明します。前提条件は、クライアント アプリケーションが Java 言語で開発されていることです。C++ を使用できないわけではありませんが、このマニュアルでは取り扱いません。

関連オブジェクトのメソッドを呼び出すごとに、挙げられているすべてのパラメータが必要です。

Bts10200 のセキュリティ API

Cisco BTS 10200 ソフトスイッチのセキュリティ オブジェクト(Bts10200_Security)は、Cisco BTS 10200 ソフトスイッチの CAD インターフェイスに関するさまざまなレベルのセキュリティをユーザに提供します。認可されたユーザは、セキュリティ キーを取得して、このキーを以後のすべてのトランザクションで使用できます。このオブジェクトは、インターフェイスの他のどの CORBA メソッド呼び出しよりも先に使用する必要があります。このキーが CAD インターフェイスで有効となるのは、ユーザのセッションが継続している間です。logout メソッドが一度でも呼び出されると、キーは無効になります。同様に、システムに対するアクセスが 10 分以上なかった場合はセキュリティ キーが期限切れになり、ユーザは自動的に CAD インターフェイスからログアウトされます。ユーザ名とパスワードは、CLI/MAC アダプタ インターフェイスで許容されるものと同値であり、同じ認可権限が適用されます。

この項の各メソッドは、Bts10200_Security インターフェイスの一部です。挙げられているパラメータは、メソッドごとに必要であり、データを含んでいる必要があります。

Login

login メソッドは、CORBA インターフェイス ユーザの認証を提供します。FTP アダプタや CLI アダプタと同一のユーザ セキュリティを利用しています。このメソッドは、キーとして定義された文字列値を返します。このキーは、CAD インターフェイスに対するすべてのトランザクションで必要になります。これは、特定ユーザ固有の認可を示す認証キーです。このメソッドのシグニチャは、次のコードで定義されます。

int login (java.lang.String user, java.lang.String passwd, java.lang.StringHolder key) throws CadExceptions
 

戻り値 :処理の成功または失敗を示すステータス。失敗は、ファシリティが使用不能であることを意味します。成功は、処理が完了したことを意味します。

例外 :CadException は、要求の処理で動作エラーが発生したことを意味します。これには、パラメータの型、範囲、およびデータベース アクセスに関する問題が含まれます。

Logout

logout メソッドは、ログイン セッションを終了します。認証キーの有効性を破棄します。このメソッドが完了すると、そのキーはこの他のメソッド呼び出しに使用できなくなります。このメソッドのシグニチャは、次のコードで定義されます。

int logout (java.lang.String) throws CadExceptions
 

戻り値 :処理の成功または失敗を示すステータス。失敗が示された場合は、ファシリティが使用不能であることを意味します。成功の戻り値は、処理が完了したことを示します。

例外 :CadException は、要求の処理で動作エラーが発生したことを意味します。これには、パラメータの型、範囲、およびデータベース アクセスに関する問題が含まれます。

Bts10200 のプロビジョニング API

Cisco BTS 10200 ソフトスイッチ オブジェクト(Bts10200)は、認可されたユーザに対して Cisco BTS 10200 ソフトスイッチ CLI エンジンへのプロビジョニング インターフェイス機能を提供します。「Extensible Markup Language の処理」で説明するように、入力と出力は両方とも XML になります。CLI コマンドは、CORBA インターフェイスを通じて送信される前に解析され、XML ドキュメントに変換されます。次に、CORBA CIS サーバが CLI プロビジョニング コマンドを実行して、応答を XML ドキュメントで返送します。この項の各メソッドは、Bts10200 インターフェイスの一部です。挙げられているパラメータは、メソッドごとに必要であり、データを含んでいる必要があります。

getCommandDoc

getCommandDoc メソッドは、コマンド記述の取得を提供します。このメソッドは、特定の名詞(noun)/動詞(verb)の組み合せについて、コマンドの構文とオプションを記述した XML ドキュメントを取得します。このメソッドのシグニチャは、次のコードで定義されます。

void getCommandDoc (java.lang.String noun, java.lang.String verb, java.lang.String key, org.omg.CORBA.StringHolder reply) throws CadExceptions

ここで、

パラメータ noun :コマンドの noun です。

パラメータ verb :コマンドの verb です。

パラメータ key :ログインで取得された認可キーです。

パラメータ reply :コマンドの構文とオプションが含まれた XML 応答です。

例外 (cadexception):要求の処理で動作エラーが発生したことを意味します。これには、パラメータの型、範囲、およびデータベース アクセスに関する問題が含まれます。

request

request メソッドは、CORBA インターフェイスを通じて XML ドキュメント ベースのプロビジョニング要求を処理します。CORBA CIS サーバがプロビジョニング コマンドを実行して、応答を XML ドキュメントで返送します。このメソッドのシグニチャは、次のコードで定義されます。

void request (java.lang.String command, java.lang.String key, org.omg.CORBA.StringHolder reply) throws CadExceptions
 

ここで、

パラメータ command :XML ドキュメントによるプロビジョニング コマンド要求です。

パラメータ key :ログインで取得された認可キーです。

パラメータ reply :CLI エンジンでのコマンド実行の XML 応答です。

例外 (cadexception):要求の処理で動作エラーが発生したことを意味します。これには、パラメータの型、範囲、およびデータベース アクセスに関する問題が含まれます。

マクロ コマンド

Cisco BTS 10200 ソフトスイッチは、自身のデータベース内にある複雑なデータの高レベル(概要)ビューを提供する機能を必要とします。通常、データベース項目間の関係を特定するには、データベースに何回かコマンドを発行して、複数の要求を行う必要があります。このプロセスは低速でコストがかかり、Operations Support System(OSS; オペレーション サポート システム)管理システムの処理の進行を阻害します。このため、複数の操作を、データベースに対する単一の要求に縮小できる最適化されたアプローチが必要です。この要求では、一連の定義済みルールに基づいて正しい関連データが返される必要があります。

Cisco BTS 10200 ソフトスイッチの複雑なデータ関係を表示できる機能のことを、マクロと呼びます。マクロは、ユーザが定義した関係ルールを使用して、複数のコマンドによる複合クエリーを構築する単一のコマンドです。

マクロ コマンドは Cisco BTS 10200 ソフトスイッチ固有のものであり、シンプレックス構成とデュプレックス構成の両方で機能します。このドキュメントにおけるこのコマンドの主な目的は、CORBA アダプタ(CAD)機能の CORBA インターフェイス定義言語(IDL)インターフェイスでこのコマンドを利用することです。


) マクロ コマンドは Release 3.5 で利用可能になりました。Release 3.2 および Release 3.3 では利用できません。


動作とアトリビュート

マクロ コマンド インターフェイスは、ユーザが Cisco BTS 10200 ソフトスイッチのデータベースで複数のテーブルを選択および定義することを可能にします。通常のコマンドは、単一のデバイスまたはテーブルの両方、あるいはその一方を操作するだけです。

マクロ コマンド インターフェイスを使用して、ユーザがデータベース内のテーブルに書き込むことはできません。この操作については、データベース テーブルに対する実行を禁止するルールおよび制約事項が多数あります。

マクロ コマンドの管理

マクロ コマンドの管理は、マクロ コマンド定義を作成、変更、および削除するユーザ コマンドで構成されます。これらのユーザ コマンドによって、実際のマクロ コマンドを定義および操作し、標準のプロビジョニング コマンドとして実行します。この他の主な構成要素は、マクロの実行です。これは CORBA インターフェイスを通じて提供されます。マクロ コマンドの管理ルールを追加のユーザ指定データとともに使用すると、マクロ パラメータのインスタンス値が返されます。

マクロの定義

マクロ コマンドのビルドに使用される値は、内部的に検証されます。厳密には、各マクロは複数の noun とその関連パラメータを持ったスーパーセット show コマンドです。マクロ コマンドの作成に使用される値は、実際のテーブル名やカラム名からではなく、すべて noun のパラメータから導出されます。これにより、Cisco BTS 10200 ソフトスイッチ スキーマの抽象化を維持できます。以降のマクロ コマンド管理の例では、マクロ コマンドの一般的な作成、変更、および削除方法を示します。例に続く各項では、マクロ定義で使用される実際の値、およびこれらの値に関する制約事項について詳しく説明します。

add macro id=CTXG_NUMBERS; \
parameters=office_code.NDC, \
office_code.EC,\
dn2subscriber.DN,\
subscriber.CTXG_ID; \
rules=”office_code.OFFICE_CODE_INDEX=\
dn2subscriber.OFFICE_CODE_INDEX,\
dn2subscriber.SUB_ID=subscriber.ID”;
 

既存のマクロを編集するときは、変更しようとするパラメータを入力する必要があります。この場合、 パラメータ ルール は(両方または一方が)リスト形式になっています。リスト全体を再入力する必要があります。マクロ データベース エントリに格納されているリストが置換されます。このことを次の例で示します。

 
change macro id=CTXG_NUMBERS; \
parameters= office_code.NDC, \
office_code.EC,\
dn2subscriber.DN,\
subscriber.ID;
 

マクロが不要になった場合は、削除できます。削除は delete macro コマンドで実行します。必要なパラメータは、マクロ ID だけです。該当するマクロに関連するすべての定義が、データベースから削除されます。 delete macro コマンドの書式は次のとおりです。

 
delete macro id=CTXG_NUMBERS;
 

マクロの表示に必要なのは、マクロ ID だけです。コマンドの静的コンポーネントがすべて返されます。このコマンドの書式を次の例に示します。

 
show macro id=CTXG_NUMBERS;

マクロ ID

マクロ ID は、マクロ定義へのすべての参照で、ハンドルとして使用されます。マクロを呼び出す場合は、ID がマクロを呼び出すための noun になります。また、 change macro delete macro show macro の各コマンドでは、ID は特定の定義を編集するために使用されるプライマリ キーまたはパラメータです。ID は文字型のフィールドであり、他のどのマクロとも重複しない必要があります。ID は、最長で 79 文字です。マクロ ID によって、必要な操作を記述するための多様性を十分に備えた一意のマクロ定義が提供されます。

パラメータ リスト

パラメータ リストは、マクロ コマンドに表示される noun とパラメータを列挙するために使用されます。これらの noun とパラメータは、応答に配置される選択項目を構成します。パラメータ リスト フィールドの値は、関連する Cisco BTS 10200 コマンドの noun とパラメータのカンマ区切りリストとなるように設計されています。このリストは、入力時には次の形式になります。

parameters=<noun.parameter>,<noun.parameter>,...,<noun.parameter>;
 

リストの各項目は、noun、ピリオド、その noun のパラメータという形式になっています。これらの noun とパラメータは、要素管理システム(EMS)を通じて検証されます。リストの各項目は、常に noun とパラメータという完全な形式で指定する必要があります。これは、「ID」などの利用頻度の高いパラメータ名を再使用できるようにするためです。

パラメータには、暗黙的な序列はありません。マクロで定義された順序に従って、コマンド処理に渡されます。所定の noun が持つ他のパラメータからの追加データ項目が含まれることはありません。

ルール

マクロ コマンドの最も重要な部分は、ルールです。これらのルールによって、Cisco BTS 10200 ソフトスイッチ データベースから選択されるデータの関係を規定します。これらのルールは、データベース選択文の「where」節に相当します。ルールは、操作に必要なデータ サブセットに絞り込むために役立ちます。マクロに適用できる基本的なルール セットは、2 つあります。 and ルールと or ルール、および equivalence not です。一般的なパラメータ ルールは、 and ルールとして適用されます。これらのルールの定義は、次のとおりです。

and ルール :マクロでデータを選択するための必要条件を表す、1 つまたは複数のデータ修飾子。単一の and ルールによって、「特定の noun およびパラメータが他の特定の noun およびパラメータと等しくなる」ことを必要条件として指定できます。

or ルール :マクロでデータを選択するための十分条件を表す、1 つまたは複数のデータ修飾子。単一の or ルールによって、「特定の noun およびパラメータが他の特定の noun およびパラメータと等しくなる」ことを十分条件として指定できます。

equivalence および not :マクロ コマンドのルール セクションに、2 つのバリエーションを導入できます。これらを使用すると、noun/パラメータ ペアを等価または不等として記述できます。この表現の一般的な構文は、等価の場合は =、不等の場合は != です。

ユーザ入力

ユーザ入力コンポーネントは、ルール リストでは必須ではありません。これは、マクロ呼び出し時に提供されます。この追加入力は and ルールの入力として扱われます。このデータは、選択されるデータ サブセットを定義するデータを絞り込むためのものです。このルール データでは、等号構文を使用してデータ選択のバリエーションを表現できます。たとえば、ユーザは、特定の機能を持たないすべてのサブスクライバを検索することができます。

CORBA/XML インターフェイス

CORBA Interface Servant(CIS; CORBA インターフェイス サーバント)は、マクロ コマンド インターフェイスのための新しい IDL インターフェイスをサポートしている必要があります。これには、次の新しいコンポーネントを使用できることを含みます。CIS サブシステムは、マクロ コマンドの定義と実行をサポートしています。

マクロ コマンド定義 :「Bts10200.request(...);」インターフェイスを通じて通常のプロビジョニング要求として定義できるマクロが規定されます。

IDL インターフェイス定義 :標準の機能プロビジョニング インターフェイスから独立したマクロ コマンドにアクセスするための、新しい IDL メソッドが追加されています。このメソッドはマクロの実行専用です。

IDL インターフェイスの CIS 実装 :認可キーと入力の引数の文字列を受け入れることで、他の CIS インターフェイス オブジェクトの標準的な動作に準拠する実装。マクロ実行への応答を示す文字列も返します。引数および書式は、次のとおりです。

Request :要求に対する追加のユーザ指定ルールをページング ファシリティ パラメータとともに含んだ、XML Request ドキュメント。XML Request ドキュメントでは、noun キーが、要求を実行するための目的のマクロ名に設定されていることも必要です。このとき、verb キーは使用されません。デフォルトとしては、 show が最適のオプションです。これにより、書き込みが許可されている場合に機能の競合が回避されます。

Key :Bts10200_Security インターフェイスを通じて提供される実際の認証キーを含んだ、単純な文字列オブジェクト。

Reply :マクロの実行によって返されたデータを含んだ XML Reply ドキュメント。このドキュメントは、Bts10200 インターフェイスからの Reply XML ドキュメントと同じ形式に従っています。

外部インターフェイス

この項では、Cisco BTS 10200 ソフトウェアで提供され、Cisco BTS 10200 ソフトスイッチの CORBA アダプタ(CAD)の外部インターフェイスに反映される拡張機能について詳しく説明します。マクロ コマンドの実行に対しては、ページング パラメータを使用できます。ページング パラメータには、limit パラメータと start-row パラメータがあります。

CAD インターフェイス

この項では、CAD インターフェイスの新しい IDL メソッドのシグニチャについて説明します。

 
interface Macro {
 
//---------------------------------------------------------------
// Issue a Macro Command XML document
//---------------------------------------------------------------
void execute(in string request,
in string key,
out string reply)
raises(CadExceptions);
 
}; // end Macro
 

Request の形式

次の例は、「マクロの定義」で例として定義した CTXG_NUMBERS の実行を要求するマクロ XML Request ドキュメントを示しています。追加のページング パラメータが付加されています。このパラメータは、単一の応答で返されるデータの量を制限します。大きな XML ドキュメントは、インターフェイスでエラーになります。現在のデフォルト制限値は、1 要求あたり 500 レコードと定義されています。

 
<Request Noun="CTXG_NUMBERS" Verb="show">
<Entry Key=" subscriber.ctxg_id" Value="rcdn_grp"/>
<Entry Key="limit" Value="1"/>
</Request>
 

Reply の形式

XML Reply ドキュメントの例を次に示します。この応答は、「Request の形式」の項にある例に基づいています。

 
<Reply id="Reply">
<Status>true</Status>
<Reason>Success: Entry 1 of 5002 returned.</Reason>
<Size>1</Size>
<AbsoluteSize>5002</AbsoluteSize>
<StartRow>1</StartRow>
<DataTable>
<Row id="0">
<Column id="NDC">601</Column>
<Column id="EC">227</Column>
<Column id="DN">1013</Column>
<Column id="CTXG_ID">rcdn_grp</Column>
</Row>
</DataTable>
</Reply>

操作

この項では、Cisco BTS 10200 マクロ コマンドによって加えられる操作ユーザ インターフェイスへの変更について説明します。マクロ コマンドの実行に対しては、標準的なページング パラメータを使用できます。これらは大きなデータ セットに適用されます。

追加コマンドのためのオペレータ インターフェイスを使用して、Cisco BTS 10200 ソフトスイッチのマクロ コマンドを管理できます。これらのコマンドは CLI インターフェイスから使用できます。また、これらの同じコマンドを CORBA および一括プロビジョニング インターフェイスから使用することもできます。

生成可能なユーザ コマンドを 表1-1 に示します。この表の [R] は、必須であることを表します。これらは、noun(id)とパラメータのさまざまな組み合せによるユーザ定義コマンドです。

 

表1-1 ユーザ定義のマクロ コマンド

noun
verb
オプション
説明

macro

add

id [R]

マクロの識別子。この識別子は 1 ~ 79 文字で指定できます。他のどの ID とも重複しないようにする必要があります。

macro

add

parameters [R]

マクロ実行の結果として返される実データのカンマ区切りリスト。

macro

add

rules [R]

マクロでのデータの表示基準。

macro

change

id [R]

マクロの識別子。

macro

change

parameters

マクロ実行の結果として返される実データのカンマ区切りリスト。

macro

change

rules

マクロでのデータの表示基準。

macro

show

id [R]

表示されるマクロを定義します。

macro

delete

id [R]

マクロの識別子。

cadexception

返される可能性のある基本的な cadexception は、次のとおりです。サンプル コードの中で与えられている番号は、説明に含まれているテキストを指しています。サンプル コードを使用すると、このテキストが返されます。推奨される対処については、必要に応じて「トラブルシューティング」 cadexceptionの項を参照してください。

エラー メッセージ No Error

説明 0 はエラーではないため、これはプレースホルダです。

public static final int EM_NONE=0;

エラー メッセージ CIS Error

説明 このエラーは、ORB の相互動作や、その他の実行時例外に関係している可能性のある内部処理エラーに対して使用されます。

public static final int EM_ERROR=1;

エラー メッセージ CIS No Data

説明 このエラーは、 show コマンドからデータが何も返されなかったことを示します。これは、実際にはエラーではない可能性があります。例外がスローされるのは、NULL オブジェクトを返すよりも明確なためです。

public static final int EM_NODATA=2;

エラー メッセージ User Security Error

説明 ユーザ セキュリティに障害が発見されました。これは、無効なユーザ名またはパスワードによるログインが原因になった可能性があります。また、ユーザ ID の検証に失敗したセキュリティ システムの内部エラーが原因で発生した可能性もあります。

public static final int EM_USERSEC=5;

エラー メッセージ Permission Error

説明 コマンドの実行が試みられましたが、そのコマンドの認可テストに合格しませんでした。ユーザは、このコマンドの実行権限を持っていません。

public static final int EM_PERMISSION=6;

エラー メッセージ Error Message: Block Error

説明 スイッチに対するすべてのプロビジョニングがブロックされました。コマンドは完全にウェルフォームドであり、接続はまだ有効です。これは、単に BTS 10200 がメンテナンス モードになっていることを示します。

public static final int EM_BLOCK=7;

エラー メッセージ Linkage Error

説明 リンケージに失敗しました。

public static final int EM_LINKAGE=10;

エラー メッセージ Exception In Initializer Error

説明 このメソッドによって実行された初期化が失敗しました。

public static final int EM_INIT=11;

エラー メッセージ Class Not Found Exception

説明 クラスが見つかりません。

public static final int EM_NOTFOUND=12;

エラー メッセージ Illegal Access Exception

説明 クラスまたはイニシャライザがアクセス不能です。

public static final int EM_ACCESS=13;

エラー メッセージ Instantiation Exception

説明 クラスが、抽象クラス、インターフェイス、配列クラス、基本タイプ、または void を表しています。または、インスタンス化が他の何らかの理由で失敗しています。

public static final int EM_INSTANCE=14;

エラー メッセージ Security Exception

説明 新しいインスタンスを作成する権限がありません。

public static final int EM_SECURITY=15;

エラー メッセージ Invalid Request Exception

説明 要求が有効でないか、初期化できません。

public static final int EM_REQUEST=16;

エラー メッセージ Invalid Noun Exception

説明 コマンドの noun が見つからないか無効です。

public static final int EM_NOUN=17;

エラー メッセージ Invalid Verb Exception

説明 コマンドの verb が見つからないか無効です。

public static final int EM_VERB=18;

エラー メッセージ SQL Exception

説明 制約に違反している場合、この他にテーブル競合がある場合、リソースに問題がある場合、またはこの他の何らかの Oracle 関連の原因がある場合は、データベースにアクセスできません。

public static final int EM_DATABASE=19;

エラー メッセージ Invalid Value Exception

説明 パラメータ値が、テキスト長、ピックリストなどの有効な範囲を超えたか、他の何らかの制約事項に違反しました。

public static final int EM_VALUE=20;

エラー メッセージ Invalid Key Exception

説明 一部のデータ値の記述に、無効なキーまたはトークンが使用されました。

public static final int EM_KEY=21;

エラー メッセージ Missing Parameter Exception

説明 1 つまたはそれ以上の必須パラメータが、コマンド パラメータ データに含まれていませんでした。

public static final int EM_PARAM=22;