7.2.3. バイナリの永続性

バイナリの永続性はマーシャリングとして知られていますが、プロセスインスタンスのステータスをバイナリのデータセットに変換することです。バイナリの永続性とは、情報を永続的に保存、リトリーブする際に使用するメカニズムです。同じメカニズムがセッションステータスや作業アイテムのステータスにも適用されています。
プロセスインスタンスのステータスが永続化されると、以下の 2 つのことが発生します。
  • プロセスインスタンスの情報がバイナリデータに変換されます。パフォーマンスの理由から、通常の Java の直列化ではなくカスタムの直列化メカニズムが使用されています。
  • バイナリデータはプロセスインスタンスに関する他のメタデータと併せて保存されます。このメタデータには、プロセスインスタンス ID、プロセス ID、プロセスの開始日が含まれています。
プロセスインスタンスのステータス以外に、セッション自体もタイマージョブなど別形式のステータスとして保存することも可能です。また、セッションにはビジネスルールを評価するデータも保存することができます。このセッションのステータスは、セッション ID やメタデータの一部とともにバイナリデータセットとして別途保存されています。セッションステータスは、指定の ID でセッションをリロードすることでリストアできます。セッション ID は、 ksession.getId() を使用してリトリーブ可能です。
通常プロセスインスタンスのバイナリデータセットは、最小限の実行ステータスのみを格納しているため比較的小さくなっています。単純なプロセスインスタンスの場合、バイナリデータセットには通常 1 つまたは少しのノードインスタンスが含まれています (現在実行中のノードまたは既存変数の値)。
バイナリの永続性を行うと、データモデルはシンプルかつサイズが小さくなります。
sessioninfo、processinstanceinfo、eventtypes、workiteminfo ノードを提供するデータモデル

図7.1 データモデル

sessioninfo エンティティには、プロセスインスタンスが実行中の (ナレッジ) セッションのステータスが含まれています。

表7.1 SessionInfo

フィールド 説明 Null 許容型
id プライマリキー Null 不可
lastmodificationdate エンティティがデータベースに最後に保存された時間  
rulesbytearray セッションのステータスが含まれているバイナリデータセット Null 不可
startdate セッションの開始時間  
optlock 楽観ロックの値としての機能を果たすバージョンフィールド  
processinstanceinfo エンティティには、プロセスインスタンスのステータスが含まれています。

表7.2 ProcessInstanceInfo

フィールド 説明 Null 許容型
instanceid プライマリキー Null 不可
lastmodificationdate エンティティがデータベースに最後に保存された時間  
lastreaddate エンティティがデータベースから最後にリトリーブされた時間  
processid プロセスの名前 (ID)  
processinstancebytearray プロセスインスタンスのステータスが含まれているバイナリデータセット Null 不可
startdate プロセスの開始時間  
state プロセスインスタンスのステータスを示す整数 Null 不可
optlock 楽観ロックの値としての機能を果たすバージョンフィールド  
eventtypes エンティティには、プロセスインスタンスで発生した/実行するイベントに関する情報が含まれています。

表7.3 EventTypes

フィールド 説明 Null 許容型
instanceid processinstanceinfo プライマリキーを参照しており、このカラムにはかい部キーの制約があります。 Null 不可
element プロセスで行ったイベントに関連する文字フィールド  
workiteminfo エンティティには、作業アイテムのステータスが含まれています。

表7.4 WorkItemInfo

フィールド 説明 Null 許容型
workitemid プライマリキー Null 不可
name 作業アイテムの名前  
processinstanceid プロセスの (プライマリキー) ID。このフィールドには外部キーの制約はありません。 Null 不可
state 作業アイテムのステータスを表す整数 Null 不可
optlock 楽観ロックの値としての機能を果たすバージョンフィールド  
workitembytearay 作業アイテムのステータスを含むバイナリデータセット Null 不可