Oracle® Fusion Middleware

Oracle WebCenter Content: Imagingの開発

11g リリース1 (11.1.1)

B72422-02(原本部品番号:E12784-06)

2013年7月

Oracle WebCenter Content Imagingの機能をカスタマイズするために必要な情報を提供するOracle WebCenter Content Imaging開発者用ガイドです。

Oracle Fusion Middleware Oracle WebCenter Content Imaging 開発者ガイド, 11g リリース1 (11.1.1)

B72422-02

Copyright © 2010, 2013, Oracle and/or its affiliates. All rights reserved.

原本著者: Sonia Nagar

原本協力者: Brian Gray

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、他社の商標の可能性があります。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

このガイドで説明する新機能

- 11g リリース1 (11.1.1)の新機能と変更機能

- 11g リリース1 (11.1.1)に関するこのドキュメントにおけるその他の大きな変更

第I部 Oracle WebCenter Content: Imagingのカスタマイズのスタート・ガイド

1 Oracle WebCenter Content: Imagingの概要

- 1.1 統合オプションの概要

- 1.2 一般的なAPIモデル

- 1.2.1 サービスについて

- 1.2.1.1 定義サービス

- 1.2.1.2 ドキュメント・サービス

- 1.2.1.3 システム・サービス

- 1.2.2 データ・オブジェクトについて

- 1.2.2.1 識別

- 1.2.2.2 セクション

- 1.2.2.3 Properties

- 1.2.2.4 Permissions

- 1.2.2.5 Security

- 1.2.2.6 監査イベント

- 1.3 要件

- 1.4 Imaging統合APIのサンプル

第II部 Imagingクライアント側およびセキュリティの構成

2 Imaging APIへのクラス・パスの構成

- 2.1 Imaging APIへのクラス・パスの構成

- 2.2 クライアント・ディレクトリへのAPIファイルのコピー

- 2.3 クラス・パスの設定

3 認証およびセキュリティ・ポリシーの構成

- 3.1 認証およびセキュリティ・ポリシーの構成について

- 3.2 Basic認証のためのSSL通信の提供

- 3.3 Imaging WebサービスへのOWSMセキュリティ・ポリシーの適用

- 3.4 Java APIログインにおけるクライアント側セキュリティ・ポリシーの再構成

第III部 Imagingリポジトリでのドキュメント管理

4 ドキュメントの作成

- 4.1 ドキュメントの作成について

- 4.2 アプリケーションのリスト

- 4.3 アプリケーション・プロパティとフィールド定義の取得

- 4.4 ドキュメント・コンテンツのアップロード

- 4.5 ドキュメントへのメタデータの提供

- 4.6 ドキュメント作成の例

5 ドキュメントの検索

- 5.1 ドキュメントの検索について

- 5.2 保存済検索のリスト

- 5.3 検索引数の指定

- 5.4 検索の実行

- 5.5 検索結果の解析

- 5.6 検索の実行例

6 ドキュメントの取得

- 6.1 ドキュメントの取得について

- 6.2 オリジナル・ドキュメントの取得

- 6.3 注釈付きドキュメントのレンディションの取得

- 6.4 ドキュメントからページを個別に取得

- 6.5 ドキュメント取得の例

7 ドキュメントの更新

- 7.1 ドキュメントの更新について

- 7.2 改訂されたドキュメント・コンテンツのアップロード

- 7.3 ドキュメントのメタデータの更新

- 7.4 ドキュメント更新の例

第IV部 Imagingと環境の統合

8 Imaging APIをPure Webサービスとして使用

- 8.1 Pure WebサービスとしてのImaging APIの使用について

- 8.1.1 WebサービスWSDLの検索

- 8.2 ステートレス・セッションでのWebサービスの使用

- 8.3 ステートフル・セッションでのWebサービスの使用

- 8.4 AXF Webサービスの使用

- 8.4.1 AXF WebサービスのWSDLファイルのロケーティング

- 8.4.2 WSDLファイル構造

- 8.4.3 データ型

- 8.4.4 メッセージ

- 8.4.5 ポート・タイプ

- 8.4.6 バインディング

- 8.4.7 サービスとポート

9 ImagingとBPELの統合

- 9.1 ImagingとBPELの統合について

- 9.2 BPELプロセスからのImaging Webサービスの起動

- 9.3 BPELプロセスからのImaging Webサービスの更新

10 URLツールを使用したユーザー・インタフェース機能へのアクセス

- 10.1 URLツールを使用したユーザー・インタフェース機能へのアクセスについて

- 10.2 URLツールの使用

- 10.2.1 サポートされるURLツール・パラメータ

- 10.2.2 サポートされているURLツール

- 10.2.2.1 検索URLツール

- 10.2.2.2 ビューアURLツール

- 10.2.2.3 アップロードURLツール

- 10.2.2.4 ユーザー・プリファレンスURLツール

11 RESTページ・レンディション・リクエストの作成

はじめに

Oracle WebCenter Content: Imagingは、電子ドキュメントのストレージ、取得、および注釈をビジネス・プロセスと統合し、エンタープライズ全体にわたってドキュメントが円滑に使用できるようにします。ドキュメントは、Imagingのアプリケーションを使用して、Oracle WebCenter Contentが管理しているリポジトリにアップロードされます。アプリケーションは、ユーザーのビジネス上のニーズに基づいて、ユーザーによりあらかじめ定義されます。ドキュメントのアップロードに使用されるアプリケーションは、アップロードされるドキュメントのタイプに基づいて選択します。たとえば、あるアプリケーションをインボイスのアップロードに使用し、契約書のアップロードには別のアプリケーションを使用します。アプリケーションは、ドキュメントと関連付けられたメタデータとともに、ドキュメントに対するセキュリティ権限、およびドキュメントの注釈を判断します。このガイドでは、アプリケーションと検索の定義、ワークフロー・サーバーに接続して他のビジネス・プロセスと統合する方法、および会社のニーズに最適なImaging構成について説明します。

対象読者

このドキュメントは、Oracle WebCenter Content: Imaging機能のカスタマイズを担当する開発者を対象にしています。

ドキュメントのアクセシビリティについて

オラクル社のアクセシビリティに対するコミットメントについては、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docaccを参照してください。

Oracleサポートへのアクセス

