IBM FileNet P8, バージョン 5.2.1            

基本手順

以下のセクションでは接続の取得と、基本的なクラス・オブジェクトの使い方を説明し、コード例を示します。

接続の確立

Java™ 環境では、Enterprise JavaBeans (EJB) または Content Engine Web Service (CEWS) のいずれかのトランスポートを使用できます。 CEWS は、Web Service Interface (WSI) とも呼ばれます。URI 文字列で使用するトランスポートを決定します (下の Java コード例を参照)。 EJB トランスポートで、Java 認証・許可サービス (JAAS) のコンテキストが既に確立している場合は、直接使用できます。IBM® FileNet® によって提供される JAAS ログイン・モジュールを使用している場合は、CEWS トランスポートでも同様に使用できます。 認証にユーザー名/パスワードを使用する Java アプリケーションの場合は、代わりに UserContext.createSubject 便利メソッドを pushSubject および popSubject メソッドと共に呼び出して、JAAS コンテキストを確立することもできます。

.NET 環境の場合は、CEWS トランスポートを使用する必要があります。IBM FileNet P8 ドメインに接続する前に、ユーザーを認証する必要があります (下の C# コード例を参照)。 Microsoft Windows Communication Foundation (WCF) は、SSL で保護されたネットワーク通信のみをサポートするため、HTTPS サーバー URL を使用する必要があります。 HTTP URL を使用する場合、API は、Microsoft Web Services Extensions (WSE) 3.0 が存在すればそれを使用して接続を作成し、WSE が存在しなければエラーを生成します。

Java の例

// Content Engine に接続
static void makeConnection(
    boolean connectEjb,
    String osName)
{
    // URI ストリングを介して使用するトランスポートを決定
    String uri = null;
    if (connectEjb == true)
    {    
        // WebLogic の EJB 接続例
        uri = "t3://remotehost:7001/FileNet/Engine"; 
    }
    else
    {
        // WebSphere の WSI 接続の例
        uri = "http://remotehost1:9080/wsi/FNCEWS40MTOM"; 
    }

    // 接続とデフォルト・ドメインの取得
    Connection conn = Factory.Connection.getConnection(uri); 
    Domain domain = Factory.Domain.getInstance(conn, null);

    // オブジェクト・ストアの取得
    ObjectStore os = Factory.ObjectStore.fetchInstance(domain, osName, null);
    System.out.println("Object store name: " + os.get_Name()); 
}

C# の例

// インクルード (UsernameCredentials および ClientContext 用)
using FileNet.Api.Authentication;


...


// Content Engine に接続
static void makeConnection(
    String userName,
    String passWord)
{
    // 資格情報を作成 (Kerberos、またはユーザー名とパスワード)
    // この場合、ユーザー名/パスワードは既存の構成ファイルから与えられる
    UsernameCredentials creds = new UsernameCredentials(userName, passWord); 
        

    // この ClientContext をプロセス全体と関連付け
    ClientContext.SetProcessCredentials(creds);
         

    // トランスポートを設定
    // WebLogic の CEWS トランスポート例
    String uri = "https://localhost:7001/wsi/FNCEWS40MTOM/"; 

    // 接続とデフォルト・ドメインの取得
    IConnection conn = Factory.Connection.GetConnection(uri); 
    IDomain domain = Factory.Domain.GetInstance(conn, null);

    // オブジェクト・ストアの取得
    IObjectStore os = Factory.ObjectStore.FetchInstance(domain, osName, null);
    System.Console.WriteLine("Object store name: " + os.Name);
}

EntireNetwork オブジェクトの取得

EntireNetwork オブジェクトは、Content Engine API オブジェクト・モデルの最上位オブジェクトです。このオブジェクトのインスタンスを作成すると、階層内のその他のすべてのパブリック・オブジェクトが開示されます。

EntireNetwork オブジェクトを取得するには、Factory.EntireNetwork クラスの静的メソッドを呼び出し、Connection オブジェクトを渡します。Connection オブジェクトには、Content Engine サーバーとの通信を確立するために必要な情報が含まれています。

Java の例

EntireNetwork en = Factory.EntireNetwork.fetchInstance(conn, null); 

EntireNetwork オブジェクトの参照を取得した後、階層内の従属オブジェクトを取得できるようになります。 例えば、EntireNetwork オブジェクトから Domain オブジェクトをインスタンス化できます。Domain オブジェクトから ObjectStore オブジェクトに移動し、ドキュメント、フォルダーなどへのアクセスを開始できます。 また、EntireNetwork オブジェクトを使用して FileNet P8 ドメインのすべての Realm オブジェクトを取得し、1 つのレルムに関連付けられているユーザーとグループを取得することができます。

Domain オブジェクトの作成

API 呼び出しを使用して Domain オブジェクトを作成できますが、一般にドメインは Administration Console for Content Platform Engineの初回呼び出し時に作成され、その後は Factory クラスのインスタンス化メソッドを使用してこのオブジェクトのインスタンスが取得またはフェッチされます。Domain オブジェクトを直接作成する Factory.Domain.createInstance メソッドはありません。ただし、場合によってはプログラムで Domain オブジェクトを作成する必要があります。この操作の手順を次に説明し、コード例を示します。

プログラムで Domain オブジェクトを作成するには、フェッチなしインスタンス化により作成されたインスタンスを取得し、Create 保留アクションを明示的に設定し、これらの変更を永続化します。その結果作成されるオブジェクトは、限定モード・ドメインと呼ばれます。このモードでは Domain オブジェクトのみを変更できます。 新規オブジェクト (ObjectStoreMarkingSetSite など) は作成できません。ドメインを制限なしで使用可能にするには、さらに 2 つのステップを実行する必要があります。すなわち、DirectoryConfiguration オブジェクトを追加して、権限を設定します。 権限を設定するまでは、ドメインは一般に使用可能とは見なされません。

Java の例

// 限定モード・ドメインの作成
String uri = "iiop://localhost:2809/FileNet/Engine"; // URI はアプリケーション・サーバーによって異なる
Connection conn = new ConnectionImpl(uri);
Domain myDomain = Factory.Domain.getInstance(conn, "mydomain");
myDomain.addPendingAction(new Create(ClassNames.DOMAIN, null, null, null, null, null));
myDomain.set_Name("myDomain");
myDomain.save(RefreshMode.REFRESH);
        
// DirectoryConfigurationオブジェクトの追加 (下の「」参照)
DirectoryConfigurationList myDirConfigs = buildMyDirectoryObjects(); 
myDomain.set_DirectoryConfigurations(myDirConfigs);
myDomain.save(RefreshMode.REFRESH);
        
// 権限の設定 (下の「」参照)
AccessPermissionList apl = buildMyPermissions(); 
myDomain.setPermissions(apl);
myDomain.save(RefreshMode.REFRESH);

C# の例

// 限定モード・ドメインの作成
String uri = "iiop://localhost:7001/wsi/FNCEWS40MTOM"; // URI はアプリケーション・サーバーによって異なる
IConnection conn = new Factory.Connection.GetConnection(uri);
IDomain myDomain = Factory.Domain.GetInstance(conn, "mydomain");
myDomain.AddPendingAction(new Create(ClassNames.DOMAIN, null, null, ReservationType.COLLABORATIVE, null, null));
myDomain.Name = "myDomain";
myDomain.Save(RefreshMode.REFRESH);
        
// DirectoryConfigurationオブジェクトの追加 (下の「」参照)
IDirectoryConfigurationList myDirConfigs = buildMyDirectoryObjects(); 
myDomain.DirectoryConfigurations = myDirConfigs;
myDomain.Save(RefreshMode.REFRESH);
        
// 権限の設定 (下の「」参照)
IAccessPermissionList apl = buildMyPermissions(); 
myDomain.Permissions = apl;
myDomain.Save(RefreshMode.REFRESH);
注:
  • 権限を設定する際の最良の方法は、少なくとも 1 つのグループ を指定し、グループのメンバーにオブジェクトへのアクセスを許可します。この方法で、例えばパスワードに有効期限ポリシーを設定した環境で発生する、アクセス拒否の問題を抑止できます。
  • プログラムで API を使用して FileNet P8 ドメインを削除する操作はサポートされていません。

Realm オブジェクトの操作

Realm オブジェクトは主に、FileNet P8 ドメイン内のユーザーとグループのリストを取得するときに使用されます。次の方法で Realm オブジェクトをインスタンス化できます。

  • Factory.Realm クラスの静的メソッドを呼び出す。
  • EntireNetwork.get_MyRealm() を呼び出す。これは、呼び出し元が属するレルムを表す Realm オブジェクトを返します。
  • RealmSet コレクションを反復処理する。

次の Java コード例は、現行ユーザーの Realm オブジェクトをインスタンス化します。検索条件に一致するユーザーに基づいて、ドメイン内のユーザー・グループが取得およびリストされます。

Java の例

Realm realm = Factory.Realm.fetchCurrent(domain.getConnection(), null);
System.out.println("Realm Name: " + realm.get_Name()); //print the name of the realm for the current user 
  
UserSet users = realm.findUsers("Ha", PrincipalSearchType.PREFIX_MATCH,
PrincipalSearchAttribute.SHORT_NAME,
PrincipalSearchSortType.ASCENDING, 
new Integer(5), null);

// 返されたユーザーの集合を出力するルーチンの呼び出し
printPrincipalSet(users, true);
注: ユーザーおよびグループの大規模なディレクトリー内ですべてのユーザーまたはグループを検索する操作は、パフォーマンスに影響を及ぼします。 上の例では、返されるユーザーの数が findUsers メソッドを使用して制限されています。findUsers メソッドと findGroups メソッドの検索条件として使用される各パラメーターの詳細については、Realm インターフェースの資料のメソッドの説明を参照してください。


最終更新日: 2015 年 10 月
gs_procedures.htm

© Copyright IBM Corp. 2015.