最近のアクセス:
ページ
履歴
バックリンク
ワークリストをビルドするための最適化
GeneXus 17 Upgrade 1
以降では、インメモリーのデータ構造を使用してユーザーのワークリストを計算します。
データ構造には組織モデルに関連する情報が設定され、次の関係が格納されます:
● ユーザー - ロール (キャッシュ可能)
● アクティビティ - ロール (キャッシュ可能)
● ユーザー - 組織単位の定義 - 組織単位 (キャッシュ可能)
● ユーザー - 組織単位の定義 - 組織単位 - ロール (キャッシュ可能)
● プロセスインスタンス - 組織単位の定義 - 組織単位 (キャッシュ不能)
エンドユーザー (管理者) は、構造をキャッシュし、データベースへのアクセスを削減することで、パフォーマンスを向上させることができます。キャッシュが無効な場合 (既定値) は、ワークリストに変更を加える必要がある操作の前に、構造が必ずデータベースからロードされます (*)。
キャッシュが有効な場合は、必然的に、ユーザーロールや組織単位の変更が受信トレイに反映されない期間が発生します。
たとえば、ユーザーにあるロールが割り当てられた場合、そのロールの新しいタスクは、キャッシュが更新されるまでユーザーの受信トレイに表示されません。
キャッシュが更新されると、それ以降に作成されたタスクは表示されるようになりますが、更新前に作成されたタスクは非表示のままになります。
変更前に作成されたタスクには影響はありません。これは、ユーザーのワークリストが常に新しいデータで再構成されるためです。
(*) GeneXus ResultSet のキャッシュが有効であった場合、最終的には、データベースへのアクセスなしでロードを実行できます。「
ワークリストをビルドするための最適化
」を参照してください。
キャッシュを有効にする方法
GXflow バックオフィスメニューのオプションで、 [ Enable Organizational Model Cache ] プロパティを Yes に設定することで有効にできます。
[ 保存 ] をクリックすると [ Organizational Model Cache Timeout (seconds) ] プロパティが表示され、キャッシュの更新頻度を構成できます。
考慮事項
使用するキャッシュメカニズムは (分散ではなく) インプロセスです。そのため、サーバーファームがある場合は、キャッシュされた情報はどこかで多少異なってしまいます。
ユーザーのワークリストが、暗黙的に (ユーザーのロールまたは組織単位が変更されており、その状況でワークリストの再構成を強制適用するように設定されている場合)、または明示的に (API User.RebuildWorklist() を使用するか、apwfrebuildwoklist コマンドによって) 再構成されるときには、キャッシュが有効かどうかに関係なく、必ず新しいデータが使用されます。
GeneXus キャッシュとの互換性
GXflow 構造のキャッシュメカニズムは、GeneXus ResultSet キャッシュメカニズムには依存しません。後者が有効な場合、GXflow 組織構造は GeneXus キャッシュからロードされます (ステートメントがインメモリーの場合)。そうでない場合はデータベースからロードされます。
GeneXus ResultSet キャッシュを使用し、ユーザーのロールまたは組織単位に変更を加える場合、無効になることに留意してください。その場合、キャッシュには常に新しいデータが入れられます。つまり、両方のキャッシュが有効な場合、タイムアウトの累積効果は生じません。