Oracleサポート・サービスでは、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info) か、聴覚に障害のあるお客様は (http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。

関連ドキュメント

詳細は、Oracle WebCenter Content: Imagingのドキュメント・ライブラリにある次のドキュメントを参照してください。

- 『Oracle Fusion Middleware Oracle WebCenter Content Imaging管理者ガイド』

- 『Oracle Fusion Middleware Oracle WebCenter Content Imagingユーザーズ・ガイド』

- 『Oracle WebCenter Content Imaging Java APIリファレンス』

- 『Oracle Document Capture開発者ガイド』

- 『Oracle Distributed Document Capture開発者ガイド』

表記規則

本文では、次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するグラフィカル・ユーザー・インタフェース要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック

イタリックは、特定の値を指定するプレースホルダ変数を示します。

固定幅

固定幅フォントは、パラグラフ内のコマンド、URL、例に記載されているコード、画面に表示されるテキスト、または入力するテキストを示します。

このガイドで説明する新機能

次のトピックでは、Oracle WebCenter Content Imagingの新機能や変更された機能について、およびこのガイドに記載されるその他の重要な変更について紹介し、詳細情報へのリンクを提供します。このドキュメントは、『Oracle WebCenter Content Imaging開発者ガイド』の最新版です。

11g リリース1 (11.1.1)の新機能と変更機能

Oracle WebCenter Content Imaging 11g リリース1 (11.1.1)では、新しい機能も将来のバージョンで変更される機能もありません。

11g リリース1 (11.1.1)に関するこのドキュメントにおけるその他の大きな変更

このガイドは11g リリース1 (11.1.1)でいくつかの点が更新されました。次の表に、追加または変更された項を示します。

- Viewer URLツール・パラメータ表にHideBannerという新規パラメータが追加されました。第10.2.2.2項「ビューアURLツール」を参照してください。

- サポートされるURLツール・パラメータの項の表が改訂され、新しいスキン値が含まれるようになりました。Imaging UIでも従来のスキンに加えてSkyrosスキンがサポートされるようになりました。第10.2.1項「サポートされるURLツール・パラメータ」を参照してください。

第I部

Oracle WebCenter Content: Imagingのカスタマイズのスタート・ガイド

第I部は次の章から構成されます。

- 第1章「Oracle WebCenter Content: Imagingの概要」

1 Oracle WebCenter Content: Imagingの概要

この章では統合オプション、共通のAPIモデル、ソフトウェアの要件およびImaging統合APIの例など、Oracle WebCenter Content: Imagingの概要について説明します。

この章の内容は次のとおりです。

- 1.1項「統合オプションの概要」

- 1.2項「一般的なAPIモデル」

- 1.3項「要件」

- 1.4項「Imaging統合APIのサンプル」

1.1 統合オプションの概要

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アプリケーション・アダプタ管理者ガイドを参照してください。

1.2 一般的なAPIモデル

Imaging APIは、サービス指向のアーキテクチャの設計パターンに基づいて実装されています。このモデルのコンポーネントは、次のようにサービスとオブジェクトの2つのカテゴリに分類できます。

サービス

サービスは、Webサービス・リクエストになります。これらのサービスにはデータは含まれませんが、ドキュメントの作成などの一般的なタスクを実行するためのメソッドが組み込まれています。サービスは、Imagingサーバーとの間でデータ・オブジェクトをやりとりします。

オブジェクト

オブジェクトに含まれるのはデータのみです。オブジェクトが提供するメソッドは、オブジェクト・プロパティの単純なget操作とset操作のみです。

Imagingサービス、メソッド、およびパラメータの詳細は、Oracle WebCenter Content Imaging Java APIリファレンスを参照してください。このガイドでは、APIの各種の主要機能を説明するコード・サンプルを紹介しています。

1.2.1 サービスについて

Imagingサービスは、次のカテゴリに分類できます。

- 定義: 定義サービスには、Application、SearchおよびInputを含むImagingシステムの構造を管理する機能があります。

- ドキュメント: ドキュメント・サービスには、Imagingシステム内のコンテンツを管理する機能があります。

- システム: システム・サービスには、Imagingシステムを管理する機能があります。

次の一般的なメソッドは、必要に応じて、各種サービスで使用可能です。

メソッド

説明

list...()

listメソッドは、現在のユーザーが操作できる定義の検出に使用されます。表示や変更などのインタラクションのタイプはAbility列挙を使用して定義され、パラメータとして指定されます。

get...()

getメソッドは、定義オブジェクトの取得に使用されます。このメソッドには、オブジェクトの特定部分の要求に使用されるSectionFlag列挙値の配列が含まれています。

create...()

update...()

delete...()

create、updateおよびdeleteメソッドは、現在のユーザー・コンテキストの範囲内でそれぞれのオブジェクトに対して標準の管理機能を提供します。

1.2.1.1 定義サービス

次の定義サービスでは、Imagingシステムの構造の基本的な作成および管理を実現します。

- ApplicationService

- SearchService

- InputService

- ConnectionService

- ImportExportService

1.2.1.1.1 ApplicationService

Imagingアプリケーションは、メタデータ、権限の割当て、ドキュメント・ライフサイクルの仕様、ワークフロー統合、監査構成、およびドキュメントとトランザクションの適切な管理に必要なその他の項目からなる一意に構成されたセットを備えた、ドキュメント・リポジトリを表します。ApplicationServiceを使用すると、I/PM Applicationの検出、作成、変更および削除を実行できます。Imagingアプリケーションの定義は、複数のサブオブジェクトを含むApplicationオブジェクト内に存在します。

1.2.1.1.2 SearchService

Imagingは大量のドキュメントのストレージ用に作成されています。ユーザーにとってはフォルダをブラウズして大量のドキュメントをナビゲートすることが困難なため、Imagingシステムは希望するコンテンツを見つける、より効率的な手段として包括的な検索ソリューションを提供します。SearchServiceは検索の検出、削除および実行に使用されます。検索の定義は複雑なエンティティのため、Imagingユーザー・インタフェースを使用して検索を作成してからそれをシステムに保存する方法がベスト・プラクティスとなります。保存された検索は統合による複雑な問合せを使用する、効果的なメカニズムを提供します。ユーザーに必要なのは検索の名前と希望する検索パラメータ値を知るだけです。

1.2.1.1.3 InputService

InputServiceはinput定義オブジェクトの検出、作成、変更および削除に使用されます。InputServiceにより、状態の変更や入力のオンライン/オフライン切替えが可能です。これにより、ユーザーはサンプル・データをアップロードしたり、定義ファイルの情報を取得することができます。

1.2.1.1.4 ConnectionService

ConnectionServiceは、connection定義オブジェクトの検出、作成、変更および削除に使用されます。connectionは、Imagingをワークフロー・サーバーおよびコンテンツ・サーバー・リポジトリに接続するために使用されます。

1.2.1.1.5 ImportExportService

ImportExportServiceは、Imagingシステム内でアプリケーション、検索、および入力を大量に作成する場合に使用します。

1.2.1.2 ドキュメント・サービス

次のドキュメント・サービスは、Imagingのドキュメント・コンテンツの作成および管理に使用されます。

- DocumentService

- DocumentContentService

1.2.1.2.1 DocumentService

DocumentServiceは、Imagingリポジトリ内部でのドキュメントへのアクセス、ロック、移動、コピー、変更および削除に使用されます。ドキュメント・サービス・メソッドのアクションはすべて、現在のユーザー・コンテキスト、およびドキュメントが存在するapplicationで構成されている関連するドキュメント・セキュリティにバインドされます。また、DocumentServiceは、ドキュメントに関連付けられた注釈を管理するほか、ドキュメントを画像形式にレンダリングする機能を備えています。

1.2.1.2.2 DocumentContentService

DocumentContentServiceはドキュメントのアップロードと取得に使用されます。

1.2.1.3 システム・サービス

次のシステム・サービスは、Imagingシステムの管理に関連する機能を備えています。

- LifecycleService

- LoginService

- PreferenceService

- SecurityService

- TicketService

1.2.1.3.1 LifecycleService

LifecycleServiceは、ドキュメント・ストレージに使用可能なストレージ・ボリュームの情報を取得する機能を備えています。Volumeオブジェクトはストレージ・メディアを表します。ストレージ・ボリュームは、application定義内でドキュメントに関連付けられます。

1.2.1.3.2 LoginService

LoginServiceは、Imagingのユーザー・セッションを確立および終了します。その他のサービスを使用する前に、セッションを確立しておく必要があります。

1.2.1.3.3 PreferenceService

PreferenceServiceは、システム・レベルまたはユーザー・レベルのいずれかでプリファレンス情報を格納する機能を備えています。システム・レベルでは、1つのImagingインストールに構成インスタンスを1つ提供し、ユーザー・レベルでは、ユーザーごとに一意の構成インスタンスを提供します。このサービスは、プリファレンス設定の基本的な保存および取得機能を備えています。ただし、APIからプリファレンスを設定する場合、タイプに注意する必要があります。API通過した不正な設定に対する検証は行われません。検証は、プリファレンスがユーザー・インタフェースを通じてセットされた場合のみ行われます。

1.2.1.3.4 SecurityService

SecurityServiceはセキュリティ環境内に存在するユーザーおよびユーザー・グループについてシステムに問い合せるメカニズムを提供します。また、各システム定義オブジェクト内で定義されるセキュリティ要素の上位となるセキュリティ権限を取得し、定義する機能も提供します。

1.2.1.3.5 TicketService

TicketServiceでは、チケットの作成または削除、および失効したチケットの一括削除を実行することができます。

1.2.2 データ・オブジェクトについて

システム・サービスは、Imaging APIレベルの管理を実現します。インテグレータは、複数のImaging APIコールにまたがる概念を活用できます。

1.2.2.1 識別

NameIdクラスは、システム内のApplication、Search、Inputなどのエンティティを識別する基本的な手段を提供します。エンティティにはすべて、数字で構成される一意のIDと文字列データ型で表される名前の両方があります。Imaging内の特定のエンティティを参照するには、数値IDまたは名前のいずれかを使用できます。NameIdクラスは、数値ID、文字列ID、またはその両方のIDを保持します。両方のIDが提供された場合、数値IDが使用されます。使用されるNameのIDは0 (指定しない)でなければなりません。このクラスは、すべてのlist()関数によって返され、含まれているオブジェクトの数値IDおよび文字列IDの両方のリストをコール元に提供します。NameIDを受け入れるget()関数により、インテグレータは数値IDまたは名前を使用して必要なエンティティを取得できます。

1.2.2.2 セクション

各オブジェクト(application、input、search、connection、およびdocument)は、セクションと呼ばれる複数のサブオブジェクトから構成されます。オブジェクトのセクションには、汎用プロパティ、セキュリティ付与、監査履歴などが含まれます。便宜上、get()サービスはセクション・インジケータの配列を受け入れるので、完全なオブジェクト・コンテンツのサブセットのみをImagingから取得したり、更新のためにImagingに戻すことができます。これらのインジケータは、各オブジェクトのSectionFlagクラス内で定義されます。

次の表は、各定義オブジェクトで使用可能なセクションの一覧です。

セクション・フラグ

アプリケーション

入力

検索

接続

ドキュメント

DESCRIPTION

X

X

X

X

DETAILS

X

DOCUMENTPERMISSIONS

X

DOCUMENTSECURITY

X

EXPRESSIONS

X

FIELDDEFINITIONS

X

FIELDVALUES

X

HISTORY

X

X

X

X

X

LIFECYCLEPOLICY

X

MAPPINGS

X

NAME

X

X

X

X

PARAMETERS

X

PERMISSIONS

X

X

X

X

X

PROPERTIES

X

X

X

X

X

RESULT_COLUMNS

X

SECURITY

X

X

X

X

SOURCE_PROPERTIES

X

WORKFLOWCONFIG

X

1.2.2.3 Properties

各Imagingオブジェクトには、そのオブジェクトのプロパティを定義するPropertiesオブジェクトと呼ばれるサブオブジェクトが含まれています。Propertiesオブジェクトには、複雑なコンテンツを提供する独自の属性を持つサブオブジェクトがさらに含まれている場合があります。

1.2.2.4 Permissions

オブジェクトの多くでは、オブジェクトの現在のインスタンスに関連して現在のユーザーに付与されている権限を指定するPermissionsサブオブジェクトが定義されます。

1.2.2.5 Security

定義オブジェクトでは、各ユーザーまたはユーザー・グループに割り当てられている権限を定義するために使用されるSecurityサブオブジェクトが定義されます。これらの権限の対象範囲には、作成、変更、削除などの基本的なオブジェクト管理アクションに加えて、検索の実行など、タイプに固有のアクションも含まれます。

1.2.2.6 監査イベント

多くのオブジェクトには、そのオブジェクトに関連する監査履歴を返すためのセクションが含まれています。この履歴には、個々のユーザーが実行し、そのオブジェクトに影響を与えたアクションが記載されています。監査アクションとしては、そのオブジェクトの作成、変更、表示などがあります。監査履歴には、発生したアクション、そのアクションを実行したユーザー、およびそのアクションが発生した日付が記録されます。

1.3 要件

Oracle WebLogic Serverで実行されていないImagingクライアントの要件は次のとおりです。

- JDK 1.6以降

- インストールされ運用可能なImagingシステム

1.4 Imaging統合APIのサンプル

次の例では、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());
}
}
}

第II部

Imagingのクライアント・サイドおよびセキュリティの構成

第II部は次の章から構成されます。

- 第2章「Imaging APIへのクラス・パスの構成」

- 第3章「認証およびセキュリティ・ポリシーの構成」

2 Imaging APIへのクラス・パスの構成

この章では、Imaging APIのクラス・パスの構成方法、APIファイルをクライアント・ディレクトリにコピーする方法およびクラス・パスの設定方法について説明します。

この章の内容は次のとおりです。

- 2.1項「Imaging APIへのクラス・パスの構成」

- 2.2項「クライアント・ディレクトリへのAPIファイルのコピー」

- 2.3項「クラス・パスの設定」

2.1 Imaging APIへのクラス・パスの構成

Imaging APIは、imaging-client.jarという.jarファイルに含まれます。クライアント・コードで使用するImaging固有のクラスを取得するために必要な.jar参照はこれだけです。

imaging-client.jarファイルは、JAX-WS Webサービスの多数のインフラストラクチャ・クラスとOracle Web Service Managerのセキュリティに依存しています。このような依存性は、クライアントAPIがOracle JRF対応JEEコンテナからコールされると自動的に利用可能になります。

スタンドアロンJSEクライアントの場合は、imaging-client.jarが必要とするすべての外部依存関係が含まれたzipファイルがImagingにバンドルされています。スタンドアロンJSE環境で参照を構成する手順を次に示します。この手順ではOracle WebCenter Contentがサーバー・システムの$ORACLE_HOMEにインストールされており、クライアント・システムにはWebLogicまたはOracle WebCenter Contentのコンポーネントがインストールされていないことを想定しています。

スタンドアロンJSE環境で参照を構成する手順は次のとおりです。

1. $ORACLE_HOME/ipm/lib/ecm-client.zipをサーバーからクライアントの一時的なディレクトリにコピーします。

2. ecm-client.zipをクライアントのディレクトリに解凍します。このディレクトリは、クライアントの稼働環境にアクセス可能なlibディレクトリを含む必要があります。zipに含まれる.jarファイルは、コンパイル時および実行時の両方においてクラスパスで参照されます。一般的な方法としては、クライアントのsrcやクラスのディレクトリと並列のlibディレクトリに.jarファイルを配置します。

3. $ORACLE_HOME/ipm/lib/imaging-client.jarをサーバーからクライアントのlibディレクトリにコピーします。たとえば、これをecm-clientが解凍されるのと同じlibディレクトリにコピーします。

4. コンパイルおよび実行時のクラスパスは、ecm-client zipが解凍されたディレクトリからのimaging-client.jarおよびecm-client.jarを含みます。たとえば、imaging-client.jarおよびecm-client.jarの両方が、一般的なJavaプロジェクト・ディレクトリにあるプロジェクトのlibディレクトリにインストールされる場合、クラス・パスは次のようになります。

CLASSPATH = classes:lib/imaging-client.jar:lib/ecm-client.jar

ecm-client.jarは、ecm-client.zipが解凍されたディレクトリに含まれる必要があり、zipに含まれるすべてのファイルは、そのディレクトリ内で各ファイルが関連する場所に残る必要があります。ecm-client.jarはマニフェスト専用のjarであり、相対パスを使用して他のjarを参照します。zipに含まれる他のjarはクラスパスに含まれる必要はありませんが、ecm-client.jarのみはクラスパスに含まれる必要があります。将来のリリースでzipの内容が変更される可能性があるため、解凍されていない他のjarを参照することはお薦めしません。

2.2 クライアント・ディレクトリへのAPIファイルのコピー

スタンドアロンJSE環境で参照を構成する手順は次のとおりです。

1. $ORACLE_HOME/ipm/lib/ecm-client.zipをサーバーからクライアントの一時的なディレクトリにコピーします。

2. ecm-client.zipをクライアントのディレクトリに解凍します。このディレクトリは、クライアントの稼働環境にアクセス可能なlibディレクトリを含む必要があります。zipに含まれる.jarファイルは、コンパイル時および実行時の両方においてクラスパスで参照されます。一般的な方法としては、クライアントのsrcやクラスのディレクトリと並列のlibディレクトリに.jarファイルを配置します。

3. $ORACLE_HOME/ipm/lib/imaging-client.jarをサーバーからクライアントのlibディレクトリにコピーします。たとえば、これをecm-clientが解凍されるのと同じlibディレクトリにコピーします。

2.3 クラス・パスの設定

コンパイルおよび実行時のクラスパスは、ecm-client zipが解凍されたディレクトリからのimaging-client.jarおよびecm-client.jarを含みます。たとえば、imaging-client.jarおよびecm-client.jarの両方が、一般的なJavaプロジェクト・ディレクトリにあるプロジェクトのlibディレクトリにインストールされる場合、クラス・パスは次のようになります。

