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

図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 不可 |