IBM Lotus Enterprise Solution Builder (ESB) 3.x 移行ガイド

IBM Lotus Enterprise Solution Builder (ESB) 3.x
移行ガイド
目次
ESB の概要........................................................................................................................... 3
ESB の機能 .....................................................................................................................................3
移行の必要性について...................................................................................................................5
移行の計画 ......................................................................................................................................5
移行の方法 ......................................................................................................................................6
移行のプロセス ..............................................................................................................................7
移行の制限事項 ..............................................................................................................................8
サーバーコードの Lotus Domino への移行 .......................................................................... 9
Lotus Domino サーバーの構成 .....................................................................................................9
新規 Web サービスの作成 ...........................................................................................................9
移行 ................................................................................................................................................10
Visual Basic 6 クライアントコードの移行 .......................................................................... 17
概要 ................................................................................................................................................17
MSSOAP.SoapClient30 クラスを使用してクライアントプログラムを移行する.................17
.NET フレームワークを使用してクライアントプログラムを移行する ..............................19
Lotus Notes クライアントコードの移行.............................................................................. 20
概要 ................................................................................................................................................20
MSSOAP.SoapClient30 クラスを使用したクライアントプログラムの移行.........................20
Java と LS2J を使用してクライアントプログラムを移行する............................................22
LSX リファレンス.............................................................................................................. 24
LsDataStore クラス.......................................................................................................................24
LsSharedStore クラス ...................................................................................................................32
ESB 移行テンプレート ...............................................................................................................39
SsList クラス ................................................................................................................................40
ESB の概要
Lotus Enterprise Solution Builder (ESB) には、統合開発環境 (IDE) と実行時環境が備わっており、洗練され
た大規模なエンタープライズアプリケーションの開発とデプロイに LotusScript を使用できます。ESB ソ
リューションは、あらゆる業務活動に対応しており、すべてのエンタープライズシステム、またはアプリ
ケーションへのアクセスに使用できます。
IDE の高度な機能を使用することにより、Lotus Domino アプリケーション、既存のリレーショナルデータ
ベース、および企業資源計画 (ERP) などのアプリケーションシステムを統合した 3 層アプリケーション
を開発して、エンタープライズシステムをホストできます。ESB ソリューションの統合に要する開発サイ
クルは比較的短期間です。統合により強化された ESB 実行時環境では ESB アプリケーションのパフォー
マンスが向上するという利点があります。
ESB には以下のような特徴があります。
ESB の機能
ESB には以下の機能があります。
z
拡張された実行時環境
ESB には、複数のクライアントからの要求を同時に処理するマルチスレッド処理に対応する、拡張さ
れた実行時環境が用意されています。受注、在庫管理、予約、会計など、外部データソースにアクセ
スするあらゆる業務アプリケーションを開発したり、実行したりできます。この環境はスレッドプー
リング機能にも対応しています。スレッドプーリング機能によりクライアントからの要求に迅速に応
答できます。
ESB 実行時環境では、Lotus Domino を経由する代わりに、分散オブジェクト処理の基本技術である
CORBA/IIOP と、Microsoft DCOM (Windows NT バージョン) を使用して、クライアントからの要求
を直接管理できます。したがって、Lotus Notes ベースのクライアントと Web ベースのクライアント
では、バックグラウンドで実行されている処理を意識することなく、リアルタイムにアプリケーショ
ンを実行できます。
z
統合開発環境 (IDE)
ESB には、複合文書インターフェース (Multiple Document Interface つまり MDI) への対応、プロジ
ェクトブラウザ、およびクラス作成ツールなどの機能に加え、Lotus Notes 環境で使用するサーバーア
プリケーションを IDE で開発するための拡張環境があります。この環境では、複数のソースファイ
ルで構成された作業アプリケーションも開発できます。これにより、デプロイ可能で本格的な作業ア
プリケーションを効率的に、ごく短期間で開発できます。さらに、新規のオリジナル ESB クラスが
追加され、サポートされています。
z
さまざまなクライアントのサポート
ESB ではさまざまなクライアントをサポートしています。各 Web クライアントおよび Lotus Notes
クライアントは同じように扱われるため、クライアントのタイプによる違いを考慮することなくサー
バー上の業務アプリケーションを開発および実行できます。
ESB では、Visual Basic などオブジェクトのリンクと埋め込み (DCOM) 自動化に対応したクライア
ントにも対応しています。アプリケーションプログラムの業務ロジックは ESB サーバーで実行され
るため、ESB 外部データソースにアクセスするためのプログラムをクライアントマシンにインストー
ルする必要はありません。
z
LotusScript のサポート
ESB でサポートする LotusScript は、クロスプラットフォームの要件を満たす、オブジェクト指向の
インタープリター言語です。LotusScript は、Lotus Notes および他の Lotus アプリケーションで既に
使われているため、新しいプログラミング言語を学習する必要はありません。LotusScript の使用経験
があるか、スクリプト関係のスキルがあれば、ESB でプログラムを短時間で、容易に開発できます。
z
バックエンドへの容易なアクセス
Lotus では、エンタープライズデータと電子商取引アプリケーションにアクセスして統合する、コネ
クタ製品ファミリーを提供します。Lotus Domino Standard Connector は Lotus Domino および Lotus
Enterprise Integrator (LEI) に含まれています。DB2、Oracle、Sybase、OLEDB、ODBC、EDA/SQL、テ
キストおよびフラットファイルシステムへのアクセスに使用されます。Lotus Domino Standard
Connector は、ESB にも含まれており、DB2、Oracle、Sybase、および ODBC へのアクセスに使用さ
れます。
Lotus Domino Premium Connector は別売です。MQSeries 用、CICS 用、および開発中の XML 用のコ
ネクタを使用して、SAP、R/3、PeopleSoft V7.0、V7.5、各種 Oracle アプリケーション、および
J.D.Edwards にアクセスできます。他の Lotus Software eXtension (LSX) グループを使用することもで
きますが、安全にマルチスレッドで使用できるように設計されている LSX に限ります。
z
Lotus Domino サーバーとのロードバランシング
ESB を Lotus Domino と組み合わせて使用すると、ESB への外部リソースと連携する LotusScript サ
ーバーエージェントの負荷を軽減できます。これにより Lotus Domino サーバーの負荷を大幅に削減
できます。
移行の必要性について
z
ESB のサービス終了 (EOS) について
IBM ソフトウェアサポートのライフサイクルポリシーでは、IBMプログラムのご使用条件 (IPLA) に
基づいて使用許諾された IBM ソフトウェアのサポートを提供する期間を指定しています。このサポ
ート期間が過ぎると、そのソフトウェアのサービスは終了したとみなされます。ESB ソフトウェア製
品のサービス終了については次の Web サイトを参照してください。
http://www.ibm.com/software/info/supportlifecycle/
z
なぜ移行が必要なのでしょうか
アプリケーションの移行は必須です。業務要件の変化に伴い、アプリケーションに新規機能が追加さ
れます。性能要件の変化に伴い、ハードウェアの追加または既存のハードウェアの再構成が行われま
す。新しいテクノロジーが開発されると、このテクノロジーを使用するようにアプリケーションが構
成されます。
ESB は CORBA をベースとしたシステムのため、ESB を使用して構造化されたアプリケーションは
以前のアーキテクチャーに基づくことになります。新しいテクノロジーに基づいて新しいアプリケー
ションが開発されたときに既存の ESB アプリケーションが移行済みである場合、アプリケーション
の結合力が向上し、新しいアプリケーションの開発が容易になります。
本書では、さまざまなシステム構成で ESB の移行を計画および実行するときの考慮事項について説明し
ます。
移行の計画
移行を計画する場合は、以下の点を考慮してください。
•
アプリケーションプログラムの移行コスト。移行コストは、移行方針および方法により変化しま
す。
•
ハードウェア能力計画。必要な性能は、移行方針および方法により変化します。
•
移行の効果 (ユーザビリティー)。移行がシステム性能にどのように影響するのかを考慮します。
•
管理者教育。移行によりシステムのユーザビリティーに影響する場合があります。
移行の方法
本書では、システム構成を 2 つのケースに分けて説明します。1 つ目は、クライアントアプリケーション
で Visual Basic または Lotus Notes を使用しているケースです。2 つ目はクライアントが Web ブラウザ
のケースです。
次の図は、クライアントアプリケーションで Visual Basic または Lotus Notes を使用している場合の ESB
アプリケーションのアーキテクチャーを示します。この図では、クライアントアプリケーションと ESB ア
プリケーションが移行対象です。
クライアントアプリケーション
(Lotus Notes または
Visual Basic 6)
CORBA/IIOP
ESB アプリケーション
バックエンドの
(LotusScript で記述)
サービス
ESB
(MQ、DB2 など)
次の図は、クライアントアプリケーションが Web ブラウザの場合の ESB アプリケーションのアーキテク
チャーを示します。この図では ESB アプリケーションが移行対象です。
クライアント
アプリケーション
HTTP
WAS
(ブラウザ)
CORBA/IIOP
ESB アプリケーション
バックエンドの
(LotusScript で記述)
サービス
ESB
(MQ、DB2 など)
ESB を使用するシステムに適用できる移行方針は複数あります。Lotus Domino ベースへの移行、
WebSphere Application Server (WAS) ベースへの移行などです。いずれの方法にも、移行コストや移行後の
システムの耐久期間に影響する一長一短があります。本書では、ESB 上で作成された多数のサーバーアプ
リケーションのリソースを再利用できるLotus Domino ベースへの移行計画を中心に説明します。
Lotus Domino ベースへの移行では、2 種類のクライアントタイプを仮定します。
•
Visual Basic + ESB から Visual Basic + Lotus Domino へ
•
Lotus Notes + ESB から Lotus Notes + Lotus Domino へ
以降では、これらの移行方法それぞれについて説明します。
例外が存在する場合がありますので注意してください。Web ブラウザから WAS 経由で ESB を使用して
いる場合は WAS ベースへの移行をお勧めします。このケースでは、特別なクライアントアプリケーショ
ンを使用していないため、移行用のアプリケーションを別途作成するためのコストがかかります。また、
既に WAS を使用しているため、顧客が WAS ベースのアプリケーションに慣れていることも想定されま
す。
高性能が必要とされる場合にも WAS ベースへの移行をお勧めします。一般に、高性能を要するミッショ
ンクリティカルなタスクでは、バックエンドアプリケーション開発のベースとして WAS を使用すること
をお勧めします。WAS ベースへの移行は、そのようなシステムに適します。
Lotus Domino ベースへの移行には、以下のような制限事項がありますが、Lotus Domino ベースへ移行す
ることをお勧めします。Lotus Domino ベースへ移行しない場合は WAS ベースへの移行をお勧めします。
移行のプロセス
手順の概要
1.
移行を計画する
2.
Lotus Domino サーバーを起動する
3.
Domino データベースの移行ターゲットを作成する
4.
サーバープログラムを移行する
5.
クライアントプログラムを変更する
6.
サーバーおよびクライアント間の通信テストを実行する
7.
テスト結果に応じてプログラムを変更する
移行の制限事項
ESB と Lotus Domino の違いから生じる、Lotus Domino ベースへの移行時の制限事項を以下に示します。
1. スケーラビリティー
ESB は数百のサーバープロセスを同時に実行するよう設計されています。Lotus Domino Web サ
ービスではパフォーマンスが低下します。ESB では、プロジェクトをメモリに読み込んでから
ユーザーアプリケーションプログラムが実行されます。Lotus Domino Web Serviceは、起動するた
びにロードされて実行されます。このパフォーマンス低下について ESB の場合と比較検討する
必要があります。
ESB にはスレッドプーリング、スレッド数の制限などスケーラビリティーを制御するいくつか
の機能がありますが、Lotus Domino にはありません。
2. モニター
ESB ランタイムには、ログ出力、オブジェクト数、スレッド数、メソッド呼び出し数など、サ
ーバーアプリケーションの状況をモニターするツールが含まれています。管理者がアプリケーシ
ョンを開始または停止することもできます。ESB を使用しているお客様の場合は、システムを
管理するためにアプリケーションの状況をモニターする手段が必要になります。
3. 開発環境
ESB には、リモート開発や、マルチスレッド対応のデバッグなどの機能を提供する統合開発環
境 (IDE) があります。サーバーサイドのアプリケーションを開発するにはこれらの機能が必要
ですが Lotus Domino Designer には存在しません。
4. ロギング
ESB には Lotus Domino よりも高度なロギング機能があります。Lotus Domino のプリント文で
は、コンソールと logs.nsf にのみメッセージが書き込まれます。ESB の場合は、ファイル、Lotus
Notes データベース、またはサーバーログに対してログを出力できます。
5. プロジェクトの形式
ESB のプロジェクトの形式は Lotus Domino での形式 (NSF 形式) と異なります。ESB プロジ
ェクトは、1 つの LSP ファイルと複数の LSS ファイルで構成されます。LSP ファイルにはプ
ロジェクトに関する情報が、LSS ファイルにはソースコードが含まれています。顧客によっては
ESB プロジェクト形式への依存度の高い ESB プロジェクトを含むシステムを構築しているこ
とがあります。
サーバーコードの Lotus Domino への移行
このセクションでは、ESB ベースのサーバーアプリケーションを Lotus Domino 7 ベースに移行する手順
を説明します。このセクションでは次の内容を説明します。
•
ESB サーバーアプリケーションの移行シナリオ
•
Lotus Domino への新規 Web サービスの作成
•
ESB アプリケーションの Lotus Domino への移行
ESB アプリケーションを移行する場合は、基本的に、Lotus Domino 上の Web サービスとしてサーバーア
プリケーションを実装します。Web サービスは Lotus Domino 7 の新機能です。Web サービスにより
LotusScript をリモートから公開できます。
Lotus Domino サーバーの構成
セキュリティ上の理由から、Lotus Domino サーバーでは、Web サービスを実行する許可を Lotus Notes ユ
ーザーアカウントに自動的に与えることはありません。Web サービスの作成と実行を行う前に、Web サ
ービスを実行できる Lotus Notes ID を指定する必要があります。
1.
Web サービスの実行権限を与える Lotus Notes ユーザーアカウントを 1 つ以上選択します。
2.
Lotus Domino サーバーが実行されているコンピュータで Lotus Domino Administrator を起動しま
す。
3.
Lotus Domino Administrator の [設定] タブを選択します。
4.
ウィンドウの左側にあるドロップダウンリストから [サーバー] 内の [現在のサーバー文書] を
選択します。
5.
[セキュリティ] タブを選択します。
6. [制限付き LotusScript/Java エージェントの実行] フィールドに手順 1 で選択した Lotus Notes
ID を入力します。任意のユーザーの権限で Web サービスを実行する場合は、このフィールドに
* を入力します。プログラム可能な制限の詳細については、Lotus Domino Administrator ヘルプの
「セキュリティ」トピックを参照してください。
7.
[保存して閉じる] ボタンをクリックして、Lotus Domino Administrator を終了します。
新規 Web サービスの作成
まず Web サービスを格納する新規データベースを作成します。
1.
Lotus Domino Designer を起動します。
2.
[ファイル] メニューの [データベース] - [新規] を選択します。
3.
データベースを格納する Lotus Domino サーバー名を入力します。[タイトル] フィールドにデー
タベース名を、[ファイル名] フィールドに NSF ファイル名を指定します。
4.
[OK] をクリックします。新規データベースが作成されます。
Lotus Domino Designer ヘルプの「データベースを作成する」トピックも参照してください。
次に、新規 Web サービスをこのデータベースに作成します。
1.
作成したデータベースを選択します。
2.
[共有コード] の [Web サービス] を選択します。
3.
[新規 Web サービス] をクリックすると、[Web サービス] ダイアログボックスが表示されます。
4.
[名前] フィールドに Web サービスの名前を入力し、ダイアログボックスを閉じます。
5.
[ファイル] メニューの [保存] を選択して、データベースを保存します。
Lotus Domino Designer ヘルプの「Web サービス」トピックも参照してください。
移行
サーバーコードの移行手順の概要を説明します。ESB IDE と Lotus Domino Designer の両方を起動して、
ESB IDE から Lotus Domino Designer にソースコードをコピーします。詳細については、後のセクション
を参照してください。
1.
通常のクラスを ESB ソースコードからスクリプトライブラリにコピーします
2.
グローバル関数とグローバルサブルーチンを ESB ソースコードから Lotus Domino データベー
スのスクリプトライブラリにコピーします
3.
各 LSServer クラスをスクリプトライブラリに移行します
4.
各公開クラスを Web サービスに移行します
ESB プロジェクトでグローバル変数を使用している場合は、次ページの「グローバル変数を LSServer ク
ラスにラップする」を参照してください。
スクリプトライブラリを作成する
元の ESB プロジェクトにあるグローバル関数と通常クラス定義を移行するには、スクリプトライブラリ
を作成しておく必要があります。
1.
[共有コード] - [スクリプトライブラリ] を選択します。
2.
[新規 LotusScript ライブラリ] ボタンをクリックします。スクリプトライブラリが新規作成さ
れます。
3.
[編集] メニューの [プロパティ] を選択します。[スクリプトライブラリ] プロパティにスクリプ
トライブラリの名前を入力して閉じます。
4.
[ファイル] メニューの [保存] を選択します。
グローバル変数を LSServer クラスにラップする
ESB プロジェクトでグローバル変数を使用している場合は、それらのグローバル変数を LSServer クラス
にラップしてから、前述の手順を行う必要があります。たとえば、「図: ESB グローバル変数」 の ESB ソ
ースコードを 「図: LSServer クラスにラップされたグローバル変数」 により置換します。
「図: グローバル変数の使用」、「図: LSServer クラス内のメンバー変数の使用」 などの変数宣言の変更
に合わせて、ソースコード内でグローバル変数を使用するいくつかの箇所を修正する必要があります。
「図: ESB グローバル変数の宣言」
Dim x As Integer
「図: LSServer クラスにラップされた ESB グローバル変数」
LsServer Class GlobalVariablesHolder
Private x As Integer
Public Sub setX(param1 as Integer)
x = param1
End Sub
Public Function getX() As Integer
getX = x
End Sub
End Class
「図: グローバル変数の使用」
x = 100
「図: LSServer クラス内のメンバー変数の使用」
Dim holder As GlobalVariablesHolder
Set holder = Bind GlobalVariablesHolder("")
holder.setX(100)
Call holder.GetX()
通常クラスを移行する
通常クラスとは、LSServer クラスでも公開クラスでもないクラスです。通常クラスの定義は、簡単に Web
サービスに移行できます。必要な作業は ESB ソースコードから Web サービスのスクリプトライブラリへ
のコピーのみです。クラス定義を配置するスクリプトライブラリが未作成の場合は、前述の「スクリプト
ライブラリを作成する」を参照してください。
グローバル関数とグローバルサブルーチンを移行する
グローバル関数とグローバルサブルーチンは簡単に Web サービスに移行できます。ESB ソースコードか
ら Web サービス内のスクリプトライブラリにコピーするのみです。クラス定義を配置するスクリプトラ
イブラリが未作成の場合は、前述の「スクリプトライブラリを作成する」を参照してください。
LSServer クラスを移行する
クラス定義を配置するスクリプトライブラリが未作成の場合は、前述の「通常クラスを移行する」を参照
してください。スレッド間で共有する値が存在する場合は、SharedStore LSX を使用できます。ただし、
DB ハンドルもポインタも保持できません。これらは共用できず、これらでは、オリジナルのコードを使
用するためです。
移行後の LSServer クラスでは、クラスの取得ごとに新しい値が割り当てられるため、その値がそのまま
使用されます。移行後の LSServer クラスの作成時には、新規サブルーチンにより新しい値が設定されま
す。接続プールは保持されず、DB ハンドルが毎回作成されますが、このハンドルはこのシステムを正し
く通過します。移行済みの LSServer クラスを呼び出すには、次のように置換します。
オリジナル
Dim myobj as myLsServer
Set myobj = Bind("")
移行後
Dim myobj as myLsServer
Set myobj = new myLsServer
公開クラスを移行する
Web サービスと公開クラスとの間には、次のような関係があります。
•
1 つの公開クラスが 1 つの Web サービスとして表されます。
•
公開クラスの名前は、Web サービスの PortType クラスに設定されます。
公開クラスの実装タイプにはステートフルタイプとステートレスタイプがあります。各タイプはユーザー
による LotusScript の実装方法により決まります。
ステートレスな公開クラスを移行する
ステートレスな公開クラスの場合は、公開クラスを Web サービスにコピーするのみです。Published キー
ワードを削除します。公開クラスの名前が、Web サービスの PortType クラスに設定されます。
ステートフルな公開クラスを移行する
ステートフルな公開クラスの移行には 3 種類のモデルがあります。
•
ESB でステートフルクラスをステートレスクラスに変更してから移行
•
デリゲーションモデル
•
ESB 移行 LSX クラスを使用しての移行
ESB でステートフルクラスをステートレスクラスに変更してから移行する
ESB で、複数の関数を 1 つの関数にパックして、ステートフル関数をステートレス関数に置換します。
この関数を Web サービスに移行します。
オリジナルのコード
<サーバーコード>
Published Class case2
Private n As Long
Sub Func1()
n = 10
End Sub
Function Func2(m As Long) As Long
Func2 = n + m
End Function
End Class
<クライアントコード>
myobj.Func1
rc = myobj.Func2(5)
移行後のコード
<サーバーコード>
Published Class case2
Private n As Long
Sub Func1()
n = 10
End Sub
Function Func2(m As Long) As Long
Func2 = n + m
End Function
Function Func3(m As Long) As Long
Func1
Func3 = Func2(m)
End Function
End Class
<クライアントコード>
rc = myobj.Func3(5)
デリゲーションモデル
基本的計画が関数として実装され、関数およびサブルーチンはそれを使用してクラスのオブジェクト
自体を戻り値として戻します。この移行方法は、クライアントからの接続に .NET フレームワークと
Java を使用している場合に適しています。
戻り値として自身のオブジェクトを返す関数としてサブルーチンが定義されます。
オリジナル
Published Class classA
Private member1 As Integer
Sub sub1(arg1 As Integer)
member1 = arg1
End Sub
End Class
移行後のコード
classB は Web サービスの PortType クラスとして設定されます。
Class classA
Public member1 As Integer
Sub sub1(arg1 As Integer)
member1 = arg1
End Sub
End Class
Class classB
Function func1(objA As classA, arg1 As Integer) As classA
objA.sub1(arg1)
Set func1 = objA
End Function
End Class
関数を移行するために、元のクラスが引数として追加され、関数の戻り値が引数に代入され、元のク
ラスのオブジェクトが関数の戻り値として戻されます。
オリジナル
Published Class classA
Private member1 As Integer
Function func1(arg1 As Integer) As Integer
member1 = arg1
func1 = member1 * 2
End Function
End Class
移行後のコード
classB は Web サービスの PortType クラスとして設定されます。
Class classA
Public member1 As Integer
Function func1(arg1 As Integer) As Integer
member1 = arg1
func1 = member1 * 2
End Function
End Class
Class classB
Function func1(objA As classA, arg1 As Integer, retval as INTEGER_HOLDER)
As classA
retval.value = objA.func1(arg1)
Set func1 = objA
End Function
ESB 移行 LSX クラスを使用して移行する
この移行方法では、LsDataStore LSX を使用して値を保持します。LsDataStore LSX では、指定の .nsf
データベースに値を一時的に保存します。Lotus Domino Designer ヘルプの「アプリケーションのセキ
ュリティ」を参照して、保存される値の安全性を確認してください。
LsDataStore LSX を利用することによる Web サービスの操作を制限する必要があります。不要な文
書は、DeleteDocumentCache エージェントを設定して削除します。
オリジナル
Published class Example
member1 as Long
Public Sub SetMember1(i as Long)
member1 = i
End Function
Public Function GetMember1 () as Long
GetMember1 = member1
End Function
End class
移行後のコード
Public class Example
member1 as Long
ds as LsDataStore
Sub New
Set ds = New LsDataSotre("servername","databasepath")
End Sub
Sub SetMember1(i as Long, token as String_Holder)
member1 = i
call ds.setToken(token.Value)
call ds.store("member1", member1)
token.Value = ds.getToken()
End Function
Function GetMember1(token as String_Holder) As Long
call ds.setToken(token.Value)
member1 = ds.restore("member1")
GetMember1 = member1
End Function
End class
Visual Basic 6 クライアントコードの移行
概要
このセクションでは、Visual Basic で記述されたクライアントコードを移行する方法を説明します。Web サ
ービスに変更済みのサーバーとの接続には、Microsoft SOAP Toolkit 3.0 を使用します。本書では、Microsoft
SOAP Toolkit 3.0 を主に使用する方法を説明します。Microsoft SOAP Toolkit 3.0 は次の場所にあります。
http://www.microsoft.com/downloads/details.aspx?familyid=c943c0dd-ceec-4088-9753-86f052ec8450&displaylang
=en
MSSOAP.SoapClient30 クラスを使用してクライアントプログラムを移行す
る
LotusScript と Microsoft Visual Basic の組み込み CreateObject 関数を使用して次のように SvClink クラス
オブジェクトを作成した場合、
Dim ORSObj As Variant
Set ORSObj = CreateObject("SvClink")
次のコードのように書き換えることができます。
Dim ORSObj As Variant
Set ORSObj = CreateObject("MSSOAP.SoapClient30")
MSSOAP.SoapClient30 クラスオブジェクトを削除する場合は、LotusScript で他のオブジェクトを削除する
場合と同様に、Nothing 定数を使用します。
Set ORSObj = Nothing
Web サービスに接続する
MSSOAP.SoapClient30 クラスオブジェクトを作成したら、MSSoapInit メンバー関数を使用して Web サー
ビスに接続できます。
ORSObj.MSSoapInit "http://myserver.mydomain.com/myDB.nsf/mywebService?WSDL"
メンバープロシージャーを呼び出す
Web サービスプログラムとクライアントプログラムは、移行後の公開クラスのメンバープロシージャーを
通じて互いに通信します。クライアントプログラムでは、ドット表記を使用してメンバープロシージャー
を呼び出します。
ORSObj.memberFunction
ここで、memberFunction は、実行するメンバープロシージャーの名前です。
オリジナル
Sub Click()
Dim ORSObj As Variant
Dim MyObj As Variant
Dim f As Single
Dim c As Single
Set ORSObj = CreateObject("SVCLink")
Set MyObj = ORSObj.CreateObject ("CFConv.ConvertClass, node= ServerName ")
f = MyObj.CtoF(10)
MsgBox f
c = MyObj.FtoC(10)
MsgBox c
Set MyObj = Nothing
End Sub
移行後のコード
Sub Click()
Dim MyObj As Variant
Dim f As Single
Dim c As Single
Set MyObj = CreateObject("MSSOAP.SoapClient30")
MyObj.mssoapinit "http://ServerName/CFConv.nsf/CFConv?WSDL"
f = MyObj.CtoF(10)
MsgBox f
c = MyObj.FtoC(10)
MsgBox c
Set MyObj = Nothing
End Sub
.NET フレームワークを使用してクライアントプログラムを移行する
.NET フレームワークを使用するには、Visual Basic 6 を Visual Basic .NET 以降に移行する必要があります。
Visual Basic 2005 への移行をお勧めします。
移行手順
1. Web 参照の追加
2. Web サービスの新規のサービスクラス。
オリジナル
Sub Click(ByVal sender As System.Object, ByVal e As SystemEventArgs) Handles
Button1.Click
Dim ORSObj As Variant
Dim MyObj As Variant
Dim f As Single
Dim c As Single
Set ORSObj = CreateObject("SVCLink")
Set MyObj = ORSObj.CreateObject ("CFConv.ConvertClass, node= ServerName ")
f = MyObj.CtoF(10)
MsgBox f
c = MyObj.FtoC(10)
MsgBox c
Set MyObj
移行後のコード
Sub Click(ByVal sender As System.Object, ByVal e As SystemEventArgs) Handles
Button1.Click
Dim MyObj As New ServerName.CFConvService
Dim f As Single
Dim c As Single
f = MyObj.CtoF(10)
MsgBox f
c = MyObj.FtoC(10)
MsgBox c
Set MyObj = Nothing
End Sub
Lotus Notes クライアントコードの移行
概要
このセクションでは、Visual Basic で記述されたクライアントコードを移行する方法を説明します。Web サ
ービスに変更済みのサーバーとの接続には、Microsoft SOAP Toolkit 3.0 を使用します。本書では、Microsoft
SOAP Toolkit 3.0 を主に使用する方法を説明します。Microsoft SOAP Toolkit 3.0 は次の場所にあります。
http://www.microsoft.com/downloads/details.aspx?familyid=c943c0dd-ceec-4088-9753-86f052ec8450&displaylang
=en
MSSOAP.SoapClient30 クラスを使用したクライアントプログラムの移行
LotusScript と Microsoft Visual Basic の組み込み CreateObject 関数を使用して次のように SvClink クラス
オブジェクトを作成した場合、
Dim ORSObj As SSClink
Set ORSObj = New SSClink
次のコードのように書き換えることができます。
Dim ORSObj As Variant
Set ORSObj = CreateObject("MSSOAP.SoapClient30")
MSSOAP.SoapClient30 クラスオブジェクトを削除する場合は、LotusScript で他のオブジェクトを削除する
場合と同様に、Nothing 定数を使用します。
Set ORSObj = Nothing
Web サービスに接続する
MSSOAP.SoapClient30 クラスオブジェクトを作成すると、MSSoapInit メンバー関数を使用して Web サー
ビスに接続できます。
ORSObj.MSSoapInit "http://myserver.mydomain.com/myDB.nsf/mywebService?WSDL"
メンバープロシージャーを呼び出す
Web サービスプログラムとクライアントプログラムは、移行後の公開クラスのメンバープロシージャーを
通じて互いに通信します。クライアントプログラムでは、ドット表記を使用してメンバープロシージャー
を呼び出します。
ORSObj.memberFunction
ここで、memberFunction は、実行するメンバープロシージャーの名前です。
オリジナル
Sub Click(Source As Button)
Dim ORSObj As SsClink
Dim MyObj As Variant
Dim f As Single
Dim c As Single
Set ORSObj = New SsClink
Set MyObj = ORSObj.CreateObject ("CFConv.ConvertClass, node= ServerName ")
f = MyObj.CtoF(10)
MsgBox f
c = MyObj.FtoC(10)
MsgBox c
Set MyObj = Nothing
End Sub
移行後のコード
Sub Click(Source As Button)
Dim MyObj As Variant
Dim f As Single
Dim c As Single
Set MyObj = CreateObject("MSSOAP.SoapClient30")
MyObj.mssoapinit "http://ServerName/CFConv.nsf/CFConv?WSDL"
f = MyObj.CtoF(10)
MsgBox f
c = MyObj.FtoC(10)
MsgBox c
Set MyObj = Nothing
End Sub
Java と LS2J を使用してクライアントプログラムを移行する
Java と LS2J を使用して移行することもできます。移行手順は次のとおりです。
1. WSDL2Java を使用して Java プロキシを作成する
2. Java クラスをラップするServiceLocator を作成する
3. ラップした Java クラスを LS2J から呼び出す
オリジナル
Sub Click(Source As Button)
Dim ORSObj As SsClink
Dim MyObj As Variant
Dim f As Single
Dim c As Single
Set ORSObj = New SsClink
Set MyObj = ORSObj.CreateObject ("CFConv.ConvertClass, node= ServerName ")
f = MyObj.CtoF(10)
MsgBox f
c = MyObj.FtoC(10)
MsgBox c
Set MyObj = Nothing
End Sub
移行後のコード
Sub Click(Source As Button)
Dim mySession As JavaSession
Dim myClass As JavaClass
Dim MyObj As JavaObject
Dim f As Single
Dim c As Single
Set mySession = New JavaSession
Set myClass = mySession.GetClass("myCFConv")
Set MyObj = myClass.CreateObject()
f = MyObj.CtoF(10)
MsgBox f
c = MyObj.FtoC(10)
MsgBox c
Set MyObj = Nothing
End Sub
<Java コード>
Public class myCFConv {
public float CTOF(float c)
{
try {
java.net.URL endpoint = new
java.net.URL("http://myserver:80/myDB.nsf/CFConv?OpenWebService");
ConvertClass port = new
ConvertClassServiceLocator()getDomino(endpoint);
return port.CTOF(c);
} catch (java.rmi.RemoteException re) {
//エラーコード
} catch (Exception e) {
//エラーコード
}
return 0;
}
public float FTOC(float f)
{
try {
java.net.URL endpoint = new
java.net.URL("http://myserver:80/myDB.nsf/CFConv?OpenWebService");
ConvertClass port = new
ConvertClassServiceLocator()getDomino(endpoint);
return port.FTOC(f);
} catch (java.rmi.RemoteException re) {
//エラーコード
} catch (Exception e) {
//エラーコード
}
return 0;
}
}
LSX リファレンス
LsDataStore クラス
LsDataStore クラスは、変数やオブジェクトを NSF で保持する機能を提供します。この機能によ
り、Web サービスの関数呼び出し以降までメンバー変数を保持できます。この機能により実質的
にステートフルな SOAP が実現されます。
構文
構文 1
Dim myStore As New LsDataStore(Server, dbfile)
構文 2
Dim myStore As LsDataStore
Set myStore = New LsDataStore(Server, dbfile)
要素
myStore
LsDataStore クラスオブジェクトへの参照を含む変数です。
Server
文字列。データベースが配置されているサーバーの名前です。現在のコンピュータのデー
タベースを指定する場合は空の文字列 ("") を使用します。空の文字列は、スクリプトがワ
ークステーションで実行されるときはローカルデータベースを示し、スクリプトがサーバ
ーで実行されるときはサーバー上のデータベースを示します。
dbfile
文字列。Lotus Notes または Lotus Domino のデータディレクトリにあるデータベースのパ
スおよびファイル名です。データベースを後で開く場合は、dbfile$ と server$ の両方に空
の文字列を指定します。データベースが Lotus Notes データディレクトリに存在しない場
合は、絶対パス名を使用してください。
プロパティ
UniversalID、FileName、FilePath
メンバー関数
Restore
メンバーサブルーチン
Store
イベント
LsDataStoreError
使用方法
•
LsDataStore クラスオブジェクトを 1 つ作成します。
•
Store サブルーチンまたは StoreObject サブルーチンを使用して、データを登録します。登
録時には、すべてのデータが SOAP の複合型と同様に XML にシリアライズされます。
•
Restore または RestoreObject を使用するとデータの値を取得できます。
•
UnivarsalID を使用するか、登録されていない名前を使用してデータ値を参照しようとする
と、実行時エラーおよび DataStoreError イベントが発生します。実行時エラーの発生時に
は、次のエラーコードが示されます。
LSI_RTE_AdtPropertyError
218
プロパティのエラー (Error in a property)
LSI_RTE_AdtMethodError
219
メソッドのエラー (Error in a method)
•
メモリは自動管理されます。
•
オブジェクト参照変数がスコープ外になるとメモリは自動的に解放されます。
•
文書は自動的には削除されません。Remove サブルーチンを使用するか、クリーンアップ
エージェントを設定する必要があります。
例
この例では、LsDataStore クラスオブジェクトを 1 つ作成し、データの格納とリストアを行い
ます。
Class myWebService
Private myDataStore As LsDataStore
Private myInt As Integer
Sub New()
Set myDataStore = New LsDataStore("", "myData.nsf")
End Sub
Public Sub mySub1(unid as String_Holder)
On Event DataStoreError From myDataStore Call DataStoreError
myInt = 10
myDataStore.UnivarsalID = unid.value
Call myDataStore.Store("myInt", myInt)
unid.value = myDataStore.UnivarsalID
End Sub
Public Sub mySub2(unid as String_Holder)
On Event DataStoreError From myDataStore Call DataStoreError
myDataStore.UnivarsalID = unid.value
myInt = myDataStore.Restore("myInt")
End Sub
End Class
参照
Store メンバーサブルーチン、Restore メンバー関数、UnivarsalID プロパティ (LsDataStore ク
ラス)、FileName プロパティ (LsDataStore クラス)、FilePath プロパティ (LsDataStore クラス)、
DataStoreError イベント
FileName プロパティ
読み取り専用です。拡張子を含み、パスを含まないデータベースの完全なファイル名です。
構文
myDataStore.FileName
要素
myDataStore
LsDataStore クラスオブジェクトへの参照を含む変数です。
戻り値
拡張子を含み、パスを含まないデータベースの完全なファイル名です。
例
この例では、データベースのファイル名が表示されます。
Dim myDataStore as New LsDataStore("", "myData.nsf")
Print myDataStore.FileName
参照
LsDataStore クラス
FilePath プロパティ
読み取り専用です。データベースのパスおよびファイル名です。ファイル名は NSF 拡張子を
含みます。
構文
myDataStore.FilePath
要素
myDataStore
LsDataStore クラスオブジェクトへの参照を含む変数です。
戻り値
データベースのパスおよびファイル名です。ファイル名は NSF 拡張子を含みます。
例
この例では、データベースのファイルパスが表示されます。
Dim myDataStore as New LsDataStore("", "myData.nsf")
Print myDataStore.FilePath
参照
LsDataStore クラス
UniversalID プロパティ
読み取り書き込み可能です。データベースの全複製内で文書を一意に識別するユニバーサル ID
です。ユニバーサル ID は、文字形式では、16 進数字 (0 から 9、A から F) を組み合わせた
32 文字で表されます。ユニバーサル ID をユニーク ID または UNID とも呼びます。
構文
myDataStore.UniversalID
要素
myDataStore
LsDataStore クラスオブジェクトへの参照を含む変数です。
戻り値
UniversalID です。
例
この例では、データベースのファイルパスが表示されます。
Dim myDataStore as New LsDataStore("", "myData.nsf")
myDataStore.UnivarsalID = unid
Call myDataStore.Store("myInt", myInt)
unid = myDataStore.UnivarsalID
参照
LsDataStore クラス
Store メンバーサブルーチン
このサブルーチンは LsDataStore クラスによって提供されます。LsDataStore クラスオブジェク
トに値 (値と名前の組み合わせ) を格納します。同じ名前が存在する場合は、その名前にあらか
じめ関連付けられている値が上書きされます。Store メンバーサブルーチンを使用して登録した
データは、名前で参照できます。UniversalID が NULL または "" の場合は、この UniversalID
が更新されます。
構文
myDataStore.Store(ItemName, Value)
要素
myDataStore
LsDataStore クラスオブジェクトへの参照を含む変数です。
ItemName
クラスオブジェクトに追加する名前です。
Value
クラスオブジェクトに追加する値です。
例
この例では、LsDataStore クラスオブジェクトを 1 つ作成し、Integer 型の値 1 つと Integer 配
列を格納します。
Dim myDataStore as New LsDataStore("", "myData.nsf")
Dim myInt as Integer
Dim myIntArray(2) as Integer
myInt=123
myIntArray(0)=10
myIntArray(1)=20
myIntArray(2)=30
Call myDataStore.Store("myInt", myInt)
Call myDataStore.Store("myIntArray", myIntArray)
参照
Restore メンバー関数、UniversalID プロパティ、LsDataStore クラス
Restore メンバー関数
この関数は LsDataStore クラスによって提供されます。指定した値名のデータを戻します。
構文
myDataStore.Restore(valuename)
要素
myDataStore
LsDataStore クラスオブジェクトへの参照を含む変数です。
valuename
取得するデータの値名です。
戻り値
Restore メンバー関数は、指定した値名に関連付けられたデータを Variant 型の値で戻します。
例
この例では、2 番目の位置に登録されたキーを取得します。
Dim myDataStore as New LsDataStore(Server, dbfile)
Dim myInt as Integer
Dim value As Variant
myInt=123
Call myDataStore.Store("myInt", myInt)
value = myDataStore.Restore("myInt")
参照
Store メンバーサブルーチン、UniversalID プロパティ、LsDataStore クラス
LsDataStoreError イベント
このイベントは LsDataStore クラスによって提供されます。このイベントは、LsDataStore クラ
スオブジェクトで実行時エラーが起こると発生します。
構文
On Event LsDataStoreError From myDataStore Call handleName
Sub handleName(source As LsDataStore, errno As Integer)
要素
myDataStore
LsDataStore クラスオブジェクトへの参照を含む変数です。
handleName
LsDataStoreError イベントが発生すると、イベント処理サブルーチンの名前を表す文字列
が設定されます。
source
イベントが発生した LsDataStore クラスオブジェクトへの参照を含む変数です。
errno
エラー番号です。
使用方法
このイベントを使用すると、LsDataStore クラスで発生した実行時エラーの詳細なエラー番号を
取得できます。エラー番号およびこれに関連するエラーメッセージは次のとおりです。
LSDATASTORE_ERR_INTERNAL
600
内部エラー (Internal error)
LSDATASTORE_ERR_DATATYPE
601
データタイプのエラー (Data type error)
LSDATASTORE_ERR_OVERFLOW
602
オーバーフロー (Overflow)
LSDATASTORE_ERR_DBOPEN
603
データベースが存在しないか開けない
(No database or cannot open)
LSDATASTORE_ERR_NOTFOUND
604
指定した値名のデータが存在しない
(No data for the specified value name)
LSDATASTORE_ERR_INVALID
605
指定した UniversalID のデータが存在しない
(No document for the specified UniversalID)
LSDATASTORE_ERR_REMOVE
606
文書を削除できない (cannot delete document)
参照
LsDataStore クラス
LsSharedStore クラス
LsSharedStore クラスは、変数やオブジェクトを NSF で保持する機能を提供します。この機能に
より、同じ LsSharedStore DB を使用するすべての関数とサブルーチンの間でデータを共用できま
す。この機能により実質的にステートフルな SOAP が実現されます。
構文
構文 1
Dim myStore As New LsSharedStore(Server, dbfile)
構文 2
Dim myStore As LsSharedStore
Set myStore = New LsSharedStore(Server, dbfile)
要素
myStore
LsSharedStore クラスオブジェクトへの参照を含む変数です。
Server
文字列。データベースが配置されているサーバーの名前です。現在のコンピュータのデー
タベースを指定する場合は空の文字列 ("") を使用します。空の文字列は、スクリプトがワ
ークステーションで実行されるときはローカルデータベースを示し、スクリプトがサーバ
ーで実行されるときはサーバー上のデータベースを示します。
dbfile
文字列。Lotus Notes または Lotus Domino のデータディレクトリにあるデータベースのパ
スおよびファイル名です。データベースを後で開く場合は、dbfile$ と server$ の両方に空
の文字列を指定します。データベースが Lotus Notes データディレクトリに存在しない場
合は、絶対パス名を使用してください。
プロパティ
FileName、FilePath
メンバー関数
Restore
メンバーサブルーチン
Store
イベント
LsSharedStoreError
使用方法
•
LsSharedStore クラスオブジェクトを 1 つ作成します。
•
Store サブルーチンまたは StoreObject サブルーチンを使用して、データを登録します。登
録時には、すべてのデータが SOAP の複合型と同様に XML にシリアライズされます。
•
Restore または RestoreObject を使用するとデータの値を取得できます。
•
登録されていない名前を使用してデータ値を参照しようとすると、実行時エラーおよび
SharedStoreError イベントが発生します。実行時エラーの発生時には、次のエラーコードが
示されます。
LSI_RTE_AdtPropertyError
218
プロパティのエラー (Error in a property)
LSI_RTE_AdtMethodError
219
メソッドのエラー (Error in a method)
•
メモリは自動管理されます。
•
オブジェクト参照変数がスコープ外になるとメモリは自動的に解放されます。
例
この例では、LsSharedStore クラスオブジェクトを 1 つ作成し、データの格納とリストアを行
います。
Class myWebService
Private mySharedStore As LsSharedStore
Private myInt As Integer
Sub New()
Set mySharedStore = New LsSharedStore("", "myData.nsf")
End Sub
Public Sub mySub1()
On Event SharedStoreError From mySharedStore Call
SharedStoreError
myInt = 10
Call mySharedStore.Store("myInt", myInt)
End Sub
Public Sub mySub2()
On Event SharedStoreError From mySharedStore Call
SharedStoreError
myInt = mySharedStore.Restore("myInt")
End Sub
End Class
参照
Store メンバーサブルーチン、Restore メンバー関数、FileName プロパティ (LsSharedStore ク
ラス)、FilePath プロパティ (LsSharedStore クラス)、SharedStoreError イベント
FileName プロパティ
読み取り専用です。拡張子を含み、パスを含まないデータベースの完全なファイル名です。
構文
mySharedStore.FileName
要素
mySharedStore
LsSharedStore クラスオブジェクトへの参照を含む変数です。
戻り値
拡張子を含み、パスを含まないデータベースの完全なファイル名です。
例
この例では、データベースのファイル名が表示されます。
Dim mySharedStore as New LsSharedStore("", "myData.nsf")
Print mySharedStore.FileName
参照
LsSharedStore クラス
FilePath プロパティ
読み取り専用です。データベースのパスおよびファイル名です。ファイル名は NSF 拡張子を
含みます。
構文
mySharedStore.FilePath
要素
mySharedStore
LsSharedStore クラスオブジェクトへの参照を含む変数です。
戻り値
データベースのパスおよびファイル名です。ファイル名は NSF 拡張子を含みます。
例
この例では、データベースのファイルパスが表示されます。
Dim mySharedStore as New LsSharedStore("", "myData.nsf")
Print mySharedStore.FilePath
参照
LsSharedStore クラス
Store メンバーサブルーチン
このサブルーチンは LsSharedStore クラスによって提供されます。LsSharedStore クラスオブジ
ェクトに値 (値と名前の組み合わせ) を格納します。同じ名前が存在する場合は、その名前にあ
らかじめ関連付けられている値が上書きされます。Store メンバーサブルーチンを使用して登録
したデータは、名前で参照できます。UniversalID が NULL または "" の場合は、この
UniversalID が更新されます。
構文
mySharedStore.Store(ItemName, Value)
要素
mySharedStore
LsSharedStore クラスオブジェクトへの参照を含む変数です。
ItemName
クラスオブジェクトに追加する名前です。
Value
クラスオブジェクトに追加する値です。
例
この例では、LsSharedStore クラスオブジェクトを 1 つ作成し、Integer 型の値 1 つと Integer
配列を格納します。
Dim mySharedStore as New LsSharedStore("", "myData.nsf")
Dim myInt as Integer
Dim myIntArray(2) as Integer
myInt=123
myIntArray(0)=10
myIntArray(1)=20
myIntArray(2)=30
Call mySharedStore.Store("myInt", myInt)
Call mySharedStore.Store("myIntArray", myIntArray)
参照
Restore メンバー関数、UniversalID プロパティ、LsSharedStore クラス
Restore メンバー関数
この関数は LsSharedStore クラスによって提供されます。指定した値名のデータを戻します。
構文
mySharedStore.Restore(valuename)
要素
mySharedStore
LsSharedStore クラスオブジェクトへの参照を含む変数です。
valuename
取得するデータの値名です。
戻り値
Restore メンバー関数は、指定した値名に関連付けられたデータを Variant 型の値で戻します。
例
この例では、2 番目の位置に登録されたキーを取得します。
Dim mySharedStore as New SsList
Dim myInt as Integer
Dim value As Variant
myInt=123
Call mySharedStore.Store("myInt", myInt)
value = mySharedStore.Restore("myInt")
参照
Store メンバーサブルーチン、UniversalID プロパティ、LsSharedStore クラス
LsSharedStoreError イベント
このイベントは LsSharedStore クラスによって提供されます。このイベントは、LsSharedStore ク
ラスオブジェクトで実行時エラーが起こると発生します。
構文
On Event LsSharedStoreError From mySharedStore Call handleName
Sub handleName(source As LsSharedStore, errno As Integer)
要素
mySharedStore
LsSharedStore クラスオブジェクトへの参照を含む変数です。
handleName
LsSharedStoreError イベントが発生すると、イベント処理サブルーチンの名前を表す文字列
が設定されます。
source
イベントが発生した LsSharedStore クラスオブジェクトへの参照を含む変数です。
errno
エラー番号です。
使用方法
このイベントを使用すると、LsSharedStore クラスで発生した実行時エラーの詳細なエラー番号
を取得できます。エラー番号およびこれに関連するエラーメッセージは次のとおりです。
LSSHAREDSTORE_ERR_INTERNAL
600
内部エラー (Internal error)
LSSHAREDSTORE_ERR_DATATYPE
601
データタイプのエラー (Data type error)
LSSHAREDSTORE_ERR_OVERFLOW
602
オーバーフロー (Overflow)
LSSHAREDSTORE_ERR_DBOPEN
603
データベースが存在しないか開けない
(No database or cannot open)
LSSHAREDSTORE_ERR_NOTFOUND
604
指定した値名のデータが存在しない
(No data for the specified value name)
LSSHAREDSTORE_ERR_REMOVE
605
文書を削除できない (cannot delete
document)
参照
LsSharedStore クラス
ESB 移行テンプレート
ESB 移行テンプレートを使用すると、LsDataStore クラスを使用して作成した文書をクリーンア
ップできます。このテンプレートには、管理プロファイルとクリーンアップエージェントがあり
ます。LsDataStore クラスでは、ユーザーの要求に従って文書が新規作成されるため、クリーンア
ップエージェントがないとディスクスペースが満杯になる可能性があります。
使用方法
•
LsStore.NTF から LsStore データベースを作成します。
•
データベースを開き、[プロファイル] アクションボタンをクリックします。
•
[文書キャッシュのタイムアウト (Document Cash Time Out)] フィールドを設定します。
最後のアクセスから、[分] フィールドの値だけ経過した文書はエージェントにより削除さ
れます。
•
CleanUpDocument エージェントをスケジュールします。CleanUpDocument エージェントは、
LsDataStore クラスによって作成された文書を削除します。
•
例
•
[文書キャッシュのタイムアウト (Document Cash Time Out)] に 60 分を設定します。
•
[CleanUpDocument エージェントの実行 (Run CleanUpDocument agent)] に 1 時間ごとを設
定します。
•
1 時間アクセスのなかった文書が、CleanUpDocument エージェントにより削除されます。
SsList クラス
SsList タイプは LotusScript リストタイプのスーパーセットです。SsList タイプでは、キーと値
の組み合わせでデータを保持します。リストタイプと異なり、すべてのデータタイプをキーに使
用できます。キーに使用できるデータタイプを以下にリストします。Integer、Long、Single、Double、
Variable-length string、Fixed-length string、Currency。
次のようなデータタイプを値に使用できます。Integer、Long、Single、Double、Variable-length string、
Fixed-length string、Currency、empty、NULL、および Date/Time。
構文
構文 1
Dim myList As New SsList()
構文 2
Dim myList As SsList
Set myList = New SsList()
要素
myList
SsList クラスオブジェクトへの参照を含む変数です。
プロパティ
Count、KeyType
メンバー関数
FindByKey、GetKey、GetValue、IndexOf、IndexOfKey
メンバーサブルーチン
Add、AddByKey、ClearAll、Del、DelByKey、SetValue
イベント
ListError
使用方法
•
SsList クラスオブジェクトを 1 つ作成します。
•
Add サブルーチンまたは AddByKey サブルーチンを使用して、データを登録します。デ
ータが登録されると、すべてのデータがキーによって自動で昇順にソートされ、ゼロから
始まるインデックス番号が自動的に割り当てられます。
•
キーまたはインデックスを使用してデータの値を取得できます。
•
登録されていないインデックスまたはキーを使用してデータ値を参照しようとするか、イ
ンデックスがオーバーフローすると、実行時エラーおよび ListError イベントが発生しま
す。実行時エラー発生時のエラーコードは次のとおりです。
LSI_RTE_AdtPropertyError
218
プロパティのエラー (Error in a property)
LSI_RTE_AdtMethodError
219
メソッドのエラー (Error in a method)
•
メモリは自動管理されます。
•
オブジェクト参照変数がスコープ外になるとメモリは自動的に解放されます。
例
この例では、SsList クラスオブジェクトを 1 つ作成し、データを追加します。
Dim myList As SsList
Set myList = New SsList
On Event ListError From myList Call ListError
Call myList.Add(1)
Call myList.AddByKey("abc", 2)
参照
Add メンバーサブルーチン、AddByKey メンバーサブルーチン、ClearAll メンバーサブルーチ
ン、Count プロパティ、Del メンバーサブルーチン、DelByKey メンバーサブルーチン、
FindByKey メンバー関数、GetKey メンバー関数、GetValue メンバー関数 (SsList クラス)、
IndexOf メンバー関数、IndexOfKey メンバー関数、KeyType プロパティ、ListError イベント、
SetValue メンバーサブルーチン (SsList クラス)
Add メンバーサブルーチン
このサブルーチンは SsList クラスによって提供されます。SsList クラスオブジェクトに値を追
加します。キーには NULL が設定されます。したがって、Add メンバーサブルーチンを使用
して登録したデータは、インデックスで参照する必要があります。
構文
myList.Add(Value)
要素
myList
SsList クラスオブジェクトへの参照を含む変数です。
Value
クラスオブジェクトに追加する値です。
例
この例では、SsList クラスオブジェクトを 1 つ作成し、Integer 型の値を 1 つ追加します。
Dim myList as New SsList
Dim myInt as Integer
myInt=123
myList.add(myInt)
参照
Del メンバーサブルーチン、GetValue メンバー関数 (SsList クラス)、SetValue メンバーサブル
ーチン (SsList クラス)、SsList クラス
AddByKey メンバーサブルーチン
このサブルーチンは SsList クラスによって提供されます。SsList クラスオブジェクトにデータ
(キーと値の組み合わせ) を追加します。同じキーが存在する場合は、そのキーにあらかじめ関
連付けられている値が上書きされます。AddByKey メンバーサブルーチンにより登録したデー
タは、キーまたはインデックスのどちらかを使用して参照できます。
キーのデータタイプは、登録した最初のキーにより決定されます。異なるデータタイプのキー
を登録しようとすると、実行時エラーが発生します。
構文
myList.AddByKey(key, value)
要素
myList
SsList クラスオブジェクトへの参照を含む変数です。
key
クラスオブジェクトに追加するキーです。
value
クラスオブジェクトに追加する値です。
例
この例では、SsList クラスオブジェクトを 1 つ作成し、Double 型のキーと String 型の値を 1
つずつ追加します。
Dim myList as New SsList
Dim myDbl as Double
Dim myStr as String
myDbl=123.45
myStr="ABC"
Call myList.addByKey(myDbl, myStr)
参照
DelByKey メンバーサブルーチン、FindByKey メンバー関数、GetKey メンバー関数、IndexOfKey
メンバー関数、SsList クラス
ClearAll メンバーサブルーチン
このサブルーチンは SsList クラスによって提供されます。SsList クラスオブジェクトにより登
録された、すべてのデータを削除します。
構文
myList.ClearAll()
要素
myList
SsList クラスオブジェクトへの参照を含む変数です。
例
この例では、SsList クラスオブジェクトを使用して登録したすべてのデータを削除します。
Dim myList as New SsList
myList.Add(1)
myList.AddByKey("ABC",2)
myList.ClearAll()
参照
SsList クラス
Count プロパティ
このプロパティは SsList クラス、および SsSharedStorage クラスによって提供されます。これ
には、クラスオブジェクトに格納されているデータ項目 (キーと値の組み合わせ) の数が含ま
れます。このプロパティは参照専用です。値を変更しようとすると実行時エラーが発生します。
構文
myList.Count
要素
myList
SsList クラスオブジェクトまたは SsSharedStorage クラスオブジェクトへの参照を含む変
数です。
戻り値
クラスオブジェクトで保持しているデータ項目の数です。
例
この例では、SsList クラスオブジェクトの保持しているデータ項目の数が表示されます。
Dim myList as New SsList
Call myList.Add(1)
Call myList.AddByKey("ABC",2)
Print "Count: " & myList.Count
参照
SsList クラス
Del メンバーサブルーチン
このサブルーチンは SsList クラスによって提供されます。指定したインデックスに関連付けら
れたデータを SsList クラスオブジェクトから削除します。以降のインデックスは自動で繰り上
げられます。
構文
myList.Del(index)
要素
myList
SsList クラスオブジェクトへの参照を含む変数です。
index
削除するデータのインデックスです。
例
この例では、値が 1.2 のデータのインデックスを取得して削除します。
Dim myList as New SsList
Dim index As Long
myList.Add(1.2)
myList.AddByKey("ABC",3.4)
index=myList.IndexOf(1.2)
Call myList.Del(index)
参照
Add メンバーサブルーチン、AddByKey メンバーサブルーチン、SsList クラス
DelByKey メンバーサブルーチン
このサブルーチンは SsList クラスによって提供されます。指定のキーに関連付けられたデータ
を SsList クラスオブジェクトから削除します。以降のインデックスは自動で繰り上げられます。
構文
myList.DelByKey(key)
要素
myList
SsList クラスオブジェクトへの参照を含む変数です。
key
削除するデータのキーです。
例
この例では、キーが「ABC」のデータを削除します。
Dim myList as New SsList
Call myList.AddByKey("ABC",1)
Call myList.AddByKey("DEF",2)
Call myList.DelByKey("ABC")
参照
AddByKey メンバーサブルーチン、SsList クラス
FindByKey メンバー関数
この関数は SsList クラスによって提供されます。指定したキーに関連付けられた値を取得しま
す。
構文
myList.FindByKey(key)
要素
myList
SsList クラスオブジェクトへの参照を含む変数です。
key
取得する値に関連付けられたキーです。
戻り値
FindByKey メンバー関数は、指定したキーに関連付けられた値を Variant 型の値で戻します。
例
この例では、キー「ABC」に関連付けられた値を取得します。
Dim myList as New SsList
Dim value As Variant
Call myList.AddByKey("ABC",1)
Call myList.AddByKey("DEF",2)
value=myList.FindByKey("ABC")
参照
AddByKey メンバーサブルーチン、GetValue メンバー関数、SsList クラス
GetKey メンバー関数
この関数は SsList クラスによって提供されます。指定したインデックスのキーを戻します。
構文
myList.GetKey(index)
要素
myList
SsList クラスオブジェクトへの参照を含む変数です。
index
取得するキーのインデックスです。
戻り値
GetKey メンバー関数は、指定したインデックスに関連付けられたキーを Variant 型の値で戻し
ます。
例
この例では、2 番目の位置に登録されたキーを取得します。
Dim myList as New SsList
Dim myKey As Variant
Call myList.AddByKey("ABC",1)
Call myList.AddByKey("DEF",2)
myKey=myList.GetKey(2)
参照
GetValue メンバー関数、SsList クラス
GetValue メンバー関数
この関数は SsList クラスによって提供されます。指定したインデックスに関連付けられた値を
戻します。
構文
myList.GetValue(key)
要素
myList
SsList クラスオブジェクトへの参照を含む変数です。
key
このインデックスに関連付けられた値を取得します。
戻り値
GetValue メンバー関数は、指定したインデックスに関連付けられた値を Variant 型の値で戻し
ます。インデックスが見つからない場合は実行時エラーが発生します。
例
この例では、値「DEF」に関連付けられた値を取得します。
Dim myList as New SsList
Dim value As Variant
Call myList.AddByKey("ABC",1)
Call myList.AddByKey("DEF",2)
value=myList.GetValue("DEF")
参照
GetKey メンバー関数、SetValue メンバーサブルーチン (SsList クラス)、SsList クラス
IndexOf メンバー関数
この関数は SsList クラスによって提供されます。指定の値を持つインデックスを戻します。指
定の値を持つインデックスが複数存在する場合は、最小のインデックスを戻します。
構文
myList.IndexOf(value)
要素
myList
SsList クラスオブジェクトへの参照を含む変数です。
value
取得するインデックスのデータ値です。
戻り値
IndexOf メンバー関数は、指定した値を検索します。一致する値が存在すると、そのインデッ
クスを Long 型の値で戻します。存在しない場合は、-1 を戻します。
例
この例では、指定した値 2 を持つインデックスを取得します。
Dim myList as New SsList
Dim index As Long
Call myList.AddByKey("ABC",1)
Call myList.AddByKey("DEF",2)
index=myList.IndexOf(2)
参照
Add メンバーサブルーチン、AddByKey メンバーサブルーチン、GetValue メンバー関数、
IndexOfKey メンバー関数、SsList クラス
IndexOfKey メンバー関数
この関数は SsList クラスによって提供されます。指定のキーを持つインデックスを戻します。
構文
myList.IndexOfKey(key)
要素
myList
SsList クラスオブジェクトへの参照を含む変数です。
key
取得するインデックスのキー値です。
戻り値
IndexOfKey メンバー関数は、指定したキーを検索します。一致するキーが存在すると、そのイ
ンデックスを Long 型の値で戻します。存在しない場合は、-1 を戻します。
例
この例では、指定したキー「ABC」が含まれるインデックスを取得します。
Dim myList as New SsList
Dim index As Long
Call myList.AddByKey("ABC",1)
Call myList.AddByKey("DEF",2)
index=myList.IndexOfKey("ABC")
参照
AddByKey メンバーサブルーチン、GetKey メンバー関数、SsList クラス
KeyType プロパティ
このプロパティは SsList クラスによって提供されます。SsList クラスオブジェクトのキーのデ
ータタイプを戻します。キーのデータタイプは、登録した最初のキーにより決定されます。こ
のプロパティは参照専用です。値を変更しようとすると実行時エラーが発生します。
構文
myList.KeyType
要素
myList
SsList クラスオブジェクトへの参照を含む変数です。
戻り値
SsList クラスオブジェクトのキーのデータタイプです。
例
この例では、SsList クラスオブジェクトのキーのデータタイプが表示されます。
Dim myList as New SsList
Call myList.AddByKey("ABC",1)
Print "Key Type: " & Cstr(myList.KeyType)
参照
SsList クラス
ListError イベント
このイベントは SsList クラスによって提供されます。このイベントは、SsList クラスオブジェ
クトで実行時エラーが起こると発生します。
構文
On Event ListError From myList Call handleName
Sub handleName(source As SsList, errno As Integer)
要素
myList
SsList クラスオブジェクトへの参照を含む変数です。
handleName
ListError イベントが発生すると、イベント処理サブルーチンの名前を表す文字列が設定さ
れます。
source
イベントが発生した SsList クラスオブジェクトへの参照を含む変数です。
errno
エラー番号です。
使用方法
このイベントを使用すると、SsList クラスで発生した実行時エラーの詳細なエラー番号を取得
できます。エラー番号およびこれに関連するエラーメッセージは次のとおりです。
SSLIST_ERR_DATATYPE
500
データタイプが一致しない (The data types do
not match)
SSLIST_ERR_OVERFLOW
501
インデックスオーバーフロー (Index overflow)
SSLIST_ERR_OUTOFRANGE
502
指定したインデックスのデータが存在しない
(No data for the specified index)
SSLIST_ERR_NOTFOUND
503
対応するキーが存在しない (No corresponding
key)
参照
SsList クラス
SetValue メンバーサブルーチン
このサブルーチンは SsList クラスによって提供されます。指定したインデックスに格納されて
いるデータ値を変更します。
構文
myList.SetValue(index, value)
要素
myList
SsList クラスオブジェクトへの参照を含む変数です。
index
変更するデータ値のインデックスです。
value
古い値を置換するデータ値です。
例
この例では、キー「DEF」が含まれるデータ値を変更します。
Dim myList as New SsList
Dim index as Long
Call myList.AddByKey("ABC",1)
Call myList.AddByKey("DEF",2)
index = myList.IndexOf("DEF")
Call myList.SetValue(index,3)
参照
GetValue メンバー関数 (SsList クラス)、SsList クラス