CLASSPATH = classes:lib/imaging-client.jar:lib/ecm-client.jar

ecm-client.jarは、ecm-client.zipが解凍されたディレクトリに含まれる必要があり、zipに含まれるすべてのファイルは、そのディレクトリ内で各ファイルが関連する場所に残る必要があります。ecm-client.jarはマニフェスト専用のjarであり、相対パスを使用して他のjarを参照します。zipに含まれる他のjarはクラスパスに含まれる必要はありませんが、ecm-client.jarのみはクラスパスに含まれる必要があります。将来のリリースでzipの内容が変更される可能性があるため、解凍されていない他のjarを参照することはお薦めしません。

3 認証およびセキュリティ・ポリシーの構成

この章では認証およびセキュリティ・ポリシーの概要と構成方法、基本認証用のSSL通信の指定方法、Imaging WebサービスへのOWSMセキュリティ・ポリシーの適用方法およびJava APIログインにおけるクライアント側セキュリティ・ポリシーを再構成する方法について説明します。

この章の内容は次のとおりです。

- 3.1項「認証およびセキュリティ・ポリシーの構成について」

- 3.2項「Basic認証のためのSSL通信の提供」

- 3.3項「Imaging WebサービスへのOWSMセキュリティ・ポリシーの適用」

- 3.4項「Java APIログインにおけるクライアント側セキュリティ・ポリシーの再構成」

3.1 認証およびセキュリティ・ポリシーの構成について

認証およびセッション管理の処理は使用される統合メソッドに応じて異なります。最初のインストール時には、Imaging WebサービスはOracle Web Service Managerのセキュリティ・ポリシーを適用せずに構成されます。セキュリティ・ポリシーが適用されない場合、サービスではHTTP Basic認証メカニズムかユーザー名トークン認証のいずれかを使用します。ただし、ユーザー資格情報(ユーザーIDとパスワード)がWebサービスのHTTPメッセージ・ヘッダー・メカニズムで送信されるBasic認証は、Secure Socket Layer (SSL)転送メカニズムが使用されていないかぎり、いかなる方法でも暗号化されないため、十分安全であるとは言えません。

3.2 Basic認証のためのSSL通信の提供

Imagingサーバー・インスタンスに対してSSLが適切に構成されていれば、すべてのWebサービス通信でSSLが強制的に使用されるようにImagingを構成できます。このためには、Imaging構成MBean、RequireBasicAuthSSLをtrueに設定します。デフォルトはfalseです。

注意:

RequireBasicAuthSSL設定は、HTTP Basic認証が使用されていない場合のみ適用されます。これはOWSMセキュリティ・ポリシーが適用されていないためです。

OWSMセキュリティ・ポリシーの使用

より高いレベルのセキュリティが望ましい場合、Imaging Webサービスは、次のOracle Webサービス管理(OWSM)セキュリティ・ポリシーをサポートしています。

- wss_username_token

- wss_username_token_over_ssl

- wss11_username_token_with_message_protection

セキュリティ・ポリシーをImaging Webサービスに適用する際には、DocumentContentServiceを除き、すべてのWebサービスに同じポリシーを適用する必要があります。DocumentContentServiceはOWSMセキュリティ・ポリシーと互換性のないストリーミングMTOMを使用するように設計されています。DocumentContentServiceのセキュリティはまず、OWSMセキュリティ・ポリシーを利用するLoginServiceによる別のステートフル・ログインを要求します。この情報は主としてWebサービスの直接コールにとって重要です。正しいログイン・シーケンスはネイティブのJava APIを使用した場合に自動的に発生します。

3.3 Imaging WebサービスへのOWSMセキュリティ・ポリシーの適用

セキュリティ・ポリシーをImaging Webサービスに適用するには、WebLogicサーバー管理コンソールから次の手順を実行します。

1. 管理コンソールにログインします。

2. 「デプロイメント」をクリックします。「デプロイメントの概要」ページが表示されます。

3. 「デプロイメント」表の「名前」列で「Imaging」の横にあるプラス(+)アイコンをクリックします。Imagingデプロイメントが展開されます。

4. DocumentContentServiceを除く「Webサービス」の下にある各Imaging Webサービスで次の操作を行います。

1. Webサービスを選択します。そのサービスの設定ページが表示されます。

2. 「構成」タブを選択します。「構成」タブがアクティブになります。

3. 「WS-Policy」タブを選択します。「WS-Policy」タブがアクティブになります。

4. 「このWebサービスに関連付けられているWS-Policyファイル」表の「サービスのエンドポイントおよび操作」列で目的のWebサービス・ポートをクリックします。「Webサービスのポリシーのタイプを構成」ページが表示されます。

5. 「OWSM」が選択されていることを確認し、「次へ」をクリックします。WebLogicポリシーがサポートされていないことに注意してください。「WebServiceポリシーの構成」ページIDが表示されます。

6. 「選択可能なエンドポイント・ポリシー」フィールドからサポートされているサービス・ポリシーを選択します。サポートされているポリシーのリストは、「Basic認証のためのSSL通信の提供」に記載されています。

7. 右矢印をクリックして、選択したポリシーを「選択されたエンドポイント・ポリシー」フィールドに移動します。ただし、選択するセキュリティ・ポリシーは1つのみにします。

8. 「終了」をクリックします。「デプロイメント計画の保存アシスタント」ページが表示されます。

9. 「OK」をクリックして、デプロイメント計画を保存します。

10. DocumentContentServiceを除くすべてのWebサービスに同じポリシーが割当てられるまで、それぞれのサービスについて、ステップ4を繰返します。

5. 「デプロイメント」をクリックして、「デプロイメント」ページに戻ります。

6. 「デプロイメント」表の「名前」列で「Imaging」の横にあるチェック・ボックスを選択し、「更新」をクリックします。「アプリケーション更新アシスタント」ページが開き、指定した新しいデプロイメント・プランが「デプロイメント・プランのパス」の隣に表示されます。

7. 「終了」をクリックします。新しいポリシーが適用され、デプロイメントが更新されます。

3.4 Java APIログインにおけるクライアント側セキュリティ・ポリシーの再構成

OWSMセキュリティ・ポリシーがImaging Webサービスに適用される場合、Java APIコードはBasicUserTokenクラスではなく、WsmUserTokenクラスを使用する必要があります。WsmUserTokenクラスはOWSMクライアント側のセキュリティ・ポリシーを構成するためのヘルパー・クラスで、正しいクライアント側ポリシーを設定するための静的定数のセットが含まれています。使用されているポリシーによっては、追加の構成設定も必要になる場合があります。様々な構成オプションの意味の詳細は、OWSMのドキュメントを参照してください。

例3-1のコード部分は、様々なポリシー・タイプのWsmUserTokenクラスの使用例を示しています。

例3-1 様々なポリシー・タイプのWsmUserTokenクラス

WsmUserToken userToken = new WsmUserToken ("weblogic", "weblogic");
userToken.setClientPolicy(WsmUserToken.USERNAME_TOKEN_POLICY);
ServicesFactory.login(userToken, wsurl);

第III部

Imagingのリポジトリでのドキュメントの管理

第III部は次の章から構成されます。

- 第4章「ドキュメントの作成」

- 第5章「ドキュメントの検索」

- 第6章「ドキュメントの取得」

- 第7章「ドキュメントの更新」

4 ドキュメントの作成

この章ではドキュメントの作成方法、アプリケーションをリストする方法、アプリケーションのプロパティおよびフィールド定義を取得する方法、ドキュメント内容のアップロード方法、ドキュメントのメタデータの指定方法、ドキュメント・サンプルの作成方法など、Imagingの基本的なタスクについて説明します。

この章の内容は次のとおりです。

- 4.1項「ドキュメントの作成について」

- 4.2項「アプリケーションのリスト」

- 4.3項「アプリケーション・プロパティとフィールド定義の取得」

- 4.4項「ドキュメント・コンテンツのアップロード」

- 4.5項「ドキュメントへのメタデータの提供」

- 4.6項「ドキュメント作成の例」

4.1 ドキュメントの作成について

Imagingシステムでアプリケーションおよびドキュメントを管理するには、Imaging APIであるApplicationServiceおよびDocumentServiceのインタフェースを使用します。すべてのドキュメントはImagingアプリケーションと関連付けられている必要があります。このアプリケーションで多くのデフォルト機能が定義されると、それらはこのアプリケーションに関連付けられた各ドキュメントに適用されます。このように、アプリケーションは単一のドキュメント・タイプを定義するテンプレートと考えることができます。一般的に、1つのタイプのドキュメント(請求書、提案書、契約書など)に対して1つのアプリケーションが作成されます。

この章では、リストのメカニズムや既存のアプリケーション定義を取得する方法、ドキュメントのアップロードや索引付けのメカニズムなど、アプリケーションでドキュメントの作成に使用されている基本的なメソッドの使い方を詳しく説明します。この章の最後にある例4-1に、ここで説明するトピックのサンプル・コードを示します。

4.2 アプリケーションのリスト

Imaging APIにはImagingシステム内で定義されるアプリケーションのリストを列挙するために、ApplicationService.listApplicationsおよびDocumentService.listTargetApplicationsの2つのメカニズムが用意されています。各操作は、ユーザーのセキュリティ設定に基づいてどのアプリケーションを返すかを指定する「Ability」パラメータを受け入れます。ただし、どのセキュリティ・フィルタが使用されるかだけは異なります。

ApplicationService.listApplicationsは、アプリケーション定義セキュリティに基づいてアプリケーションを戻します。Ability.VIEWは、呼出し側ユーザーが表示権限を持つすべてのアプリケーションを戻します。Ability.MANAGEパラメータは、ユーザーが削除または変更権限を持つアプリケーションをすべて戻します。この操作は本来、アプリケーション定義を管理するために書かれたコードのためにあります。

DocumentService.listTargetApplicationsは、アプリケーション内でのユーザーのドキュメント権限、つまりユーザーはそのアプリケーションで、ドキュメントの表示権限と作成権限のどちらを持つかに基づいてアプリケーションを戻します。クライアントがドキュメントを直接操作しているときには、この操作が最良の選択です。

これらの操作はどちらも、アプリケーションの数値IDとテキスト名を特定するNameIdオブジェクト、java.util.Listを戻します。

4.3 アプリケーション・プロパティとフィールド定義の取得

リスト・アプリケーションと同様、Imaging APIはアプリケーションのために定義されたフィールドの詳細を取得する2種類の操作、ApplicationService.getApplicationとDocumentService.getTargetApplicationを提供しています。これらの操作も、ユーザーがリクエストしたアプリケーションの取得を許可されているかどうかの判断に使用される権限によって使い分けられます。ApplicationService.getApplicationには、アプリケーションの表示権限が必要です。DocumentService.getTargetApplicationには、ドキュメントの表示権限が必要です。

Application.getApplication操作は、定義そのものを管理する際に使用するように意図されており、定義のどの部分が必要とされるかを指定するパラメータを提供します。各部分はSectionFlagのリストを渡すコンテナであるSectionSetを使用してリクエストされます。たとえば、アプリケーションのプロパティおよびフィールド定義のセクションを取得するために、コール側のコードは次のように定義されたSectionSetを渡します。

sectionSet =
Application.SectionSet.of(Application.SectionFlag.PROPERTIES,
Application.SectionFlag.FIELDDEFINITIONS);

しかし、DocumentService.getTargetApplicationは、一定のセクション・セットを戻します。このようなセクションはドキュメントでの作業に必要とされることが多いため、このセットには、プロパティとフィールド定義の両方が自動的に含まれます。

4.4 ドキュメント・コンテンツのアップロード

Imagingアプリケーションでのドキュメントの作成は2段階のプロセスです。最初の手順で、ドキュメントのバイナリ・データはDocumentContentService.uploadDocument操作を使用してImagingサーバーにアップロードされます。この操作により、固有のトークン(アップロード・トークン)が返され、これを使用して以降のDocumentService.createDocumentへのコールが行われて、アプリケーションにドキュメントの索引が作成されます。このuploadTokenは、ユーザーがログアウトするか、createDocumentまたはupdateDocumentコールに使用されるまで有効です。一度しか使用されない場合もあります。

