この章の内容は次のとおりです。
Imagingには、ネイティブJava APIとWebサービスという2つの統合オプションがあります。
ImagingのネイティブJava APIは、Imagingのあらゆる面へのアクセスを可能にするJavaクラスの包括的なセットを提供します。これは、環境からJavaコードを直接参照できる最も簡単なオプションです。このAPIは、クライアント側のJavaコードで実装されるので、データ構造の生成、コレクションの検索とソート、およびデータ型の列挙などの一般的なタスクを実行するための便利なユーティリティを多数備えています。さらに、ネイティブJava APIは、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 Imagingソリューションの詳細は、『Oracle WebCenterアプリケーション・アダプタ管理者ガイド』を参照してください。
Imaging APIは、サービス指向のアーキテクチャの設計パターンに基づいて実装されています。このモデルのコンポーネントは、次のようにサービスとオブジェクトの2つのカテゴリに分類できます。
サービスは、Webサービス・リクエストになります。これらのサービスにはデータは含まれませんが、ドキュメントの作成などの一般的なタスクを実行するためのメソッドが組み込まれています。サービスは、Imagingサーバーとの間でデータ・オブジェクトをやりとりします。
オブジェクトに含まれるのはデータのみです。オブジェクトが提供するメソッドは、オブジェクト・プロパティの単純なget操作とset操作のみです。
Imagingサービス、メソッド、およびパラメータの詳細は、Oracle WebCenter Content Imaging Java APIリファレンスを参照してください。このガイドでは、APIの各種の主要機能を説明するコード・サンプルを紹介しています。
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クラス内で定義されます。
次の表は、各定義オブジェクトで使用可能なセクションの一覧です。
セクション・フラグ | Application | Input | Search | Connection | Document |
---|---|---|---|---|---|
|
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オブジェクトには、複雑なコンテンツを提供する独自の属性を持つサブオブジェクトがさらに含まれている場合があります。
オブジェクトの多くでは、オブジェクトの現在のインスタンスに関連して現在のユーザーに付与されている権限を指定するPermissionsサブオブジェクトが定義されます。
定義オブジェクトでは、各ユーザーまたはユーザー・グループに割り当てられている権限を定義するために使用される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()); } } }