7.3.1 Groupmax Workflow - Library Extensionの詳細説明

ここでは,以下の3点について説明します。

<この項の構成>
(1) セションについての説明
(2) 一覧リストの使い方についての説明

(1) セションについての説明

マルチサーバ環境でアプリケーションを作成する場合は,以下に示す説明をお読みください。シングルサーバ環境では,特にお読みいただく必要はありません。

Groupmax Workflow - Library Extensionには,以下に示す4種類のセションがあります。

セション分類セション種別セションを生成する関数又はメソッド
メインセションWorkflow管理サーバとのセション
API関数
HwfAdStartUp
HwfAdConnectHome
OCXメソッド
WFadStartUp
WFadConnectHome
サブセション各ユーザのホームサーバとのセション
API関数
HwfAdConnectUser
OCXメソッド
WFadConnectUser
ビジネスプロセス定義の登録サーバとのセション
API関数
HwfAdConnectBp
OCXメソッド
WFadConnectBp
ロールの登録サーバとのセッション
API関数
HwfAdConnectRode
OCXメソッド
WFadConnectRole

Groupmax Workflow - Library Extensionを使用するときは,まずGroupmax Workflow管理サーバと接続します。

メインセションは,Groupmax Workflow - Library Extensionの使用開始時にWorkflow管理サーバと接続したときに生成されます。サブセションは,上記の「セションを生成する関数又はメソッド」で表示するAPI関数又はOCXメソッドによって,必要に応じて生成されます。

HwfAdCleanUp関数(WFadCleanUpメソッド)を発行して,メインセションを終了します。このとき,そのメインセションで生成されているサブセションもすべて終了します。

各関数又はメソッドは,表7-3で示す実行サーバで実行します。

関数又はメソッドの発行前に,実行サーバとのセションを生成してください。

また,Groupmax Workflow管理サーバ以外のサーバで実行される関数又はメソッドは,接続した時点が最も後のサーバに対して要求されます。

このため,マルチサーバ環境でビジネスプロセス定義やユーザの操作,ロールを操作する場合,操作対象のビジネスプロセス定義の登録サーバ,ユーザのホームサーバ,ロールの登録サーバに対して,操作の直前にHwfAdConnectBp関数(WFadConnectBpメソッド)又はHwfAdConnectUser関数(WFadConnectUserメソッド),HwfAdConnectRole関数(WFadConnectRoleメソッド)を発行してください(API関数を使用する場合)。

例えば,あるユーザのホームサーバに接続した後,別のユーザのホームサーバに接続する場合を考えてみます。その場合,HwfAdConnectUser関数(WFadConnectUserメソッド)を発行してあるユーザのホームサーバに接続した後,別のユーザに対してHwfAdConnectUser関数(WFadConnectUserメソッド)を発行します。

そのときに,先に接続したユーザのホームサーバと後から接続するユーザのホームサーバが異なるサーバであれば,先に接続したユーザのホームサーバとの接続が切断され,後から接続するユーザのホームサーバと接続されます。その状態で,先に接続したユーザのユーザトレー中の案件を参照したり,ヒストリを参照したりすると,指定したユーザが見つからないエラーが発生します。そのため,ユーザを操作したり,ユーザトレー中の案件を操作したりするときは,必ず目的のユーザに対してHwfAdConnectUser関数(WFadConnectUserメソッド)を発行してユーザのホームサーバに接続してから,操作してください。

また,例えば,あるユーザのホームサーバに接続した後,あるビジネスプロセス定義やロールを操作しようとした場合を考えてみます。その場合,HwfAdConnectUser関数(WFadConnectUserメソッド)であるユーザのホームサーバに接続した後,あるビジネスプロセス定義やロールを操作しようとしてHwfAdConnectBp関数(WFadConnectBpメソッド),HwfAdConnectRole関数(WFadConnectRoleメソッド)を発行します。そのときに,ユーザのホームサーバとビジネスプロセス定義の登録サーバやロールの登録サーバが異なるサーバであれば,関数又はメソッドはビジネスプロセス定義の登録サーバやロールの登録サーバに対して要求されます。したがって,その後でユーザを操作しようとしても正常に処理できません。