アップロード操作はデータをjavax.activation.DataHandler形式で受け入れます。その後、ドキュメントのコンテンツをjavax.activation.DataSource (通常はjavax.activation.FileDataSource)としてラップします。javax.mail.utilパッケージにはInputStreamからドキュメントのコンテンツをラップできるByteArrayDataSourceも含まれています。ただし、ByteArrayDataSourceはアップロードの前にクライアント上のメモリにドキュメント全体をロードするため、大容量のドキュメントに使用する場合は注意が必要です。DataHandlersおよびDataSourcesの使用法の詳細は、javax.activation およびjavax.mail.utilパッケージのJavadocを参照してください。

4.5 ドキュメントへのメタデータの提供

Imaging APIのDocument.FieldValueクラスは、ドキュメントの索引付けの際にドキュメントのメタデータを提供するために使用されます。FieldValuesは、Document.FieldValueインスタンスのjava.util.Listとして、createDocumentに渡されます。リストのFieldValueはそれぞれ、アプリケーションのFieldDefinitionにマップされます。

Document.FieldValueオブジェクトは、NameId定義クラスがアプリケーション・フィールド定義にマッピングするようフィールドIDまたはフィールド名によって定義できるという点で、NameId定義クラスと同様に機能します。この両方が指定される場合、名前値ではなくID値が使用されます。

Document.FieldValueには、値のプロパティも含まれます。この値の型はフィールド定義のImaging FieldTypeと互換性がある必要があります。Imagingの値のタイプは、使用されるJavaタイプによって自動的に決定します。次の表に、Imagingのフィールド・タイプと互換性のあるJavaタイプの対応を示します。

Imagingのフィールド・タイプ

Javaタイプ

FieldType.Date

java.util.Date、java.util.GregorianCalendar

FieldType.Decimal

java.math.BigDecimal、float、decimal

FieldType.Number

Integer、Long,

FieldType.Text

String

表内では、太字のJavaタイプは、FieldTypeに関連付けられたネイティブ・タイプです。FieldValueは、表内の他のタイプをネイティブ・タイプに強制的に変更します。強制プロセスにおいて値の精度が失われる場合があるため、ネイティブ・タイプ以外のタイプを使用する際には注意が必要です。

FieldValuesをcreateDocumentとともに使用するときは、必須と定義されているフィールド値をすべて提供する必要があります。必須ではないフィールドについては、リストにFieldValueを含め、その値をnullに設定することにより、値を故意にnullにすることもできます。これを実行する場合、FieldValueは、Javaタイプnullに基づいて必要なフィールド・タイプを決定できないため、Imaging FieldTypeを受け入れるFieldValueコンストラクタを使用する必要があります。

4.6 ドキュメント作成の例

例4-1は、このセクションで説明した基本概念を示しています。

例4-1 テキスト

package devguidesamples;

import java.math.BigDecimal;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;

import oracle.imaging.Application;
import oracle.imaging.ApplicationService;
import oracle.imaging.BasicUserToken;
import oracle.imaging.Document;
import oracle.imaging.DocumentContentService;
import oracle.imaging.DocumentService;
import oracle.imaging.ImagingException;
import oracle.imaging.NameId;
import oracle.imaging.ServicesFactory;
import oracle.imaging.UserToken;

public class CreateDocumentSample {
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
DocumentService docService = servicesFactory.getDocumentService();
DocumentContentService docContentService =
servicesFactory.getDocumentContentService();
NameId invoicesAppNameId = null;

// List the viewable applications to confirm that "Invoices" exists
List<NameId> appsList =
docService.listTargetApplications(Document.Ability.CREATEDOCUMENT);
for (NameId nameId: appsList) {
if (nameId.getName().equals("Invoices")) {
invoicesAppNameId = nameId;
}
}
if (invoicesAppNameId == null) {
System.out.println("Invoices application not found.");
return;
}

// Upload document content
String fileName = "C:/PathToImages/invoice1234.tif";
DataHandler fileData = new DataHandler(new FileDataSource(fileName));
String uploadToken = docContentService.uploadDocument(fileData,
"invoice1234.tif");

// Index the document
List<Document.FieldValue> fieldValues = new
ArrayList<Document.FieldValue>();
fieldValues.add(new Document.FieldValue("Invoice Number", 1234));
fieldValues.add(new Document.FieldValue("Purchase Order", 4321));
fieldValues.add(new Document.FieldValue("Vendor", "Acme Supply"));
fieldValues.add(new Document.FieldValue("Amount", new
BigDecimal("99.95")));
fieldValues.add(new Document.FieldValue("Receive Date", new Date()));
docService.createDocument(uploadToken, invoicesAppNameId,
fieldValues, true);
}
finally {
if (servicesFactory != null) {
servicesFactory.logout();
}
}
}
catch (ImagingException e) {
System.out.println(e.getMessage());
}
}
}

5 ドキュメントの検索

この章の内容は次のとおりです。

- 5.1項「ドキュメントの検索について」

- 5.2項「保存済検索のリスト」

- 5.3項「検索引数の指定」

- 5.4項「検索の実行」

- 5.5項「検索結果の解析」

- 5.6項「検索の実行例」

5.1 ドキュメントの検索について

Imaging APIは保存済検索の列挙と実行のためのSearchServiceを提供します。保存済の検索の実行にはユーザーが検索のNameIdと、検索のSearchArgumentsオブジェクトのリストを指定する必要があります。これらの引数が検索のWHERE句の様々な部分を構成します。これらはSearchService. executeSavedSearch操作に渡され、Search.ResultSetが返されます。この章の最後にある例5-1に、ここで説明するトピックのサンプル・コードを示します。

5.2 保存済検索のリスト

Imaging APIはログインしたユーザーが使用できる検索をリストする、SearchService.listSearchesメソッドを提供します。この操作は、ユーザーのセキュリティ設定に基づいてどのアプリケーションを返すかを指定するAbilityパラメータを受け入れます。検索定義セキュリティに基づき、アプリケーションを返します。Ability.VIEWは、呼出し側ユーザーが表示権限を持つすべての検索を返します。Ability.MANAGEパラメータは、ユーザーが削除または変更権限を持つすべての検索を返します。

この操作は、検索の数値IDとテキスト名の両方を特定するNameIdオブジェクト、java.util.Listを戻します。

5.3 検索引数の指定

保存済検索は、Imagingが検索のWHERE句にアセンブルする1つ以上の検索パラメータを定義できます。Imaging APIではこうしたパラメータの引数を渡すためにSearchArgumentクラスが使用されます。SearchArgumentのコンストラクタはパラメータの名前と、その値を指定するSearchValueオブジェクトを受け入れます。引数の演算子はSearchArgument.setOperatorメソッドを使用して指定する必要があります。

複数のSearchArgumentsはjava.util.Listとして渡されます。リスト内の引数の順序は重要ではありません。

SearchService.getSearchParametersをコールし、検索のNameIdを渡すと、SearchParametersが戻されます。これにより、検索によって定義されたパラメータが定義され、検索の実行に必要なSearchArgumentsを構築しやすくなります。また、SearchParametersは各パラメータが必要であるかどうかも定義します。

5.4 検索の実行

SearchService.executeSavedSearchメソッドは検索結果をSearch.ResultSetの形式で返します。列ラベルは、順序付けされたjava.util.Listストリングを返すgetColumnsメソッドのSearch.Resultで利用できます。

5.5 検索結果の解析

結果の行はjava.util.List of Search.Resultオブジェクトを返すSearch.Results getResultsメソッドから利用できます。各Search.Resultは、検索により検出された単一のドキュメントを表します。

検索結果列は、TypedValuesの順序付けリストであるgetColumnValuesにより返されます。この順序は列ラベルのリストの順序と一致します。ドキュメントのシステム・フィールド値は、Search.Result.getDocumentにより返されるDocumentオブジェクトからアクセスできます。

5.6 検索の実行例

例5-1は、このセクションで説明した基本概念を示しています。

例5-1 検索の実行例

package devguidesamples;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import oracle.imaging.BasicUserToken;
import oracle.imaging.ImagingException;
import oracle.imaging.NameId;
import oracle.imaging.Search;
import oracle.imaging.SearchArgument;
import oracle.imaging.SearchService;
import oracle.imaging.SearchValue;
import oracle.imaging.ServicesFactory;
import oracle.imaging.TypedValue;
import oracle.imaging.UserToken;

public class ExecuteSearchSample {
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
SearchService searchService = servicesFactory.getSearchService();

NameId invoiceSearchNameId = null;

// List the viewable applications to confirm that "Invoices" exists
List<NameId> searchList =
searchService.listSearches(Search.Ability.VIEW);
for (NameId nameId: searchList) {
if (nameId.getName().equals("Invoices")) {
invoiceSearchNameId = nameId;
}
}

if (invoiceSearchNameId == null) {
System.out.println("Invoices search not found.");
return;
}

SearchValue searchValue = new SearchValue(SearchValue.Type.NUMBER, 1234);
SearchArgument searchArgument =
new SearchArgument("Invoice Number", searchValue);
searchArgument.setOperatorValue(Search.Operator.EQUAL);

List<SearchArgument> searchArguments =
new ArrayList<SearchArgument>();
searchArguments.add(searchArgument);

Search.ResultSet resultSet = searchService.executeSavedSearch(invoiceSearchNameId,searchArguments);

// Display Column Headers
System.out.print("DocumentId" + "  ");
for (String column: resultSet.getColumns()) {
System.out.print(column + "  ");
}
System.out.println();

// Display result Rows
for (Search.Result row: resultSet.getResults()) {
System.out.println(row.getDocument().getId());
for (TypedValue typedValue: row.getColumnValues()) {
System.out.print(typedValue.getStringValue() + "  ");
}
System.out.println();
}
}
finally {
if (servicesFactory != null) {
servicesFactory.logout();
}
}
}
catch (ImagingException e) {
System.out.println(e.getMessage());
}
}
}

6 ドキュメントの取得

この章の内容は次のとおりです。

- 6.1項「ドキュメントの取得について」

- 6.2項「オリジナル・ドキュメントの取得」

- 6.3項「注釈付きドキュメントのレンディションの取得」

- 6.4項「ドキュメントからページを個別に取得」

- 6.5項「ドキュメント取得の例」

6.1 ドキュメントの取得について

Imaging APIには、DocumentContentServiceでドキュメントを取得するための操作がいくつか用意されています。すべての取得方法は一意のドキュメントIDを入力として受け付け、ドキュメントのコンテンツをjavax.activation.DataHandlerとして戻します。

DataHandlerの結果を処理するとき、コール側コードは、DataHandlerをサーバーへのオープン・ストリームの周りにあるラッパーであると仮定し、DataHandler.writeToメソッドを使用して、このコンテンツをファイルなどの出力ストリームに維持するか、またはDataHandler.getInputStreamメソッドを使用して、入力ストリームを直接読み込むことにより、即座に結果を処理します。入力ストリームに直接アクセスする場合、ストリームの読込みが完了したら、忘れずにコール側でストリームをクローズします。

ネイティブ・フォーマットのオリジナル・ドキュメントでレンダリング操作を実行するときの取得方法の中には、レンダリング・プロセスをコントロールするための追加パラメータを受け付けるものもあります。この章の最後にある例6-1に、ここで説明するトピックのサンプル・コードを示します。

6.2 オリジナル・ドキュメントの取得

元のドキュメントはDocumentContentService.retrieve操作により取得されます。この操作は単純な取得メソッドで、引数としてドキュメントIDのみをとります。DataHandlerとして、ドキュメントのバイナリ・コンテンツが返されます。この場合、Imagingレンダリング・エンジンはドキュメントに対して何の処理も行いません。ただし、関連付けられているセキュアな注釈がドキュメントにあり、コール側ユーザーがこうした注釈を削除する権限を持っていない場合は、この操作により例外が返されます。

6.3 注釈付きドキュメントのレンディションの取得

