この章の内容は次のとおりです。
Imagingには、ネイティブJava APIとWebサービスという2つの統合オプションがあります。
ネイティブJava API
ImagingネイティブJava APIはImagingのあらゆる面に対するアクセスを用意したJavaクラスの包括的なセットを提供します。Javaコードを直接参照できる、最も容易な環境のオプションです。クライアント側のJavaコードで実装されるため、APIはデータ構造の伝搬、コレクションの検索とソートおよびデータ型の列挙などの共通タスクについて、多くの便利なユーティリティを提供します。さらに、ネイティブJava APIはWebサービスのラッパーとして機能します。このように、インテグレータは基盤となるWebサービスの実装に悩むことなくJava APIを使用できます。
Webサービス
Imagingの機能は、Simple Object Access Protocol (SOAP)ベースのWebサービスとして直接使用できます。そのため、Java以外の環境で、WebサービスのコールをサポートするImaging機能にアクセスできます。Imaging APIのコア機能はすべて、Webサービス・セットに用意されています。
Imaging APIはWebサービスとして公開されているので、Webサービスをサポートしているプログラミング環境であればどこからでもImaging機能にアクセスできます。ImagingのWeb Services Description Language (WSDL)を使用してそれらのサービスの実装クラスを生成することによって、Webサービスと同様にImagingにアクセスできます。
Application Extension Framework
OracleではOracle E-Business Suiteなど、製品化されたビジネス・アプリケーションとの統合を提供しています。これらの統合はImagingのApplication Extension Framework (AXF)コンポーネントにより実現されています。AXFは、各システムそのものとは別個に複数のビジネス・プロセス・ソリューションを管理者が構成し、変更できる、コマンド主導のWebサービスを提供します。AXFおよびAXFイメージング・ソリューションの詳細は、『Oracle WebCenterアプリケーション・アダプタの管理』のApplication Extension Framework (AXF)に関する項を参照してください。
Imaging APIは、サービス指向のアーキテクチャの設計パターンに基づいて実装されています。このモデルのコンポーネントは、次のようにサービスとオブジェクトの2つのカテゴリに分類できます。
サービス
サービスは、Webサービス・リクエストになります。これらのサービスにはデータは含まれませんが、ドキュメントの作成などの一般的なタスクを実行するためのメソッドが組み込まれています。サービスは、Imagingサーバーとの間でデータ・オブジェクトをやりとりします。
オブジェクト
オブジェクトに含まれるのはデータのみです。オブジェクトが提供するメソッドは、オブジェクト・プロパティの単純なget操作とset操作のみです。
Imagingのサービス、メソッドおよびパラメータの詳細な情報は、Imaging Java APIリファレンスのガイドを参照してください。このガイドでは、APIの各種の主要機能を説明するコード・サンプルを紹介しています。
Imagingサービスは、次のカテゴリに分類できます。
定義: 定義サービスには、Application、SearchおよびInputを含むImagingシステムの構造を管理する機能があります。
ドキュメント: ドキュメント・サービスには、Imagingシステム内のコンテンツを管理する機能があります。
システム: システム・サービスには、Imagingシステムを管理する機能があります。
次の一般的なメソッドは、必要に応じて、各種サービスで使用可能です。
メソッド | 説明 |
---|---|
|
listメソッドは、現在のユーザーが操作できる定義の検出に使用されます。表示や変更などのインタラクションのタイプは |
|
getメソッドは、定義オブジェクトの取得に使用されます。このメソッドには、オブジェクトの特定部分の要求に使用される |
|
create、updateおよびdeleteメソッドは、現在のユーザー・コンテキストの範囲内でそれぞれのオブジェクトに対して標準の管理機能を提供します。 |
次の定義サービスでは、Imagingシステムの構造の基本的な作成および管理を実現します。
Imagingアプリケーションは、メタデータ、権限の割当て、ドキュメント・ライフサイクルの仕様、ワークフロー統合、監査構成、およびドキュメントとトランザクションの適切な管理に必要なその他の項目からなる一意に構成されたセットを備えた、ドキュメント・リポジトリを表します。ApplicationServiceを使用すると、I/PM Applicationの検出、作成、変更および削除を実行できます。Imagingアプリケーションの定義は、複数のサブオブジェクトを含むApplicationオブジェクト内に存在します。
Imagingは大量のドキュメントのストレージ用に作成されています。ユーザーにとってはフォルダをブラウズして大量のドキュメントをナビゲートすることが困難なため、Imagingシステムは希望するコンテンツを見つける、より効率的な手段として包括的な検索ソリューションを提供します。SearchServiceは検索の検出、削除および実行に使用されます。検索の定義は複雑なエンティティのため、Imagingユーザー・インタフェースを使用して検索を作成してからそれをシステムに保存する方法がベスト・プラクティスとなります。保存された検索は統合による複雑な問合せを使用する、効果的なメカニズムを提供します。ユーザーに必要なのは検索の名前と希望する検索パラメータ値を知るだけです。
InputServiceはinput定義オブジェクトの検出、作成、変更および削除に使用されます。InputServiceにより、状態の変更や入力のオンライン/オフライン切替えが可能です。これにより、ユーザーはサンプル・データをアップロードしたり、定義ファイルの情報を取得することができます。
ConnectionServiceは、connection定義オブジェクトの検出、作成、変更および削除に使用されます。connectionは、Imagingをワークフロー・サーバーおよびコンテンツ・サーバー・リポジトリに接続するために使用されます。
次のドキュメント・サービスは、Imagingのドキュメント・コンテンツの作成および管理に使用されます。
DocumentServiceは、Imagingリポジトリ内部でのドキュメントへのアクセス、ロック、移動、コピー、変更および削除に使用されます。ドキュメント・サービス・メソッドのアクションはすべて、現在のユーザー・コンテキスト、およびドキュメントが存在するapplicationで構成されている関連するドキュメント・セキュリティにバインドされます。また、DocumentServiceは、ドキュメントに関連付けられた注釈を管理するほか、ドキュメントを画像形式にレンダリングする機能を備えています。
次のシステム・サービスは、Imagingシステムの管理に関連する機能を備えています。
LifecycleServiceは、ドキュメント・ストレージに使用可能なストレージ・ボリュームの情報を取得する機能を備えています。Volumeオブジェクトはストレージ・メディアを表します。ストレージ・ボリュームは、application定義内でドキュメントに関連付けられます。
LoginServiceは、Imagingのユーザー・セッションを確立および終了します。その他のサービスを使用する前に、セッションを確立しておく必要があります。
PreferenceServiceは、システム・レベルまたはユーザー・レベルのいずれかでプリファレンス情報を格納する機能を備えています。システム・レベルでは、1つのImagingインストールに構成インスタンスを1つ提供し、ユーザー・レベルでは、ユーザーごとに一意の構成インスタンスを提供します。このサービスは、プリファレンス設定の基本的な保存および取得機能を備えています。ただし、APIからプリファレンスを設定する場合、タイプに注意する必要があります。API通過した不正な設定に対する検証は行われません。検証は、プリファレンスがユーザー・インタフェースを通じてセットされた場合のみ行われます。
SecurityServiceはセキュリティ環境内に存在するユーザーおよびユーザー・グループについてシステムに問い合せるメカニズムを提供します。また、各システム定義オブジェクト内で定義されるセキュリティ要素の上位となるセキュリティ権限を取得し、定義する機能も提供します。
システム・サービスは、Imaging APIレベルの管理を実現します。インテグレータは、複数のImaging APIコールにまたがる概念を活用できます。
NameIdクラスは、システム内のApplication、Search、Inputなどのエンティティを識別する基本的な手段を提供します。エンティティにはすべて、数字で構成される一意のIDと文字列データ型で表される名前の両方があります。Imaging内の特定のエンティティを参照するには、数値IDまたは名前のいずれかを使用できます。NameIdクラスは、数値ID、文字列ID、またはその両方のIDを保持します。両方のIDが提供された場合、数値IDが使用されます。使用されるNameのIDは0 (指定しない)でなければなりません。このクラスは、すべてのlist()関数によって返され、含まれているオブジェクトの数値IDおよび文字列IDの両方のリストをコール元に提供します。NameIDを受け入れるget()関数により、インテグレータは数値IDまたは名前を使用して必要なエンティティを取得できます。
各オブジェクト(application、input、search、connection、およびdocument)は、セクションと呼ばれる複数のサブオブジェクトから構成されます。オブジェクトのセクションには、汎用プロパティ、セキュリティ付与、監査履歴などが含まれます。便宜上、get()サービスはセクション・インジケータの配列を受け入れるので、完全なオブジェクト・コンテンツのサブセットのみをImagingから取得したり、更新のためにImagingに戻すことができます。これらのインジケータは、各オブジェクトのSectionFlagクラス内で定義されます。
次の表は、各定義オブジェクトで使用可能なセクションの一覧です。
セクション・フラグ | アプリケーション | 入力 | 検索 | 接続 | ドキュメント |
---|---|---|---|---|---|
|
X |
X |
X |
X |
|
|
X |
||||
|
X |
||||
|
X |
||||
|
X |
||||
|
X |
||||
|
X |
||||
|
X |
X |
X |
X |
X |
|
X |
||||
|
X |
||||
|
X |
X |
X |
X |
|
|
X |
||||
|
X |
X |
X |
X |
X |
|
X |
X |
X |
X |
X |
|
X |
||||
|
X |
X |
X |
X |
|
|
X |
||||
|
X |
各Imagingオブジェクトには、そのオブジェクトのプロパティを定義するPropertiesオブジェクトと呼ばれるサブオブジェクトが含まれています。Propertiesオブジェクトには、複雑なコンテンツを提供する独自の属性を持つサブオブジェクトがさらに含まれている場合があります。
定義オブジェクトでは、各ユーザーまたはユーザー・グループに割り当てられている権限を定義するために使用されるSecurityサブオブジェクトが定義されます。これらの権限の対象範囲には、作成、変更、削除などの基本的なオブジェクト管理アクションに加えて、検索の実行など、タイプに固有のアクションも含まれます。
次の例では、Imaging統合APIが提供する基本機能の一部を簡単に説明します。この例は、単にImagingシステムにログインし、表示可能なアプリケーションの一覧を表示して、ログアウトするだけです。
例1-1 表示可能なアプリケーションの一覧表示
package devguidesamples; import java.util.List; import java.util.Locale; import oracle.imaging.Application; import oracle.imaging.ApplicationService; import oracle.imaging.BasicUserToken; import oracle.imaging.ImagingException; import oracle.imaging.NameId; import oracle.imaging.ServicesFactory; import oracle.imaging.UserToken; public class IntroSample { public static void main(String[] args) { try { // try-catch UserToken credentials = new BasicUserToken("ipmuser", "ipmuserpwd"); ServicesFactory servicesFactory = ServicesFactory.login(credentials, Locale.US, "http://ipmhost:16000/imaging/ws"); try { // try-finally to ensure logout ApplicationService appService = servicesFactory.getApplicationService(); // List the viewable applications to confirm that "Invoices" exists List<NameId> appsList = appService.listApplications(Application.Ability.VIEW); for (NameId appNameId: appsList) { System.out.println( appNameId ); } } finally { if (servicesFactory != null) { servicesFactory.logout(); } } } catch (ImagingException e) { System.out.println(e.getMessage()); } } }