その場合は,再びユーザに対してHwfAdConnectUser関数(WFadConnectUserメソッド)を発行する必要があります。

表7-3 関数及びメソッドの実行サーバ

区分関数名称メソッド名称処理サーバ
セション管理HwfAdStartUpWFadStartUp    
HwfAdCleanUpWFadCleanUp    
HwfAdConnectHomeWFadConnectHome
ユーザ,組織操作機能HwfAdConnectUserWFadConnectUser    
HwfAdGetOrganizationListWFadGetOrganizationList    
HwfAdGetUserListFromOrganWFadGetUserListFromOrgan    
HwfAdGetUserHistoryWFadGetuserHistory    
HwfAdDeleteUserHistoryWFadDeleteUserHistory    
HwfAdGetUserListFromRoleWFadGetUserListFromRole    
ビジネスプロセス定義操作機能HwfAdConnectBpWFadConnectBp    
HwfAdCreateBpListWFadCreateBpList    
HwfAdSelectBpListWFadSelectBpList    
HwfAdGetBpListWFadGetBpList    
HwfAdGetBpOperationListWFadGetBpOperationList    
ロール操作機能HwfAdConnectRoleWFadConnectRole    
HwfAdCreateRoleListWFadCreateRoleList    
HwfAdSelectRoleListWFadSelectRoleList    
HwfAdGetRoleListWFadGetRoleList    
HwfAdAddUserToRoleWFadAddUserToRole    
HwfAdDeleteUserFromRoleWFadDeleteUserFromRole    
ワーク操作機能HwfAdCreateWorkListWFadCreateWorkList    
HwfAdSelectWorkListWFadSelectWorkList    
HwfAdGetWorkListWFadGetWorkList    
HwfAdGetWorkHistoryWFadGetWorkHistory    
HwfAdCancelWorkWFadCancelWork    
HwfAdSetWorkPriorityWFadSetWorkPriority    
HwfAdSetWorkTermWFadSetWorkTerm    
HwfAdSuspendWorkWFadSuspendWork    
HwfAdResumeWorkWFadResumeWork    
案件操作機能HwfAdCreateCaseListWFadCreateCaseList  ※1※2 
HwfAdSelectCaseListWFadSelectCaseList   
HwfAdGetCaseListWFadGetCaseList   
HwfAdSetCaseNextUserWFadSetCaseNextUser   
HwfAdCaseNextWFadCaseNext   
HwfAdCaseToUserWFadCaseToUser   
HwfAdGetCaseAttributeWFadGetCaseAttribute   
HwfAdSetCaseAttributeWFadSetCaseAttribute   
HwfAdFailedCaseToUserWFadFailedCaseToUser   
HwfAdCaseToRoleWFadCaseToRole    
HwfAdCaseFromRoleWFadCaseFromRole    
オブジェクト操作機能HwfAdGetObjectWFadGetObject  ※1※3※4
HwfAdSetObjectWFadSetObject  ※1※3 
リスト操作機能HwfAdDeleteListWFadDeleteList     
HwfAdCreateSortListWFadCreateSortList     
(凡例1)○は関数又はメソッドが実行されることを示します。
(凡例2)処理サーバの欄の各番号は次のサーバを示します。
  1. Workflow管理サーバ
  2. ログインユーザホーム
  3. 処理対象ユーザホーム
  4. ビジネスプロセス(Bp)登録サーバ
  5. ロール(Role)登録サーバ
注※1 ユーザモード
注※2 ワークモード
注※3 ビジネスプロセス定義モード,ワークモード
注※4 ロールモード

なお,クライアント管理者ライブラリでは,一つのアプリケーション(プロセス)で一つのメインセションを使用できます。サーバ管理者ライブラリでは,一つのアプリケーション(プロセス)で複数のサブセションを使い分けることができます。