ドキュメントは、関連付けられた注釈とともにDocumentContentService.retrieveRendition操作によってレンダリングできます。この操作はdocumentIdや、注釈を含めるかどうかを示すフラグなど、多くの引数を受け入れます。また、レンダリング対象とするページ・セットを指定するパラメータも含みます。このパラメータに複数のページを指定すると、それらのページのみを含む単一のマルチページ・ドキュメントになります。このパラメータにNULLまたはページ0を渡すと、ドキュメント全体がレンダリングされます。このメソッドに対するパラメータの詳細は、retrieveRenditionのJavadocを参照してください。

retrieveRenditionメソッドは、レンディション・クラス・インタフェースを戻します。ドキュメントのコンテンツを含むDataHandlerには、Rendition.getContent()メソッドからアクセスできます。

6.4 ドキュメントからページを個別に取得

retrieveRenditionメソッドは、ドキュメントの複数ページにわたるレンディションを1つ戻すために使用されますが、個々のページを取得するにはDocumentContentService.retrievePageを使用します。このメソッドでは、RenderOptionsクラス・インスタンスを受け入れて、どのようにページをレンダリングするかをコントロールできます。RenderOptionsには、ページの回転、ページの拡大縮小、fitモード、出力形式などを指定するためのオプションが用意されています。

retrievePageメソッドは、RenderPageのリストを含むRenderResultクラス・インスタンスを戻します。ページのDataHandlerコンテンツには、RenderPage.getPageData()からアクセスできます。

6.5 ドキュメント取得の例

例6-1は、このセクションで説明した基本概念を示しています。

例6-1 ドキュメント取得の例

package devguidesamples;

import java.io.FileOutputStream;

import java.io.IOException;
import java.io.InputStream;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import javax.activation.DataHandler;

import oracle.imaging.BasicUserToken;
import oracle.imaging.DocumentContentService;
import oracle.imaging.DocumentService;
import oracle.imaging.ImagingException;
import oracle.imaging.NameId;
import oracle.imaging.RenderOptions;
import oracle.imaging.RenderPage;
import oracle.imaging.RenderResult;
import oracle.imaging.Rendition;
import oracle.imaging.Search;
import oracle.imaging.SearchArgument;
import oracle.imaging.SearchService;
import oracle.imaging.SearchValue;
import oracle.imaging.ServicesFactory;
import oracle.imaging.UserToken;

public class RetrieveDocumentSample {
public static void main(String[] args)
throws IOException {
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
SearchService searchService = servicesFactory.getSearchService();
DocumentContentService docContentService =
servicesFactory.getDocumentContentService();

// The find the document with invoice number 1234 using the Invoices search
List<SearchArgument> searchArguments = new ArrayList<SearchArgument>();
SearchValue searchValue = new SearchValue(SearchValue.Type.NUMBER, 1234);
SearchArgument searchArgument = new SearchArgument("Invoice Number", searchValue);
searchArgument.setOperatorValue(Search.Operator.EQUAL);
searchArguments.add(searchArgument);
Search.ResultSet resultSet =
searchService.executeSavedSearch(new NameId("Invoices"), searchArguments);
if (resultSet.getTotalResults() == 0) {
System.out.println("Document not found");
}
String documentId = resultSet.getResults().get(0).getDocumentId();
String documentName = resultSet.getResults().get(0).getDocument().getName();

DataHandler fileData = null;
FileOutputStream outputStream = null;

// retrieve original native document content.
fileData = docContentService.retrieve(documentId);
outputStream = new FileOutputStream(documentName);
fileData.writeTo(outputStream);
outputStream.close();

// Retrieve a document rendition with annotations
Rendition rendition = docContentService.retrieveRendition(documentId,
true,
true,
RenderOptions.RenditionOutput.ORIGINALORTIFF,
null);

fileData = rendition.getContent();
outputStream = new FileOutputStream(documentName);
fileData.writeTo(outputStream);
outputStream.close();

//Render a specific page to JPEG format.
RenderOptions renderOptions = new RenderOptions();
renderOptions.setPageNumber(2);
renderOptions.setFormat(RenderOptions.OutputFormat.JPEG);
RenderResult result = docContentService.retrievePage(documentId, renderOptions);
RenderPage page = result.getPages()[0];

fileData = page.getPageData();
outputStream = new FileOutputStream(documentName);
fileData.writeTo(outputStream);
outputStream.close();
}
finally {
if (servicesFactory != null) {
servicesFactory.logout();
}
}
}
catch (ImagingException e) {
System.out.println(e.getMessage());
}
}
}

7 ドキュメントの更新

この章の内容は次のとおりです。

- 7.1項「ドキュメントの更新について」

- 7.2項「改訂されたドキュメント・コンテンツのアップロード」

- 7.3項「ドキュメントのメタデータの更新」

- 7.4項「ドキュメント更新の例」

7.1 ドキュメントの更新について

Imaging APIはドキュメントのメタデータとドキュメントのコンテンツの両方を更新するためのDocumentService.updateDocument操作を提供します。この操作はDocumentContentService.uploadDocument操作から返されるuploadTokenと、フィールド値の変更が含まれるFieldValueインスタンスのリストの両方を受け入れます。これらのパラメータのいずれか、または両方が提供されますが、これは、更新がフィールド値のみの更新の場合と、ドキュメントのコンテンツのみの更新の場合と、フィールド値とコンテンツの両方の更新の場合があることを意味します。この章の最後にある例7-1に、ここで説明するトピックのサンプル・コードを示します。

7.2 改訂されたドキュメント・コンテンツのアップロード

Imagingアプリケーションでのドキュメントの作成更新は2段階のプロセスです。最初の手順で、ドキュメントのバイナリ・データはDocumentContentService.uploadDocument操作を使用してImagingサーバーにアップロードされます。この操作により、固有のアップロード・トークンが返され、これを使用して以降のDocumentService.updateDocumentへのコールが行われて、アプリケーションにドキュメントの索引が作成されます。このuploadTokenは、ユーザーがログアウトするか、createDocumentまたはupdateDocumentコールに使用されるまで有効です。一度しか使用されない場合もあります。

7.3 ドキュメントのメタデータの更新

Imaging APIのDocument.FieldValueクラスは、ドキュメントの索引付けの際にドキュメントのメタデータを提供するために使用されます。FieldValuesは、Document.FieldValueインスタンスのjava.util.Listとして、udpateDocumentに渡されます。リストのFieldValueはそれぞれ、アプリケーションのFieldDefinitionにマップされます。

Document.FieldValueオブジェクトは、NameId定義クラスがアプリケーション・フィールド定義にマッピングするようフィールドIDまたはフィールド名によって定義できるという点で、NameId定義クラスと同様に機能します。この両方が指定される場合、名前値ではなくID値が使用されます。

Document.FieldValueには、値のプロパティも含まれます。この値の型はフィールド定義のImaging FieldTypeと互換性がある必要があります。Imagingの値のタイプは、使用されるJavaタイプによって自動的に決定します。次の表に、Imagingのフィールド・タイプと互換性のあるJavaタイプの対応を示します。

Imagingのフィールド・タイプ

Javaタイプ

FieldType.Date

java.util.Date、java.util.GregorianCalendar

FieldType.Decimal

java.math.BigDecimal、float、decimal

FieldType.Number

Integer、Long,

FieldType.Text

String

表内では、太字のJavaタイプは、FieldTypeに関連付けられたネイティブ・タイプです。FieldValueは、表内の他のタイプをネイティブ・タイプに強制的に変更します。強制プロセスにおいて値の精度が失われる場合があるため、ネイティブ・タイプ以外のタイプを使用する際には注意が必要です。

FieldValuesをupdateDocumentとともに使用する場合、リストは、ドキュメントのアプリケーションで定義されたすべてのフィールドを含む必要はありません。変更が必要なフィールド値のみ指定する必要があります。また、ドキュメントを更新するときには、指定されていないフィールドは無視されます。必須と定義されていないフィールドについては、リストにFieldValueを含め、その値をnullに設定することにより、値を故意にnullにすることもできます。これを実行する場合、FieldValueは、Javaタイプnullに基づいて必要なフィールド・タイプを決定できないため、Imaging FieldTypeを受け入れるFieldValueコンストラクタを使用する必要があります。

7.4 ドキュメント更新の例

例7-1は、このセクションで説明した基本概念を示しています。

例7-1 ドキュメント更新の例

package devguidesamples;

import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;

import oracle.imaging.BasicUserToken;
import oracle.imaging.Document;
import oracle.imaging.DocumentContentService;
import oracle.imaging.DocumentService;
import oracle.imaging.ImagingException;
import oracle.imaging.NameId;
import oracle.imaging.RenderOptions;
import oracle.imaging.RenderPage;
import oracle.imaging.RenderResult;
import oracle.imaging.Rendition;
import oracle.imaging.Search;
import oracle.imaging.SearchArgument;
import oracle.imaging.SearchService;
import oracle.imaging.SearchValue;
import oracle.imaging.ServicesFactory;
import oracle.imaging.TypedValue;
import oracle.imaging.UserToken;

public class UpdateDocumentSample {
public static void main(String[] args)
throws IOException {
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
SearchService searchService = servicesFactory.getSearchService();
DocumentService docService = servicesFactory.getDocumentService();
DocumentContentService docContentService =
servicesFactory.getDocumentContentService();

// The find the document with invoice number 1234 using the Invoices search
List<SearchArgument> searchArguments = new ArrayList<SearchArgument>();
SearchValue searchValue = new SearchValue(SearchValue.Type.NUMBER, 1234);
SearchArgument searchArgument = new SearchArgument("Invoice Number", searchValue);
searchArgument.setOperatorValue(Search.Operator.EQUAL);
searchArguments.add(searchArgument);
Search.ResultSet resultSet =
searchService.executeSavedSearch(new NameId("Invoices"), searchArguments);
if (resultSet.getTotalResults() == 0) {
System.out.println("Document not found");
}
String documentId = resultSet.getResults().get(0).getDocumentId();
// update field values only.
List<Document.FieldValue> fieldValues = new ArrayList<Document.FieldValue>();
fieldValues.add(new Document.FieldValue("Amount", new BigDecimal("99.95")));
docService.updateDocument(documentId, null, fieldValues, false);

// update document content
String fileName = "C:/PathToImages/NewInvoice1234.tif";
DataHandler fileData = new DataHandler(new FileDataSource(fileName));
String uploadToken = docContentService.uploadDocument(fileData, "invoice1234.tif");
docService.updateDocument(documentID, uploadToken, null, false);

// update field values and document content at once
fieldValues = new ArrayList<Document.FieldValue>();
fieldValues.add(new Document.FieldValue("Receive Date", new Date())); //now
fileName = "C:/PathToImages/AnotherNewInvoice1234.tif";
fileData = new DataHandler(new FileDataSource(fileName));
uploadToken = docContentService.uploadDocument(fileData, "invoice1234.tif");
docService.updateDocument(documentID, uploadToken, fieldValues, false);
}
finally {
if (servicesFactory != null) {
servicesFactory.logout();
}
}
}
catch (ImagingException e) {
System.out.println(e.getMessage());
}
}
}

第IV部

ユーザーの環境へのImagingの統合

第IV部は次の章から構成されます。

- 第8章「Imaging APIをPure Webサービスとして使用」

- 第9章「ImagingとBPELの統合」

- 第10章「URLツールを使用したユーザー・インタフェース機能へのアクセス」

- 第11章「RESTページ・レンディション・リクエストの作成」

8 Imaging APIをPure Webサービスとして使用

この章の内容は次のとおりです。

- 8.1項「Pure WebサービスとしてのImaging APIの使用について」

- 8.2項「ステートレス・セッションでのWebサービスの使用」

- 8.3項「ステートフル・セッションでのWebサービスの使用」

- 8.4項「AXF Webサービスの使用」

8.1 Pure WebサービスとしてのImaging APIの使用について

Imagingサービスの活用に最も便利な方法はネイティブのJava APIですが、ほとんどがImaging Webサービス・セットにコールを折返すプロキシ・クラスとユーティリティ・クラスのセットです。ネイティブJava APIにより公開されている機能はすべて、ダイレクトWebサービス・コールから利用できます。ダイレクトWebサービスを経由してAPIを使用するには、WSDLドキュメントとWebサービスを呼び出す環境固有のテクニックを深く理解する必要があります。

8.1.1 WebサービスWSDLの検索

