Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド
リクエストを再送信する場合,またはテスト実行したプロセスインスタンスを削除する場合など,不要になったプロセスインスタンスの実行履歴を,1件ずつ削除できます。
また,プロセスインスタンスの実行履歴は,日々追加されていくため,定期的に情報を削除しないとデータベースの容量が圧迫されます。そこで,定期的に,管理者はデータベース上の実行履歴情報テーブルから,プロセスインスタンスの実行履歴を削除する必要があります。日常運用では通常,バッチ化して,実行履歴を一括削除できます。
プロセスインスタンスの実行履歴の削除は,画面による方法,コマンドによる方法およびデータベース作成ユティリティ(pdload)による方法があります。
画面上でプロセスインスタンスの実行履歴を1件ずつ削除する手順を次に示します。
画面によってプロセスインスタンスの実行履歴を一括削除する手順を次に示します。
cscpideleteコマンドを使った実行履歴の削除について説明します。cscpideleteコマンドの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「cscpidelete(プロセスインスタンスの実行履歴の削除)」を参照してください。
コマンドによってプロセスインスタンスの実行履歴を1件ずつ削除する手順を次に示します。
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -where <where句>※ |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -wherefile <where句が記載されたファイル名>※ |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -idlist <IDのリストが記載されたファイル名> |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -wherefile delete_where.txt |
ProcessID = 'J2EEServer_010209010042_XXXPurchaseRegisterService_1142479241203_760331597_2115' |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -idlist delete_id_list.txt |
J2EEServer_010209010042_XXXPurchaseRegisterService_1142479241203_760331597_2115 |
コマンドによってプロセスインスタンスのビジネスプロセス定義名を指定し,実行履歴を一括削除する手順を次に示します。
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -where <where句>※ |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -wherefile <where句が記載されたファイル名>※ |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -processname <ビジネスプロセス定義名> |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -wherefile delete_where.txt |
ProcessDefinitionName=' Helloビジネスプロセス ' |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -processname Helloビジネスプロセス |
コマンドによってプロセスインスタンスの開始日時を指定し,実行履歴を一括削除する手順を次に示します。
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -where <where句>※ |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -wherefile <where句が記載されたファイル名>※ |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -date <照会開始日時>※,<照会終了日時> |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -wherefile delete_where.txt |
StartTime <= '2008-10-09 14:59:59' |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -date ,20081009235959※ |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -wherefile delete_where.txt |
StartTime BETWEEN '2008-10-08 15:00:00' AND '2008-10-09 14:59:59' |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -date 20081009000000※,20081009235959※ |
コマンドによってプロセスインスタンスの状態を指定し,実行履歴を一括削除する手順を次に示します。
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -where <where句>※ |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -wherefile <where句が記載されたファイル名>※ |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -status {executing|completed|faulted|error|all}※ |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -wherefile delete_where.txt |
State='Executing' |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -status executing |
コマンドによってプロセスインスタンスのビジネスプロセス定義名,開始日時,および状態を組み合わせて指定し,一括削除する手順を次に示します。
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -where <where句>※ |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -wherefile <where句が記載されたファイル名>※ |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -processname <ビジネスプロセス定義名> -date <照会開始日時>※1,<照会終了日時> -status {executing|completed|faulted|error|all}※2 |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -wherefile delete_where.txt |
ProcessDefinitionName=' Helloビジネスプロセス ' AND StartTime <= '2008-10-09 14:59:59' AND State='Executing' |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -processname Helloビジネスプロセス -date ,20081009235959※ -status executing |
コマンドによってすべてのプロセスインスタンスの実行履歴を一括削除する手順を次に示します。
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -force |
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -force |
削除したいプロセスインスタンスの実行履歴の量が膨大になると,すべての削除処理の完了までに長時間を要するおそれがあります。削除処理がリクエスト処理に影響を与えないよう,一括削除の処理時間を限定することもできます。
削除処理を中断するまでの経過時間は,cscpideleteコマンドの-canceltimerオプションに秒単位で指定できます。これによって,コミット後に指定された時間を超過すると削除処理を中断でき,その後の削除処理が実行されないようになります。
cscpidelete -csc CSCSrv1 -date ,20050331235959 -canceltimer 600 |
cscpideleteコマンドの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「cscpidelete(プロセスインスタンスの実行履歴の削除)」を参照してください。
テーブル分割機能を利用する環境では,ビジネスプロセスの実行履歴をHiRDBの機能を利用してRDエリア(月)単位で削除できます。テーブル分割機能を利用する場合,RDエリアの循環割り当てを実行するため,日々追加される実行履歴を定期的に削除する必要があります。
ただし,RDエリア単位の実行履歴の削除を利用した場合,「Executing(実行中)」や「Error(エラー)」状態のデータも削除されます。事前に,削除したくないデータが含まれていないかを次の方法で確認してください。
SELECT count(*) FROM CSCBP_<クラスタ名>_PROCESS IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…') WHERE State IN ('Executing','Error') WITHOUT LOCK NOWAIT |
削除したくないデータは事前に退避してください。実行履歴の退避手順と削除手順を次に示します。
データを退避する際の前提条件を次に示します。
データの退避手順を次に示します。
SELECT ProcessID FROM CSCBP_<クラスタ名>_PROCESS IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…') WHERE State IN ('Executing', 'Error') WITHOUT LOCK NOWAIT; |
SELECT * FROM CSCBP_<クラスタ名>_PROCESS IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…') WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT; SELECT * FROM CSCBP_<クラスタ名>_ACTIVITY IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…') WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT; SELECT * FROM CSCBP_<クラスタ名>_LINK IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…') WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT; SELECT * FROM CSCBP_<クラスタ名>_CORRELATIONSET IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…') WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT; SELECT * FROM CSCBP_<クラスタ名>_STR_VARIABLE IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…') WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT; SELECT * FROM CSCBP_<クラスタ名>_NUM_VARIABLE IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…') WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT; SELECT * FROM CSCBP_<クラスタ名>_BOOL_VARIABLE IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…') WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT; SELECT * FROM CSCBP_<クラスタ名>_MSG_VARIABLE IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…') WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT; SELECT * FROM CSCBP_<クラスタ名>_MSG_RELATION IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…') WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT; |
INSERT INTO CSCBP_<クラスタ名>_PROCESS (ProcessID,ProcessDefinitionName,ProcessDefinitionVersion,State,ChangeCount, StartTime,EndTime,CSCServerName,SplitKey) VALUES (<(i)で取得したSplitKey列以外のデータ>, '01'); INSERT INTO CSCBP_<クラスタ名>_ACTIVITY (ProcessID,ActivityNumber,ActivityDefinitionName,ActivityKind,ParentNumber, ScopeNumber,RepeatNumber,State,FirstChildNumber,LastChildNumber,StartTime,EndTime, WaitTime,SplitKey) VALUES (<(i)で取得したSplitKey列以外のデータ>, '01'); INSERT INTO CSCBP_<クラスタ名>_LINK (ProcessID,LinkDefinitionName,RepeatNumber,State,SplitKey) VALUES (<(i)で取得したSplitKey列以外のデータ>, '01'); INSERT INTO CSCBP_<クラスタ名>_CORRELATIONSET (ProcessID,ProcessDefinitionName,ProcessDefinitionVersion,ScopeDefinitionName, ScopeNumber,CorrelationSetName,CorrelationSetValue,State,SplitKey) VALUES (<(i)で取得したSplitKey列以外のデータ>, '01'); INSERT INTO CSCBP_<クラスタ名>_STR_VARIABLE (ProcessID,ScopeNumber,VariableName,VariableValue,SplitKey) VALUES (<(i)で取得したSplitKey列以外のデータ>, '01'); INSERT INTO CSCBP_<クラスタ名>_NUM_VARIABLE (ProcessID,ScopeNumber,VariableName,VariableValue,SplitKey) VALUES (<(i)で取得したSplitKey列以外のデータ>, '01'); INSERT INTO CSCBP_<クラスタ名>_BOOL_VARIABLE (ProcessID,ScopeNumber,VariableName,VariableValue,SplitKey) VALUES (<(i)で取得したSplitKey列以外のデータ>, '01'); INSERT INTO CSCBP_<クラスタ名>_MSG_VARIABLE (ProcessID,ScopeNumber,VariableName,VariableValue,SplitKey) VALUES (<(i)で取得したSplitKey列以外のデータ>, '01'); INSERT INTO CSCBP_<クラスタ名>_MSG_RELATION (MessageID,ProcessID,ActivityNumber,SendOrReceive, AsynchronousMessagingID,SplitKey) VALUES (<(i)で取得したSplitKey列以外のデータ>, '01'); |
注
RDエリア単位の削除手順を次に示します。
pdhold -r <RDエリア名> |
pdrorg -k unld -t <テーブル名>※1 -r <データ用RDエリア名> <制御情報ファイル名>※2 |
unload <各テーブルのデータをアンロードするファイルのパス> |
unload <バックエンドサーバ名>:<各テーブルのデータをアンロードするファイルのパス> |
pdload -d CSCBP_<クラスタ名>_PROCESS <制御情報ファイル名> pdload -d CSCBP_<クラスタ名>_ACTIVITY <制御情報ファイル名> pdload -d CSCBP_<クラスタ名>_LINK <制御情報ファイル名> pdload -d CSCBP_<クラスタ名>_CORRELATIONSET <制御情報ファイル名> pdload -d CSCBP_<クラスタ名>_STR_VARIABLE <制御情報ファイル名> pdload -d CSCBP_<クラスタ名>_NUM_VARIABLE <制御情報ファイル名> pdload -d CSCBP_<クラスタ名>_BOOL_VARIABLE <制御情報ファイル名> pdload -d CSCBP_<クラスタ名>_MSG_VARIABLE <制御情報ファイル名> pdload -d CSCBP_<クラスタ名>_MSG_RELATION <制御情報ファイル名> |
source <データ用RDエリア名> <データファイルのパス> |
source <データ用RDエリア名> <バックエンドサーバ名>:<データファイルのパス> |
pdrels -r <RDエリア名> |
この手順によってRDエリア単位の削除が正しく実行されたかどうかは,次に示すSQLを発行することで確認できます。
SELECT count(*) FROM CSCBP_<クラスタ名>_PROCESS IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…') WITHOUT LOCK NOWAIT; |
All Rights Reserved. Copyright (C) 2012, 2019, Hitachi, Ltd.