Groupmax Workflow - Library Extensionは,運用モニタ(Groupmax Workflow Monitor)やビジュアル定義(Groupmax Workflow Definer)と同様の管理者セションを使用しています。同時ログインユーザ数に制限はありませんが,管理者セションはサーバの資源を消費するため,使用後は早めにセションを終了してください。

また,HwfAdStartUp関数で管理サーバとのセションを生成した場合は,必ずHwfAdCleanUp関数で管理サーバとのセションを解放してください。

WindowsマシンでLoadLibrary関数を使って,Workflow Library Extensionを使用する場合は特に注意してください。セションが生成されている状態でFreeLibrary関数を使って,Groupmax Workflow Library ExtensionのDLLを切り離してもセションは解放されません。必ずHwfAdCleanUp関数を発行してからFreeLibrary関数を使用するようにしてください。

(2) 一覧リストの使い方についての説明

Groupmax Workflow - Library Extensionでは,ビジネスプロセス定義,ワーク,案件,及びロールについて,一覧リストを作成できます。

一覧リストを作成する関数又はメソッドを以下に示します。

一覧リスト種別一覧リストを作成する関数又はメソッド
ビジネスプロセス定義一覧リスト
API関数
HwfAdCreateBpList
OCXメソッド
WFadCreateBpList
ワーク一覧リスト
API関数
HwfAdCreateWorkList
OCXメソッド
WFadCreateWorkList
案件一覧リスト
API関数
HwfAdCreateCaseList
OCXメソッド
WFadCreateCaseList
ロール一覧リスト
API関数
HwfAdCreateRoleList
OCXメソッド
WfadCreateRoleList

一覧リストの要素数が多く,それぞれのオブジェクト属性値の取得に時間が掛かると判断できる場合や,一覧表示が1画面に収まらないで操作しにくい場合は,一覧リストを検索する関数又はメソッドを使用して絞り込み検索ができます。

一覧リストを検索する関数又はメソッドを以下に示します。

一覧リスト種別一覧リストを検索する関数又はメソッド
ビジネスプロセス定義一覧リスト
API関数
HwfAdSelectBpList
OCXメソッド
WFadSelectBpList
ワーク一覧リスト
API関数
HwfAdSelectWorkList
OCXメソッド
WFadSelectWorkList
案件一覧リスト
API関数
HwfAdSelectCaseList
OCXメソッド
WFadSelectCaseList
ロール一覧リスト
API関数
HwfAdSelectRoleList
OCXメソッド
WFadSelectRoleList

また,一覧リストから属性値をソートして取得する場合,まず,HwfAdCreateSortList関数(WFadCreateSortListメソッド)を使用してソート済みの一覧リストを作成します。その後で一覧リストから属性値を取得する関数又はメソッドを使用して,属性値を取得します。

一覧リストから属性値を取得する関数又はメソッドを以下に示します。

一覧リスト種別一覧リストから属性値を取得する関数又はメソッド
ビジネスプロセス定義一覧リスト
API関数
HwfAdGetBpList
OCXメソッド
WFadGetBpList
ワーク一覧リスト
API関数
HwfAdGetWorkList
OCXメソッド
WFadGetWorkList
案件一覧リスト
API関数
HwfAdGetCaseList
OCXメソッド
WFadGetCaseList
ロール一覧リスト
API関数
HwfAdGetRoleList
OCXメソッド
WFadGetRoleList

一覧リストから属性値を取得する場合,一覧リストに含まれているオブジェクトが既に削除されていることがあります。この場合,文字列属性には「*」,数値属性には0がセットされて返却されます。

なお,一覧リストの実体はサーバのメモリ上にあります。したがって,一覧リストを作成したままにしておくとサーバの資源を浪費します。また,一つのセションで作成できる一覧リストの数には上限があります。そのため,一覧リストは必要がなくなったときに,HwfAdDeleteList関数(WFadDeleteListメソッド)で削除してください。