Imaging Webサービスの起動方法を理解するには、まず、WSDLドキュメントがどこにあるかを知らなければなりません。次のリストは、ImagingサービスのWSDLの場所をまとめたものです。ホスト名およびポート番号は、インストールによって異なります。

- http://<ipmhost>:<port>/imaging/ws/ApplicationService?wsdl

- http://<ipmhost>:<port>/imaging/ws/ConnectionService?wsdl

- http://<ipmhost>:<port>/imaging/ws/DocumentContentService?wsdl

- http://<ipmhost>:<port>/imaging/ws/DocumentService?wsdl

- http://<ipmhost>:<port>/imaging/ws/ImportExportService?wsdl

- http://<ipmhost>:<port>/imaging/ws/LoginService?wsdl

- http://<ipmhost>:<port>/imaging/ws/PreferenceService?wsdl

- http://<ipmhost>:<port>/imaging/ws/SearchService?wsdl

- http://<ipmhost>:<port>/imaging/ws/SecurityService?wsdl

- http://<ipmhost>:<port>/imaging/ws/TicketService?wsdl

8.2 ステートレス・セッションでのWebサービスの使用

Imaging Webサービスの大半は、ステートレス・モード、ステートフル・モードのどちらでも動作します。ステートレス・モードでは、それぞれのサービス・リクエストで渡された認証資格証明書を使用して、ユーザーのログイン、リクエストされた操作の実行、ログアウトが透過的に行われ、その後、戻ります。

8.3 ステートフル・セッションでのWebサービスの使用

ステートフル操作では、まず、LoginService.login操作がコールされ、Imagingとのユーザー・セッションが確立されます。ログイン・メソッドへの資格証明は、そのときに有効なセキュリティ・ポリシーにより、ポリシーが適用されていない場合はHTTP Basic認証経由で提供されます。

ログイン操作により返されたjsessionid cookieは、その後、他のサービスを呼び出すために渡されます。こうすることにより、コールからコールへのセッション状態が維持されます。Webサービス・セキュリティは、OWSMセキュリティのポリシー強制に適合するために各コールがユーザー資格証明を渡すことを要求します。LoginService.logoutへのコールにより、ユーザー・セッションは終了します。

前述のとおり、ほとんどのImagingサービスはどちらかのモードで動作します。ただし、DocumentContentServiceは例外です。DocumentContentService操作は、ストリームMessage Transmission Optimization Mechanism (MTOM) 機能を使用できますが、この機能にはOWSMセキュリティ・ポリシーとの互換性がありません。したがって、DocumentContentService操作に適切なセキュリティを提供するには、ステートフル・モードが必要です。

8.4 AXF Webサービスの使用

AXF Serverサービスとの接続のためにWSDLファイルを生成できます。WSDLファイルは、AXFサーバー・サービスが理解できるデータを渡す能力を提供します。これにより、WebCenter Content内の様々なコマンドにアクセスできるようになります。

8.4.1 AXF WebサービスのWSDLファイルのロケーティング

AXF Webサービス・ファイルは、次の場所にあります。ホスト名およびポート番号は、インストールによって異なります。

http://<host>:<port>/axf-ws2/AxfSolutionMediatorService?wsdl

注意:

上のURLは、IPMサーバーでのみ有効です。

8.4.2 WSDLファイル構造

WSDLファイルは、正式には、Webサービスに渡されるデータの説明を含む要素を使って構造化されています。この構造により、送信側アプリケーションと受信側アプリケーションの両方が、交換されているデータを解析できるようになります。

WSDL要素には、データに対して実行される操作の説明とプロトコルまたはトランスポートへのバインディングが含まれます。これにより、受信側アプリケーションは、データを処理しながら、データに応答するまたはデータを戻す方法を解析できるようになります。各WSDL要素に追加のサブ要素が含まれることもあります。

WSDLファイル構造に含まれる要素を大別すると次のようになります。

- データ型: 一般に、メッセージで使用されるXMLスキーマの形式を取ります。

- メッセージ: 完全なドキュメント、またはメソッド起動にマップされる引数として、メッセージの形式をとるデータの定義。

- ポート・タイプ: アドレスにマップされる操作のセット。バインディングに使用される操作のコレクションを定義します。

- バインディング: 特定のポート・タイプにおける操作とメッセージで実際に使用されるプロトコルとデータ形式。

- サービスとポート: サービスは、ポートにバインディングをマップします。また、ポートは通信交換に使用されるバインディングとネットワーク・アドレスの組合せです。

8.4.3 データ型

データ型<types>は複合型および関連する要素を定義します。Webサービスは、単純データ型(文字列、整数、ブールなど)と複合データ型の両方をサポートします。複合型は、いくつかの単純型、またはサブ要素の配列を含む構造化XML文書です。

次のAxfRequestセットのコード部分では、要素CommandNamesapce、solutionNamespace、requestParameters、UserContext、およびusernameを定義し、これらを文字列に指定しています。

<xs:complexType name="axfRequest">
<xs:sequence>
<xs:element name="commandNamespace" type="xs:string"
minOccurs="0" />
<xs:element name="conversationId" type="xs:string"
minOccurs="0" />
<xs:element name="requestParameters">
<xs:complexType>
<xs:sequence>
<xs:element name="entry" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="key" minOccurs="0"
type="xs:string" />
<xs:element name="value" minOccurs="0"
type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="role" type="xs:string" minOccurs="0" />
<xs:element name="solutionNamespace" type="xs:string"
minOccurs="0" />
<xs:element name="systemName" type="xs:string" minOccurs="0" />
<xs:element name="userContext">
<xs:complexType>
<xs:sequence>
<xs:element name="entry" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="key" minOccurs="0"
type="xs:string" />
<xs:element name="value" minOccurs="0"
type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="username" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>

同様に、次のAxfResponseセットのコード部分では、要素ConversationId、Errorcode、ErrorMessage、およびresponseCommandsを定義し、これらを文字列に指定しています。

<xs:complexType name="executeResponse">
<xs:sequence>
<xs:element name="response" type="tns:axfResponse"
minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="axfResponse">
<xs:sequence>
<xs:element name="conversationId" type="xs:string"
minOccurs="0" />
<xs:element name="errorCode" type="xs:string" minOccurs="0" />
<xs:element name="errorMessage" type="xs:string"
minOccurs="0" />
<xs:element name="pid" type="xs:string" minOccurs="0" />
<xs:element name="responseCommands" type="tns:responseCommand"
nillable="true" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="responseCommand">
<xs:sequence>
<xs:element name="command" type="xs:string" minOccurs="0" />
<xs:element name="value" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>

8.4.4 メッセージ

メッセージ<message>は、メソッド起動にマップされる引数としてデータを定義します。

<message name="execute">
<part name="parameters" element="tns:execute" />
</message>
<message name="executeResponse">
<part name="parameters" element="tns:executeResponse" />
</message>

8.4.5 ポート・タイプ

ポート・タイプ<portType>は、バインディングに使用される操作のコレクションを定義します。DocInfo.wsdlファイルは、DocInfoSoapとDocInfo操作名(メソッド名)を、メッセージを処理するためのI/O情報とともに提供します。

<portType name="AxfSolutionMediatorWS">
<operation name="execute">
<input message="tns:execute" />
<output message="tns:executeResponse" />
</operation>
</portType>

8.4.6 バインディング

バインディング<binding>は、特定のポート・タイプにおける操作とメッセージで実際に使用されるプロトコルとデータ形式を定義します。

<binding name="AxfSolutionMediatorPortBinding" type="tns:AxfSolutionMediatorWS">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
<operation name="execute">
<soap:operation soapAction="execute" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>

8.4.7 サービスとポート

サービス<service>はポートにバインディングをマップします。ポートは、バインディングと、通信交換に使用されるネットワーク・アドレスの組合せです。ポートは、定義済トランスポート上でポート・タイプ(操作)のセットを公開するために使用されます。

<service name="AxfSolutionMediatorService">
<port name="AxfSolutionMediatorPort" binding="tns:AxfSolutionMediatorPortBinding">
<soap:address location="http://&lt;MachineName&gt;:&lt;Port&gt;/axf-ws2/AxfSolutionMediatorService" />
</port>
</service>

9 ImagingとBPELの統合

この章の内容は次のとおりです。

- 9.1項「ImagingとBPELの統合について」

- 9.2項「BPELプロセスからのImaging Webサービスの起動」

- 9.3項「BPELプロセスからのImaging Webサービスの更新」

9.1 ImagingとBPELの統合について

ワークフローの統合ポイント、接続の構成、セキュリティおよびフォルトのレポートの詳細は、『Oracle WebCenter Content Imaging管理者ガイド』を参照してください。

9.2 BPELプロセスからのImaging Webサービスの起動

ImagingとBPEL間の考えられる統合ポイントの1つは、Imagingに格納されているドキュメントのメタデータを使用して新しいプロセス・インスタンスを作成するための、ワークフロー・エージェントからBPELへのサービス・コールです。逆にBPELプロセスがImagingにWebサービス・コールを行うことも可能です。こうしたコールにより、最新のドキュメント・メタデータや追加メタデータを取得したり、ドキュメント・メタデータを更新してプロセス・インスタンスの実行中に行われた変更を同期化できます。

BPELからどのImaging Webサービスをコールしても、その手順はいつも同じです。

1. 設計のコンポジット・ダイアグラムで、「コンポーネント・パレット」から「Webサービス」サービス・アダプタを選択し、「外部参照」スイムレーンにドラッグします。

2. サービスの名前とWSDL URLを入力します。Imaging WebサービスWSDLSは次の形式を取ります。
http://<host>:<port>/imaging/ws/<service>?wsdl

ここで、<service>は、可能性のあるImaging Webサービス・エンド・ポイントの1つ(ApplicationService、DocumentServiceなど)です。

3. コンポジット・ダイアグラムで、BPELプロセスを、新しく作成した外部参照にリンクします。

4. BPELプロセス・ダイアグラムを開きます。このダイアグラムの「パートナ・リンク」スイムレーンに、コンポジットに追加された外部参照が表示されます。

5. このダイアグラムにInvokeアクティビティを追加し、Webサービス・パートナ・リンクにリンクします。

6. 「起動」ダイアログで、目的の操作を選択し、「入力」および「出力」変数の横にある+ボタンをクリックして、Invokeアクティビティをリンクします。

7. 「OK」をクリックします。ダイアログ・ボックスが閉じられます。

8. BPELプロセス・ダイアグラムのInvokeアクティビティの前にTransformアクティビティを追加します。

9. Transformアクティビティのプロパティで、プロセスから適切なソース変数を選択し、ターゲット変数として、ステップ5で作成したInvokeアクティビティの入力変数を選択します。

10. 「マッパー・ファイル」の横にある+をクリックして、プロセス・データをWebサービスの入力ペイロードへトランスフォーメーション・マッピングする方法を定義します。

11. Imaging Webサービスの起動から出力が返されることを想定している場合は、Invokeの後にTransformまたはAssignアクティビティを使用して、Invoke出力変数からプロセス変数にデータを転送します。

9.3 BPELプロセスからのImaging Webサービスの更新

前述のとおり、BPELインスタンス変数からImaging Webサービス入力変数への変換定義は、関連する具体的なスキーマに左右される複合的なトピックです。しかし、ドキュメント・メタデータの更新はBPELからImagingへの相互作用で一般的によく見られるケースであるため、例9-1に、ドキュメント・フィールドの値の変更に使用されるDocumentService.updateDocument操作で変換がどのように定義されるか、その一例を示します。

例9-1 DocumentService.updateDocumentの起動例

この例では、注文書ドキュメントがImagingに索引付けされ、承認プロセスにBPELプロセス・インスタンスが作成されます。承認プロセスの実行中、このインスタンスは承認または拒否されます。プロセスの最後に、承認ステータスと、このステータスを設定したユーザーの名前を使って、Imagingを更新する必要があります。この例で想定している構成は次のとおりです。

「アプリケーション定義」には次のフィールドが含まれます。

- PurchaseOrder: id=1, type string

- ApprovedBy: id=2, type string

- ApprovedStatus: id=3, type string

BPELプロセス変数は、次のように定義されます。

