デフォルトでは、承認ワークフローだけが監査レコードを生成するように設定されています。この節では、com.waveset.session.WorkflowServices アプリケーションを使用して、任意のワークフロープロセスから追加の監査イベントを生成する方法について説明します。
追加の監査イベントは、カスタムワークフローのレポートで必要になる場合があります。ワークフローに監査イベントを追加する方法については、「標準監査イベントをログするためのワークフローの変更」を参照してください。
ワークフローレポートのサポートとして、ワークフローに特別な監査イベントを追加することもできます (「ワークフローレポート」)。ワークフローレポートでは、ワークフローが完了するまでの時間をレポートします。特別監査イベントは、時間計算で使用するデータの格納に必要です。タイミング監査イベントをワークフローに追加する方法については、「タイミング監査イベントをログするためのワークフローの変更」を参照してください。
com.waveset.session.WorkflowServices アプリケーションは、任意のワークフロープロセスから監査イベントを生成します。表 10–1 に、このアプリケーションに指定できる引数を示します。
表 10–1 com.waveset.session.WorkflowServices の引数
引数 |
種類 |
説明 |
---|---|---|
op |
String |
WorkflowServices の操作。audit または auditWorkflow に設定する必要があります。標準ワークフロー監査では audit を使用します。時間計算に必要なタイミング監査イベントの格納には auditWorkflow を使用します。必須。 |
type |
String |
監査対象のオブジェクトタイプの名前。監査可能なオブジェクトタイプの一覧については、表 B–5 を参照してください。標準監査イベントのログに必須。 |
action |
String |
実行されるアクションの名前。監査可能なアクションの一覧については、表 B–6 を参照してください。必須。 |
status |
String |
指定されたアクションの状態名。状態の一覧については、表 B–7 の「結果」列を参照してください。標準監査イベントのログに必須。 |
name |
String |
指定されたアクションの影響を受けるオブジェクトの名前。標準監査イベントのログに必須。 |
resource |
String |
(オプション) 変更されるオブジェクトが置かれているリソースの名前。 |
accountId |
String |
(オプション) 変更されるアカウント ID。これはネイティブなリソースアカウント名にします。 |
error |
String |
(オプション) 障害の発生時に付けられるローカライズされたエラー文字列。 |
reason |
String |
(オプション) ReasonDenied オブジェクトの名前。一般的な障害の原因を説明する、国際化されたメッセージにマップされています。 |
attributes |
Map |
(オプション) 追加または変更された属性の名前および値のマップ。 |
parameters |
Map |
(オプション) イベントに関連する追加の名前または値を最大 5 つまでマップします。 |
organizations |
List |
(オプション) このイベントが配置される組織の名前または ID のリスト。これは、組織での監査ログの範囲設定に使用されます。このリストが存在しない場合、ハンドラは、種類と名前に基づいて組織を解決しようと試みます。組織を解決できない場合、イベントは最上位 (組織階層の最高レベル) に置かれます。 |
originalAttributes |
Map |
(オプション) 古い属性値のマップ。この名前は、attributes 引数でリストされた名前に一致している必要があります。値は、監査ログに保存しておく必要がある任意の以前の値になります。 |
ワークフロー内に標準監査イベントを作成するには、ワークフローに次の <Activity> 要素を追加します。
<Activity name=’createEvent’>
次に、<Activity> 要素の入れ子として、com.waveset.session.WorkflowServices アプリケーションを参照する <Action> 要素を記述します。
<Action class=’com.waveset.session.WorkflowServices’>
<Action> 要素の入れ子として、必須およびオプションの <Argument> 要素を記述します。引数の一覧については、表 10–1 を参照してください。
標準監査イベントをログするには、op 引数を audit に設定します。
「ワークフローの例」では、標準監査イベントの作成に必要な最小限のコードを示しています。
次の例は、簡単なワークフローアクティビティーを示しています。この例では、ResourceAdministrator によって実行される、ADSIResource1 という名前のリソース削除アクティビティーをログに記録するイベントを生成しています。
<Activity name=’createEvent’> <Action class=’com.waveset.session.WorkflowServices’> <Argument name=’op’ value=’audit’/> <Argument name=’type’ value=’Resource’/> <Argument name=’action’ value=’Delete’/> <Argument name=’status’ value=’Success’/> <Argument name=’subject’ value=’ResourceAdministrator’/> <Argument name=’name’ value=’ADSIResource1’/> </Action> <Transition to=’end’/> </Activity> |
次の例では、承認プロセスで各ユーザーが適用した変更を詳細なレベルまで追跡するワークフローに、特定の属性を追加する方法を示しています。この追加は通常、ユーザーからの入力をリクエストする ManualAction のあとに行われます。
ACTUAL_APPROVER は、実際に承認を実行した人物に基づいて、フォームおよびワークフロー (承認テーブルから承認する場合) で設定されます。APPROVER は、それが割り当てられた人物を識別します。
<Action name=’Audit the Approval’ application=’com.waveset.session.WorkflowServices’> <Argument name=’op’ value=’audit’/> <Argument name=’type’ value=’User’/> <Argument name=’name’ value=’$(CUSTOM_DESCRIPTION)’/> <Argument name=’action’ value=’approve’/> <Argument name=’accountId’ value=’$(accountId)’/> <Argument name=’status’ value=’success’/> <Argument name=’resource’ value=’$(RESOURCE_IF_APPLICABLE)’/> <Argument name=’loginApplication’ value=’$(loginApplication)’/> <Argument name=’attributes’> <map> <s>fullname</s><ref>user.accounts[Lighthouse].fullname</ref> <s>jobTitle</s><ref>user.accounts[Lighthouse].jobTitle</ref> <s>location</s><ref>user.accounts[Lighthouse].location</ref> <s>team</s><ref>user.waveset.organization</ref> <s>agency</s> <ref>user.accounts[Lighthouse].agency</ref> </map> </Argument> <Argument name=’originalAttributes’> <map> <s>fullname</s> <s>User’s previous fullname</s> <s>jobTitle</s> <s>User’s previous job title</s> <s>location</s> <s>User’s previous location</s> <s>team</s> <s>User’s previous team</s> <s>agency</s> <s>User’s previous agency</s> </map> </Argument> <Argument name=’attributes’> <map> <s>firstname</s> <s>Joe</s> <s>lastname</s> <s>New</s> </map> </Argument> <Argument name=’subject’> <or> <ref>ACTUAL_APPROVER</ref> <ref>APPROVER</ref> </or> </Argument> <Argument name=’approver’ value=’$(APPROVER)’/> </Action> |
ワークフローレポートのサポートとして、計時イベントをログに記録するようにワークフローを変更できます (「ワークフローレポート」)。標準監査イベントではイベントが発生したことのみをログしますが、タイミング監査イベントではイベントの開始時刻と停止時刻を記録して、時間計算の実行を可能にします。計時イベントデータに加えて、標準監査イベントでログに記録される情報の大部分が格納されます。詳細については、「タイミング監査イベントで格納される情報」を参照してください。
タイミング監査イベントをログに記録するには、監査を行うワークフロータイプごとに、ワークフローの監査を有効にする必要があります。
タスクテンプレートを使用して管理者インタフェースで設定できるワークフローの場合は、最初に、監査するワークフローに対応するタスクテンプレートを有効にします。手順については、「タスクテンプレートの有効化」を参照してください。
次に、「ワークフロー全体の監査」チェックボックスを選択して、ワークフローの監査を有効にします。手順については、「「監査」タブの設定」を参照してください。
タスクテンプレートのないワークフローの場合は、そうする代わりに、auditWorkflow という名前の変数を定義してその値を true に設定します。
ワークフローの監査を行うとパフォーマンスは低下します。
例 10–3 に、タイミング監査イベントの作成に必要なコードを示します。タイミング監査イベントをログするには、op 引数を auditWorkflow に設定します。
action 引数も必須で、次のいずれかの値に設定します。
StartWorkflow
EndWorkflow
StartProcess
EndProcess
StartActivity
EndActivity
auditconfig.xml にそのほかの action 引数も定義できます。
例 10–3 は、ワークフローでタイミング監査イベントを有効にする場合を示しています。ワークフローを設定するには、ワークフロー、プロセス、アクティビティーの最初と最後に auditWorkflow イベントを追加してください。
auditWorkflow の処理は com.waveset.session.WorkflowServices で定義されています。詳細については、「com.waveset.session.WorkflowServices アプリケーション」を参照してください。
<Action application=’com.waveset.session.WorkflowServices’> <Argument name=’op’ value=’auditWorkflow’/> <Argument name=’action’ value=’StartWorkflow’/> </Action> |
ワークフローでタイミング監査イベントのログを停止するには、ワークフローの終わりにある pre-end アクティビティーに例 10–4 のコードを追加します。ワークフローまたはプロセスの設定時には、end アクティビティーには何も追加できません。最後の auditWorkflow イベントの実行後、無条件に end イベントに移行する pre-end アクティビティーを作成してください。
<Action application=’com.waveset.session.WorkflowServices’> <Argument name=’op’ value=’auditWorkflow’/> <Argument name=’action’ value=’EndWorkflow’/> </Action> |
デフォルトでは、タイミング監査イベントは、次に示す属性など通常の監査イベントで保存されるほとんどの情報をログに記録します。
属性 |
説明 |
---|---|
WORKFLOW |
実行中のワークフローの名前 |
PROCESS |
実行中の現在のプロセスの名前 |
INSTANCEID |
実行中のワークフローの一意のインスタンス ID |
ACTIVITY |
イベントがログされているアクティビティー |
MATCH |
ワークフローインスタンス内での一意の識別子 |
これらの属性は auditableAttributesList にあり、logattr テーブルに格納されます。Identity Manager は、workflowAuditAttrConds 属性が定義されているかどうかもチェックします。
プロセスまたはワークフローの 1 つのインスタンス内でアクティビティーを複数回呼び出すことができます。監査イベントを特定のアクティビティーインスタンスと対応させるために、ワークフローインスタンス内で一意の識別子が logattr テーブルに格納されます。
ワークフローの logattr テーブルに追加の属性を格納するには、workflowAuditAttrConds リストを定義します。 これは GenericObjects のリストと見なされます。workflowAuditAttrConds リストに attrName 属性を定義すると、Identity Manager はコード内のオブジェクトから attrName を取得します。最初に attrName をキーとして使用し、続いて attrName 値を保存します。すべてのキーと値は、大文字の値として記録されます。