<element name="process">
<complexType>
<sequence>
<element name="docId" type="string"/>
<element name="docURL" type="string"/>
<element name="poNumber" type="string"/>
<element name="approvedBy" type="string"/>
<element name="approvedStatus" type="string"/>
</sequence>
</complexType>
</element>

外部パートナ・リンクは、ドキュメント・サービスWSDLを使用して、次のように定義されます。

http://host:port/imaging/ws/DocumentService?wsdl.

updateDocument操作のペイロード・タイプは次のように定義されます。

<xs:complexType name="updateDocument">
<xs:sequence>
<xs:element name="documentId" type="xs:string" minOccurs="0"/>
<xs:element name="uploadToken" type="xs:string" minOccurs="0"/>
<xs:element name="fieldValues" type="tns:FieldValue"
minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="updateAnnotations" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>

ドキュメント・フィールドの値を変更するために、重要な要素はドキュメント化された要素とfieldValues要素です。FieldValueの型および型参照は次のように定義されます。

<xs:complexType name="FieldValue">
<xs:complexContent>
<xs:extension base="tns:baseId">
<xs:sequence>
<xs:element name="value" type="tns:TypedValue" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="id" type="xs:long" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TypedValue">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="type" type="tns:FieldType"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="FieldType">
<xs:restriction base="xs:string">
<xs:enumeration value="TEXT"/>
<xs:enumeration value="NUMBER"/>
<xs:enumeration value="DECIMAL"/>
<xs:enumeration value="DATE"/>
</xs:restriction>
</xs:simpleType>

FieldValueのXSDは一見、複雑ですが、次のFieldValueのXMLインスタンス例を見ると、実は非常にシンプルであることがわかります。

<fieldValues name=”ApprovedStatus”, id=”3”>
<value type=”TEXT”>
APPROVED
</value>
</fieldValues>

fieldValuesノードのnameとid属性は、変更されるドキュメント・フィールド値の名前とIDです。実際は、フィールドを識別するには、どちらか1つを指定すれば十分です。value要素はドキュメント・フィールドの新しい値を提供し、type属性(TEXT、NUMBER、DECIMAL、またはDATE)は提供されるデータのImagingタイプを示します。

updateDocumentタイプXSDは、fieldValuesがバインドされていないmaxOccurs属性を持つことを示します。実際、このサービスは、変更されているドキュメント・フィールド値1つにつき、要素のインスタンスは1つであると想定しています。変更中ではないフィールド値を提供する必要はありません。

最後に、BPELプロセスでのXSL変換は、updateDocumentでBPELインスタンス変数からdocumentIdへdocId要素を割当て、BPELプロセス変数のApprovedByおよびApprovedStatusの値を2つのFieldValue要素に変換する必要があります。この変換は、次のように定義されます。

<xsl:template match="/">
<tns:updateDocument>
<documentId>
<xsl:value-of select="/client:process/client:docId"/>
</documentId>
<xsl:for-each select="/client:process/client:approvedBy">
<fieldValues>
<xsl:attribute name="name">
<xsl:text>ApprovedBy</xsl:text>
</xsl:attribute>
<value>
<xsl:attribute name="type">
<xsl:text>TEXT</xsl:text>
</xsl:attribute>
<xsl:value-of select="/client:process/client:approvedStatus"/>
</value>
</fieldValues>
</xsl:for-each>
<xsl:for-each select="/client:process/client:approvedStatus">
<fieldValues>
<xsl:attribute name="name">
<xsl:text>ApprovedBy</xsl:text>
</xsl:attribute>
<value>
<xsl:attribute name="type">
<xsl:text>TEXT</xsl:text>
</xsl:attribute>
<xsl:value-of select="/client:process/client:approvedStatus"/>
</value>
</fieldValues>
</xsl:for-each>
</tns:updateDocument>
</xsl:template>

10 URLツールを使用したユーザー・インタフェース機能へのアクセス

この章の内容は次のとおりです。

- 10.1項「URLツールを使用したユーザー・インタフェース機能へのアクセスについて」

- 10.2項「URLツールの使用」

この章で使用する例は、既存のImagingアプリケーションが存在すること、アプリケーションに1つ以上のドキュメントが保存されていること、およびアプリケーションに以前に保存した検索があることを前提としています。

10.1 URLツールを使用したユーザー・インタフェース機能へのアクセスについて

URLツールはImagingユーザー・インタフェースのURLのセットで、このURLを使用して、検索の実行やドキュメントの表示など、特定のユーザー・インタフェース機能へ直接アクセスすることができます。これらのツールは、専用のアクセス・ページから公開され、正式なAPIとして、アプリケーションでサポートされています。Imaging 11g URLツールは、以前のImaging 10g URLツールと同様の方法で実装されています。

このセクションでは、Imaging 11gでどのようにURLツールが実装されているか、その基本的な情報を説明します。この情報は、どのサーバーにどのようなURLツールがインストールされているかの判断や、インストールされているURLツールの管理に役立ちます。imaging-uiプロジェクトでは、URLツールは一括実装されているため、特定のコード・ベースでどのようなツールが使用できるかを判断するのは簡単です。また、コードを調べることにより、特定のURLツールで想定されているパラメータや動作を判断することもできます。

10.2 URLツールの使用

現在、URLツールのアクセスポイントは、http://<server>:<port>/imaging/faces/Pages/UrlTools.jspxにあるUrlTools.jspxページです。

現在、次のツールがサポートされています。

- 検索URLツール: 検索UIツールへの直接アクセスを提供します。

- ビューアURLツール: ビューアUIツールへの直接アクセスを提供します。

- アップロードURLツール: アップロードUIツールへの直接アクセスを提供します。

- ユーザー・プリファレンスURLツール: ユーザー・プリファレンスUIツールへの直接アクセスを提供します。

10.2.1 サポートされるURLツール・パラメータ

次のURLパラメータはすべてのツールで使用され、どのURLツールにでもパラメータとして追加できます。セミコロンで区切られたパラメータ名は、これらのパラメータ名が同じものを意味していることを示します。これはImaging 10gで使用されていた名前との下位互換のための機能です。

パラメータ名

説明

有効な値

デフォルト

HideBanner

バナーを表示するかしないかを示します。デフォルトでは、バナーは表示されます。ViewDocumentツールによって使用されません。

1またはtrue:

バナーを非表示にします

0またはfalse (デフォルト):

バナーを表示します

0 - 別途指定のないかぎり、すべてのURLツールにバナーを表示します

HideWorkcenter

UIのナビゲーション・ペインが表示されないことを示します。ViewDocumentツールによって使用されません。

1またはtrue:

ナビゲーション・ペインを非表示にします

0またはfalse:

ナビゲーション・ペインを表示します

1 - 別途指定のないかぎり、すべてのURLツールでナビゲーション・ペインを非表示にします

LockBanner

バナーをロックするか、ロックを解除するかを示します。バナーをロックするとは、バナーが非表示にされ、展開できなくなるという意味です。

URLでこのパラメータが指定されていても、HideBanner=0の方が優先されます。

1またはtrue:

バナーをロックします

0またはfalse:

バナーのロックを解除します

0 - 別途指定のないかぎり、すべてのURLツールでバナーのロックを解除します

LockWorkcenter

ナビゲーション・ペインをロックするか、ロックを解除するかを示します。ナビゲーション・ペインをロックするとは、ナビゲーション・ペインが非表示にされ、展開できなくなるという意味です。

URLでこのパラメータが指定されていても、HideWorkcenter=0の方が優先されます。

1またはtrue:
ナビゲーション・ペインをロックします。

0またはfalse:

ナビゲーション・ペインのロックを解除します。

1 - 別途指定のないかぎり、すべてのURLツールでナビゲーション・ペインをロックします

ToolName

リクエストの処理に使用するツールを示します。

現在あるツールは2つのみです。これらはExecuteSearch (またはAWSER)およびViewDocument (またはAWVWR)です。

なし

skin

使用するスキンを示します。

アプリケーションに展開された任意の値。通常は

- blafplus-rich

- blafplus-medium

- blafplus

- fusion

- fusion-11.1.1.3.0

- skyros

現行ユーザーの設定が使用されます。

10.2.2 サポートされているURLツール

次のURLツールがサポートされています。

- 検索URLツール

- ビューアURLツール

- アップロードURLツール

- ユーザー・プリファレンスURLツール

10.2.2.1 検索URLツール

検索URLツール(ExecuteSearch)は、直接アクセスが可能なツールとして、検索結果ユーザー・インタフェースを公開します。ExecuteSearchツールで使用できるURLパラメータの概要は次のとおりです。残りのパラメータはすべてフィールド値で、これらは検索条件に挿入する必要があります。

パラメータ名

説明

有効な値

デフォルト

SearchId

これは実行する検索のIDです。これが指定されていない場合、SearchNameが使用されます。SearchIdおよびSearchNameが指定されていないと、ユーザーにエラーが表示されます。

Imagingシステムに存在し、現在のユーザーがアクセスできる検索Idのすべての値

なし

SearchName

パラメータにSearchIdが見つからない場合、SearchNameが検索されます。SearchIdおよびSearchNameが指定されていないと、ユーザーにエラーが表示されます。

Imagingシステムに存在し、現在のユーザーがアクセスできる検索名のすべての値ただし、検索名で使用されている特殊ASCII文字はすべて16進数(base 16)コードで置き換える必要があります。たとえば、This&Thatという名前の検索で使用されているアンパサンドは、URLではhttp://machinename:port/imaging/faces/Pages/UrlTools.jspx?ToolName=AWSER&SearchName=This%26Thatのように定義する必要があります。

なし

ClearSearches

セッションのこの時点までに実行された検索をすべて削除します。

1またはtrue:

検索をクリアします。

Falseまたは0

_ipmOperator.<FieldName>

<FieldName>で指定されたフィールドの演算子を指定します。たとえば、フィールドCompanyは_ipmOperator.Companyを使用します。このパラメータは省略可能で、検索でPicklist演算子が使用されている場合のみ使用されます。

Java APIのSearch.Operator列挙の文字列値。text型フィールドで使用できるオプションは次のとおりです。

- BEGINS_WITH

- ENDS_WITH

- EQUAL_TEXT

- NOT_EQUAL_TEXT

- CONTAINS

number、decimal、およびdate型フィールドで使用できるオプションは次のとおりです。

- EQUAL

- GREATER_THAN

- GREATER_THAN_OR_EQUAL

- LESS_THAN

- LESS_THAN_OR_EQUAL

- NOT_EQUAL

値が指定されていない場合、APIにはnoneが指定され、APIはnoneが指定されたように動作します。

ORAIPM_EMPTY_URL_PARAMETER

検索フィールドのデフォルト値が存在する場合は、これを削除します。

ORAIPM_EMPTY_URL_PARAMETER

なし

URLにあるパラメータが検索フィールドとして含まれているときに、ユーザーがその検索条件で使用される演算子の選択をできる場合、ユーザーが別の値を入力しないかぎり、保存済検索のパラメータに指定された値がこの演算子のデフォルトとして使用されます。例10-1および例10-2は、ExecuteSearch URLツールを使用して検索を実行するURLの例です。

例10-1 検索の実行

この例では、Find HR Docsという名前の検索により、Employee Nameフィールドの値がJon Doeであるドキュメントすべての結果リストが戻されます。

http://<server>:<port>/imaging/faces/Pages/UrlTools.jspx?ToolName=ExecuteSearch&SearchName=Find+HR+DOCS&EmployeeName=Jon+Doe

例10-2 検索フィールドのデフォルト値の削除

ExecuteSearch検索ツールは、検索フィールドのデフォルト値があれば、それを使用します。このデフォルト値を削除する必要がある場合は、空のURLパラメータを示すURLパラメータを追加します。そのためには、パラメータに値"ORAIPM_EMPTY_URL_PARAMETER"を指定します。たとえば、検索を実行するときに、フィールド"AText80"のデフォルト値を削除しなければならない場合は、次のURLを指定します。

http://<server>:<port>/imaging/faces/Pages/UrlTools.jspx?ToolName=ExecuteSearch&SearchName=Search%20Documents&AText80=ORAIPM_EMPTY_URL_PARAMETER

ただし、ExecuteSearchツールのデフォルトではImagingユーザー・インタフェースのバナーとナビゲーション・ペインはロックされています。また、このツールでは検索結果のフォームもロックされています。

10.2.2.2 ビューアURLツール

ビューアURLツールは、直接アクセスが可能なツールとして、ImagingビューアUIツールを公開します。ViewDocumentツールで使用できるURLパラメータの概要は次のとおりです。

パラメータ名

説明

有効な値

デフォルト

showHistory

ビューアの履歴パネルを表示または非表示にします。

1またはtrue:
履歴を表示します

0またはfalse:
履歴を非表示にします

False

showProperties

ビューアの「プロパティ・パネル」を表示または非表示にします。

1またはtrue:

プロパティを表示します

0またはfalse:

プロパティを非表示にします

False

showStickyNotes

ビューアの「付箋」パネルを表示または非表示にします。

1またはtrue:

付箋を表示します

0またはfalse:

付箋を非表示にします

False

DocumentId

ユーザーに表示するドキュメントのドキュメントID。これが指定されていない場合、ドキュメントの表示は失敗し、エラーが表示されます。

有効なドキュメントID。これは検索により、またはユーザー・インタフェースもしくはWebサービスAPIを通じたドキュメントの索引付けの結果として取得されます。

なし

supportingKey

表示すべきサポート情報のキー

任意の有効なサポート情報キーの値。

なし

folder

ビューアの保存先フォルダ名。これは省略可能な値です。これにより、UIキャッシュ内に様々なドキュメントを分類して蓄積することができます。

フォルダ名として使用できる文字列値。

これが指定されていない場合、フォルダ名は"default"となります。これは検索結果が表示済ドキュメントを保存するフォルダと同じです。

showTabs

ユーザーがフォルダ内のドキュメントを切り替えられるように、タブを表示するかどうかを示します。

1またはtrue - タブを非表示にします。0またはfalse - タブを表示します。

False

closeAllTabs

URLツールに対して、ドキュメントが開かれるフォルダ内のタブをすべて閉じるように指示します。

1またはtrue - フォルダ内のドキュメントをすべて閉じます。 0またはfalse - フォルダ内のドキュメントは閉じません。

False

forceHideProperties

ビューアの「プロパティ・パネル」を閉じます。このオプションにより、システムのデフォルトおよびユーザー・プリファレンスが無視されます。

1またはtrue - 「プロパティ・パネル」を強制的に閉じます。

0またはfalse - 「プロパティ・パネル」を強制的に閉じません。

False

forceHideStickyNotes

ビューアの付箋パネルを閉じます。このオプションにより、システムのデフォルトおよびユーザー・プリファレンスが無視されます。

1またはtrue - 付箋パネルを強制的に閉じます。

0またはfalse - 付箋パネルを強制的に閉じません。

False

forceHideHistory

ビューアの履歴パネルを閉じます。このオプションにより、システムのデフォルトおよびユーザー・プリファレンスが無視されます。

1またはtrue - 履歴パネルを強制的に閉じます。0またはfalse - 履歴パネルを強制的に閉じません。

False

HideBanner

ビューアのバナーを表示または非表示にします。

1またはtrue - バナーを非表示にします

0またはfalse - バナーを表示します

True

例10-3は、ViewDocument URLツールを使用して、ビューアにドキュメントを開くURLの例です。

例10-3 ドキュメントを開いて表示

この例ではIDが123.RPO_456のドキュメントがフォルダEBS1に入っています。パラメータshowTabs=0によりビューアのドキュメント・タブが非表示になっているため、ユーザーはフォルダ内の別のドキュメントに表示を切り替えられません。

http://<server>:<port>/imaging/faces/Pages/UrlTools.jspx?ToolName=ViewDocument&DocumentId=123.RPO_456&folder=EBS1&showTabs=0

10.2.2.3 アップロードURLツール

アップロードURLツールは、直接アクセスが可能なツールとして、アップロード・ユーザー・インタフェースを公開します。UploadDocumentツールで使用できるURLパラメータの概要は次のとおりです。残りのパラメータはすべてフィールド値とみなされ、アップロード・フォームのアプリケーション・フィールドに自動的に移入するために使用されます。

パラメータ名

説明

有効な値

デフォルト

AppId

これは、ドキュメントを索引付けするアプリケーションのIDです。これが指定されていない場合、AppNameが使用されます。AppIdおよびAppNameが指定されていないと、ユーザーにエラーが表示されます。

Imagingシステムに存在し、現在のユーザーがアクセスできる検索Idのすべての値

なし

AppName

パラメータにAppIdが見つからない場合、AppNameが検索されます。AppIdおよびAppNameが指定されていないと、ユーザーにエラーが表示されます。

Imagingシステムに存在し、現在のユーザーがアクセスできる検索名のすべての値

なし

ShowFieldsWithValues

通常、URLに指定されたフィールドはすべてアップロード・フォームから削除されます。このパラメータをtrueに設定すると、これらのフィールドが他のフィールドとともに表示されます。

1またはtrue - 検索をクリアします

0またはfalse - 検索をクリアしません

False

例10-4および例10-5は、UploadDocument URLツールを使用してドキュメントをアップロードするURLの例です。

例10-4 AppIdを使用してドキュメントをアップロード

この例では、アップロード・ツールによりIDが157のアプリケーションがロードされ、表示されます。フィールドMyTextFieldおよびMyNumberFieldには自動的に値が移入され、ユーザーが使用できるフィールドのリストから削除されます。

http://<server>:<port>/imaging/faces/Pages/UrlTools.jspx?ToolName=UploadDocument&AppId=157&MyTextField=Text%20Value&MyNumberField=123

例10-5 AppNameを使用してドキュメントをアップロード

この例では、アップロード・ツールによりMy Appという名前のアプリケーションがロードされ、表示されます。フィールドMyTextFieldおよびMyNumberFieldには自動的に値が移入されますが、ShowFieldsWithValuesパラメータがtrueに設定されているため、ユーザーが使用できるフィールドのリストからは削除されません。

http://<server>:<port>/imaging/faces/Pages/UrlTools.jspx?ToolName=UploadDocument&AppName=My%20App&MyTextField=Text%20Value&MyNumberField=123&ShowFieldsWithValues=true

UploadDocumentツールのデフォルトでは、Imagingユーザー・インタフェースのバナーとナビゲーション・ペインはロックされています。

注意:

日付フィールドの必須フォーマットは、次のISOの標準日付書式と時間書式です。

yyyy-MM-dd'T'HH:mm:ss.SSSZ

次に例を示します。

2022-12-30T00:00:00.000-0700

10.2.2.4 ユーザー・プリファレンスURLツール

ユーザー・プリファレンスURLツールは、直接アクセスが可能なツールとして、プリファレンス・ページ・ユーザー・インタフェースを公開します。現在、ツール名以外のUserPreferences URLパラメータはありません。例10-6は、ユーザー・プリファレンスURLツールへのアクセスに使用できるURLの例です。

例10-6 ユーザー・プリファレンスのロード

これにより、ユーザー・プリファレンス・ユーザー・インタフェース・ツールがロードされ、ユーザーのImagingユーザー・プリファレンスがすべて表示されます。ユーザー・プリファレンス・ツールを使用すると、ユーザー・インタフェースから「閉じる」ボタンが削除されます。

http://<server>:<port>/imaging/faces/Pages/UrlTools.jspx?ToolName=UserPreferences

11 RESTページ・レンディション・リクエストの作成

このセクションでは、REST (Representational State Transfer)を使用して、URLをフォーマットし、ドキュメントの1ページのレンディションをリクエストする方法を説明します。RESTリクエストを使用して、IMGタグのSRC属性にREST URLを組み込めるようにすることにより、ドキュメントのHTML表示を簡略化できます。これにより、ネイティブ・アプリケーションやブラウザのサポートに関係なくドキュメントのページを表示できるようになるので便利です。

REST URLは次の形式で記述します。使用するパラメータについては、表11-1にまとめます。また、後述のサンプルURLも参照してください。

REST URL形式

http[s]://<hostname:port>/imaging/renderimage[/#pct][/#deg][/fitFITMODE][/crop#T#L#H#W][/annotations[true|false]][/page#][/download][/version#]/<documentId>.<format>

注意:

パラメータ名は、REST URL形式での指定と同じ位置(前または後)に入力します。たとえば、pctおよびdegパラメータでは、名前の前に数字がつきますが、pageパラメータでは名前の後につきます。

REST URLの例

サンプルURL

説明

http://myserver:16000/imaging/renderimage/IPM7_170001.JPEG

IDがIPM7_170001のドキュメントの1ページ目にあるJPEGを取得します

http://myserver:16000/imaging/renderimage/50pct/page2/IPM7_170001.PNG

ドキュメントの2ページ目にあるPNGを50%に縮小して取得します

http://myserver:16000/imaging/renderimage/FITSCALE/crop0T0L100H100W/page5/IPM7_170001.JPEG

ドキュメントの5ページ目を100ピクセル四方の正方形に合わせて表示します

http://myserver:16000/imaging/renderimage/page5/download/IPM7_170001.GIF

ドキュメントの5ページ目をGIFとしてダウンロードします

http://myserver:16000/imaging/renderimage/180deg/IPM7_170001.JPEG

ドキュメントの1ページ目を180度回転させて表示します

http://myserver:16000/imaging/renderimage/20pct/270deg/annotationsfalse/page3/download/version2/IPM7_170001.JPEG

あるドキュメントの2つ目のバージョンの3ページ目を元の高さの20%で、270度回転させて、注釈をオフにしてダウンロードします

表11-1 REST URLパラメータ

パラメータ

説明

pct

ドキュメントの表示スケールを表すパーセント(整数)を指定します。たとえば、100ならばドキュメントのサイズはそのままで、スケールが50だと元のサイズの50%で表示されます。

deg

ドキュメントの回転角度を度単位で指定します。指定できる回転角度は0、90、180、および270です。

fit

ページをトリミングするには、このパラメータにfitモード(FITWIDTH、FITHEIGHT、またはFITBEST)とトリミングに使用する矩形を指定します。ページは、指定されたトリミング寸法に基づき、fitモードに従って表示されます。

(ただし、cropパラメータが指定されていない場合、このパラメータは無視されます)

crop

ページをトリミングするには、crop矩形の寸法を指定します。ページは、指定されたトリミング矩形の寸法に基づき、fitモード(FITWIDTH、FITHEIGHT、またはFITBEST)に従って表示されます。

形式は#T#L#H#Wを使用しますが、これはjava.awt.Rectangleのtop、left、heightおよびwidthプロパティに相当します。たとえば、top=10、left=20、height=100およびwidth=200の長方形の場合は、次のように指定します。

crop10T20L100H200W

(ただし、fitパラメータが指定されていない場合、このパラメータは無視されます)

annotations

レンダリングしたページに注釈を適用する場合はtrue、省略する場合はfalseを指定します。

page

表示するページを指定します。たとえば、複数ページにわたるTIFFファイルの2ページ目を表示するには2を指定します。

ページはコール側に未加工のページ・データとして返されます。これには適切なmimeタイプと推奨ファイル名を指定するヘッダー情報が含まれます。

download

このパラメータが含まれている場合、クライアントによりブラウザの「開く」/「保存」/「キャンセル」ダイアログ・ボックスにファイルがダウンロードされます。その後、レンディションが圧縮され、コール側に戻されます。

含まれていない場合、ページのレンダリングのみが行われます。

version

レンダリングするドキュメントのバージョンを指定します。

documentId

レンダリングするドキュメントのID(たとえば、Webインタフェースから提供されたもの)を指定します。

format

レンダリングするドキュメントのバージョンを指定します。サポートされているフォーマットは、TIFF、PNG、GIF、およびJPEGです。

オラクル社の法律上の注意点について

コピーライトについて

Copyright © 1994-2013, Oracle and/or its affiliates.All rights reserved.

商標と登録商標について

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

制限付権利

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション（人的傷害を発生させる可能性があるアプリケーションを含む）への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性（redundancy）、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

ドラフトのアルファ版およびベータ版ドキュメントについて

このドキュメントが試作版の場合:

このドキュメントは試作版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。オラクル社およびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。