![]() | |
Sun Java™ System Identity Manager 7.0 ワークフロー、フォーム、およびビュー |
第 1 章
ワークフローこの章では、Sun JavaTM System Identity Manager のワークフローについて説明します。
この章の内容
関連する章
- 「ワークフローサービス」- Identity Manager をカスタマイズする実装者が使用できるワークフローサービスのメソッドについて説明します。
- 「XPRESS 言語」- ワークフローやフォームにロジックを含めるために XPRESS 言語で記述する式の一覧を示し、それぞれについて説明します。
- 『Identity Manager 配備ツール』に記載されている「Identity Manager 統合開発環境 の概要」- Identity Manager 統合開発環境 (IDE) と、ツールの起動、エディタオプションの設定、フォームの保存とデバッグの方法について説明します。
ワークフローについてIdentity Manager ワークフローは、定義されている規則に従って一貫して実行される、一連のアクションとタスクを定義します。Identity Manager 統合開発環境 (IDE) のグラフィカルユーザーインタフェースを使用して、Identity Manager によって起動される各ワークフローをカスタマイズできます。
ワークフローを操作する前に、次の項目について理解してください。
ワークフローとは
一般的に、ワークフローは、論理的で反復可能なプロセスであり、ある関与者から別の関与者にドキュメント、情報、またはタスクが渡されると、一連の手順規則に従ってアクションが実行されます。この関与者は、人物またはマシンを表し、その両方を表す場合もあります。
Identity Manager では、この概念は、特に Identity Manager のワークフロー機能として実装されています。この機能は、ユーザーアカウントの作成、更新、有効化、無効化、および削除を管理する、複数のプロセス (ワークフロー) から構成されます。
実行するほとんどの Identity Manager タスクは、ワークフロープロセスのセットとして定義できます。Identity Manager にユーザーを作成するときは、たとえば、対応するワークフロープロセスが、次の処理を定義、実行します。
これらのアクティビティーは、Identity Manager 統合開発環境 を使用してカスタマイズできます。
通常、ワークフローはビューのチェックインに付随して呼び出されます。ビューのチェックは、フォームとビューを実装するページで「保存」をクリックしたときに行われます。
ワークフロープロセス
製品インタフェースのどの位置から呼び出すかに応じて、ワークフローはワークフロー、タスク、プロセス、またはタスク定義として参照されます。
タスク定義
Identity Manager の管理者インタフェースの「デバッグ」ページから、TaskDefinition のリストを検索し、ワークフロープロセスにアクセスします。「List Objects」ボタンの横にある「タイプ」メニューから「TaskDefinition」を選択し、「List Objects」をクリックします。アクセスできる TaskDefinition の一覧が表示されます。ワークフローのカスタマイズでは、そのワークフローの TaskDefinition オブジェクトを編集します。
TaskDefinition の起動インスタンスは、TaskInstance オブジェクトとして表されます。このオブジェクトも「デバッグ」ページから表示できます。
タスク定義パラメータ
次の表は、標準の設定パラメータを示しています。
手動アクションについて
手動アクションは、手動によるやり取りを定義した、ワークフロープロセス定義の一部です。ワークフローエンジンが手動アクションを処理するときは、リポジトリに WorkItem オブジェクトが作成されます。作業項目に「完了」のマークが付いてからでないと、ワークフローは次に進むことができません。ほとんどの手動アクションは、承認の要求に使用されるため、作業項目の表は「承認」タブにあります。
ワークフローに属する手動アクションはどれも、リポジトリ内の WorkItem オブジェクトで表されます。
TaskInstance
ワークフロータスクが呼び出されると、ワークフローエンジンはリポジトリに TaskInstance を作成します。TaskInstance はリポジトリ内のオブジェクトの 1 つで、実行するワークフロープロセスの実行時状態を保持します。また、作成元となった TaskDefinition のコンテキスト変数と即時遷移情報を格納します。
TaskInstance は、TaskDefinition の生成 ID を使用して、説明的な TaskDefinition オブジェクトを参照します。TaskDefinition を編集すると、すでに実行中の TaskInstance は変更前の TaskDefinition オブジェクトを継続して使用しますが、新たに実行する TaskInstance は、新たに生成された ID を使用して修正後の TaskDefinition を使用します。
タスクインスタンスの削除のタイミング
TaskInstance の存続期間は、resultLimit パラメータによって決定されます。結果の有効期間の値にゼロが設定されている場合は、タスクは完了後ただちに削除されます。正の値が設定されている場合は、TaskInstance はその時間 (単位は分) だけ維持されます。
保留になっているワークフローの TaskInstance を削除するには、次の手順に従います。
リポジトリ内のワークフロー
Identity Manager のリポジトリには、通常は、タイプが WFProcess の設定オブジェクトとしてワークフローが存在します (Create User ワークフローは、このオブジェクト定義の唯一の例外で、ProvisioningTask オブジェクトとして定義される)。taskType は常に Workflow です。
注
Identity Manager は、ワークフローの実行中のリポジトリをロックしません。これは、ワークフローが数日にわたって実行される可能性があり、その間中リポジトリをロック状態で維持することはできないためです。ただし、同じユーザーによる、別の更新ワークフローの呼び出しは、Identity Manager によって禁止されます。
ワークフローエンジン
ワークフローエンジンは、実行時のワークフロープロセスの実行を可能にするソフトウェアサービスです。ワークフロープロセスをサポートするワークフローエンジンの主な機能は次のとおりです。
ワークフローコンポーネントワークフロープロセスは、目的を達成するまでに必要なステップを表します。プロセスが定義する内容は次のとおりです。
各ワークフロープロセスは、次のコンポーネントのいずれか、またはその組み合わせによって定義されます。
- Activity - プロセスに含まれる 1 つの論理手順を表します。
- Action - アクティビティーの実行方法を定義します。アクションは、簡単な式評価の場合もあれば、複雑な Java クラスの呼び出しの場合もあります。
- Transition - アクティビティーから別のアクティビティーへの移動を定義します。
- Split - 1 つのアクティビティーから複数のアクティビティーへの移動を定義します。Split は、さらに次のように定義されます。
- Join - 複数のアクティビティーから単一アクティビティーへの移動を定義します。Join コンポーネントは、さらに次のように定義されます。
- Subprocess - プロセスに含まれる別のアクティビティーから呼び出されるアクティビティー、アクション、および遷移のセットを定義します。
図 1-1 ワークフローの一般的なプロセスとコンポーネント
デフォルトのワークフロープロセスIdentity Manager IDE を使用することで、デフォルトの Identity Manager プロセスを編集し、一連のステップをカスタマイズできます。Identity Manager のワークフロー機能には、次のようなデフォルトプロセスのライブラリが含まれます。
- ユーザーワークフロー - ユーザーの作成、削除、更新、有効化、無効化、名前の変更など、Identity Manager ユーザーに関連するタスクのステップを定義します。
- Identity Manager オブジェクトワークフロー - リソース、リソースグループ、組織、組織単位など、Identity Manager のオブジェクトに関連するすべてのタスクのステップを定義します。たとえば、ロール管理やワークフロー管理などのワークフローは、単にビューの変更をリポジトリに適用するだけですが、承認や、その他のカスタマイズのきっかけを提供することもできます。
- その他のワークフロー - 調整、Remedy テンプレート、その他のカスタムタスクなど、Identity Manager の各種機能やオブジェクトのステップを定義します。
例
次のユーザー作成ワークフローは、タイムアウト時間に達した時点で、エスカレーションアクティビティーを呼び出すように変更されています。タイムアウト時間に達するまでは、APPROVED 変数の結果が評価されます。評価の結果に基づいて、承認と拒否に対応したアクティビティーのどちらに遷移するかが決定されます。
<Activity name='Wait'>
<ManualAction name='approve' timeout='180'>
<Owner name='$(APPROVER)'/>
<Variable name='APPROVAL' value='false'/>
<Return from='APPROVAL' to='APPROVED'/>
<FormRef>
<ObjectRef type='UserForm' id='#ID#UserForm:ApprovalForm'/>
</FormRef>
<ReportTitle>
<concat>
<s>Awaiting approval from ¥n</s>
<ref>APPROVER</ref>
</concat>
</ReportTitle>
</ManualAction>
<Transition to='Escalate'>
<eq>
<ref>WF_ACTION_TIMEOUT</ref>
<s>true</s>
</eq>
</Transition>
<Transition to='Approved'>
<eq>
<ref>APPROVED</ref>
<s>true</s>
</eq>
</Transition>
<Transition to='Rejected'/>
</Activity>
WorkItem のタイプ
手動アクションには、ワークフローエンジンによって手動アクションが実行された場合に生成される作業項目に、タイプを割り当てる機能があります。カスタマイズ内容に作業項目のタイプを割り当てることで、表示する作業項目や操作対象となる作業項目のセットをフィルタリングできます。
システムは、次のタイプの作業項目を認識します。
表 1-2 作業項目のタイプ
作業項目のタイプ
説明
承認
承認の作業項目であることを示します。
ウィザード
ユーザーによる任意操作の作業項目であることを表します。
保留
一時的な作業項目であることを表します。ワークフローにバックグラウンドでの実行を強制するときは、このタイプを使用します。
これ以外に、カスタマイズした作業項目のタイプを割り当てることもできます。たとえば、リソースの承認を表す作業項目タイプを resource に設定したり、ロールの承認を表す作業項目タイプを role に設定したりできます。
認証のタイプ
手動アクションには、作成する作業項目の認証タイプも指定できます。認証のタイプは作業項目のタイプとは異なり、現在の管理者が権限を持たない項目を排除できるように、クエリーに返される作業項目をシステムが自動的にフィルタリングするタイプです。通常は、承認者としての権限を持つどの管理者にも、担当する組織のすべての作業項目を表示する権限が割り当てられます。
手動アクションに作業項目の認証タイプを指定するには、次のように authType 属性を使用します。
<ManualAction authType='RoleApproval'>
作業項目タイプの割り当て
ManualAction 定義に項目タイプを指定するには、itemType 属性を設定します。次に例を示します。
<ManualAction itemType='approval'>
WorkItem の管理表示機能の制限
通常は、承認者としての権限を持つどの管理者にも、担当する組織のすべての作業項目を表示する権限が割り当てられます。管理者が組織の作業項目のサブセットのみを表示できるようにするときは、次の手順に従います。
遷移の作成
遷移は、アクティビティーが 1 つまたは複数の別アクティビティーに移動するための規則を定義します。遷移には条件を設定できます。つまり、特定の条件が満たされる場合にのみ、遷移が行われるように設定できます。単純なアクティビティーには、アクティビティーを構成するアクションが完了するとただちに実行される、1 つの無条件遷移のみを含めることができます。
Identity Manager が使用するプロセスの更新プロセスをカスタマイズするときは、ワークフロープロセスが想定どおりに正しく完了するように、変更内容を検証してから保存してください。保存したら、Identity Manager が使用できるように、変更したワークフローをインポートします。Identity Manager IDE デバッガを使用することもできます。Identity Manager IDE によるワークフロープロセスの編集については、「Identity Manager IDE の使用」を参照してください。
本稼動環境のワークフローの編集
本稼働環境のワークフロープロセスはカスタマイズしないでください。
元のワークフローのインスタンスの実行中にワークフローのアクティビティーやアクションを編集すると、問題が生じることがあります。具体的には、TaskInstance には TaskDefinition ワークフローへの参照が含まれ、ID によって特定される現在のアクティビティーまたはアクションが格納されています。これらの ID を変更すると、実行を再開したときに、想定されているとおりにタスクが再開されない可能性があります。
本稼働環境のワークフローの編集を回避できない場合は、次の手順に従います。これにより、古い定義を使用するタスクインスタンスによって保留されている作業項目の喪失を回避できます。
この手順に従うと、Identity Manager 内で保留状態にある既存の Create User タスクに問題が生じるのを回避できます。この場合、保留中のタスクで参照される、TaskDefinition の一意の ID は維持されます。
標準ワークフローIdentity Manager には、使用されるプロセスにマップされた、標準のワークフローが最初から用意されています。これらのデフォルトワークフローの簡単な説明については、「ワークフローのデフォルトアクティビティー」を参照してください。デフォルトのワークフローを表示、編集するには、次の手順に従います。
Identity Manager の管理者インタフェースから「設定」 > 「フォームおよびプロセスマッピング」を選択すると、プロセスマッピングを表示できます。
プロセスのカスタマイズ1 つまたは複数の Identity Manager のプロセスを変更することで、ステップを削除して新しいステップを設定したり、既存のステップをカスタマイズしたりできます。プロセスの各ステップは、アクティビティーによって表されます。
ワークフローの編集時または作成時に利用できる定義済みアクティビティーを提供するワークフローツールボックスは、ワークフローの変更に役立ちます。
このツールボックスを開くには、ダイアグラムビューを右クリックし、ツールボックスオプションを選択します。
ワークフローのデフォルトアクティビティー
次に、用意されているデフォルトアクティビティーをカテゴリ別に示します。
ワークフロータスクのアクティビティー
デフォルトの名前変更タスクの使用
カスタマイズを行わずにデフォルトの名前変更タスクを使用する場合は、ワークフローに次のアクションを指定します。
<Action process='Rename Task'>
<Argument name='name' value='新しいタスク名'/>
</Action>
ワークフローの進行状況の追跡
タスクに指定されている所有者は、ワークフロータスクの状態を常に確認できます。多くの場合、所有者はタスクを開始した人物ですが、所有者情報を定義し直すことができます。タスクはリポジトリ内のオブジェクトであるため、適切な権限を持つユーザーであれば、誰もがそれを表示できます。
通常、ワークフローの状態は executing、pending、creating、および suspended という文字列で「状態」列に表示されます。ワークフローの状態を要約した、より説明的な文字列をこの列の表示に追加できます。
この機能を実装するには、追加可能な 2 つの式のいずれかを WFProcess ファイルに追加します。
この例の式の結果は、条件が当てはまる結果が保留中の場合に、「状態」列に表示されます (たとえば、pending (カスタム文字列))。
ワークフローの監査の有効化ワークフローの監査は、通常の監査と類似していますが、ワークフローの監査では、時刻を計算するための追加情報も記録されます。通常の監査では、イベントの発生をレポートしますが、イベントがいつ開始され、終了したのかは示されません。Identity Manager の監査の詳細については、『Identity Manager Audit Logging』を参照してください。
ワークフローの監査を有効にするには、ワークフロー、あるいは、1 つまたは複数のアクティビティーに audit 属性を追加します。この属性を追加し、管理者インタフェースの適切なタスクテンプレートで「ワークフロー全体の監査」ボックスにチェックマークを付けることで、ワークフローの監査が有効になります。タスクテンプレートで監査を有効にする手順については、『Identity Manager 管理ガイド』の「タスクテンプレート」の章を参照してください。
概要
ワークフロー監査の処理では、事前に定義されている属性の名前とその値が、監査対象イベントごとに記録されます。ワークフロー内の監査を有効にするには、WFProcess 要素、あるいは、1 つまたは複数の Activity 要素に audit 属性 (値は true に設定) を追加します。WFProcess レベルで属性を設定すると、ワークフロー全体が監査対象となり、個々の Activity 要素に属性を追加した場合は、特定のアクティビティーのみが監査対象となります。監査属性を設定しない場合、監査は無効になります。また、ワークフローを呼び出すタスクテンプレート内でも監査を有効にする必要があります。
次の例は、Notify アクションの監査を有効にします。
<Activity name='Notify' audit='true'>
記録される情報と記録される場所
デフォルトでは、ワークフローの監査は、通常の監査イベントで記録されるほとんどの情報が収集されます。これには、次の属性が含まれます。
これらの属性は、logattr テーブルに格納され、auditableAttributesList から取得されます。
Identity Manager は、workflowAuditAttrConds 属性が定義されているかどうかについても調べます。
プロセスまたはワークフローの 1 つのインスタンスの中で、特定のアクティビティーを何度も呼び出すことができます。特定のアクティビティーインスタンスの監査イベントを一致させるために、Identity Manager は、ワークフローインスタンス内の一意の識別子を logattr テーブルに記録します。
ワークフローの logattr テーブルに追加属性を記録するには、workflowAuditAttrConds リスト (GenericObjects のリストと見なされる) を定義する必要があります。workflowAuditAttrConds リストに attrName 属性を定義すると、Identity Manager は、コード内のオブジェクトから attrName を抽出します。まず、attrName をキーとして使用し、次に、attrName の値を記録します。すべてのキーと値は、大文字の値として記録されます。
アプリケーションの追加Identity Manager IDE からアクセスできるように、独自に用意した Java メソッドを登録できます。次の手順で実行します。
- idm/config/workflowregistry.xml ファイルを編集します。
- 次の例のような形式で、アプリケーションの定義を追加します。
<WorkflowApplication name='Increment Counter'
class='com.waveset.util.RandomGen' op='nextInt'><ArgumentDefinition name='start' value='10'>
<Comments>Get the next counter</Comments>
</ArgumentDefinition>
</WorkflowApplication>- Identity Manager IDE を再起動します。
アプリケーションメニューに新しいアプリケーションが追加されます。
ワークフロープロパティーの設定ワークフローの設定プロパティーは、System Configuration オブジェクトによって制御されます。次の表は、頻繁に使用される設定プロパティーを示しています。
Identity Manager 統合開発環境を使用して System Configuration オブジェクトを表示または編集する方法については、『Identity Manager 配備ツール』の「Identity Manager 統合開発環境の概要」を参照してください。
表 1-9 システム設定オブジェクトのワークフロープロパティー
属性名
データ型
デフォルト値
consoleTrace
String
false
fileTrace
NULL
maxSteps
String
5000
resultTrace
String
false
retainHistory
String
false
traceAllObjects
String
false
traceLevel
String
1
validationLevel
String
CRITICAL
consoleTrace
コンソールにトレースメッセージを送信するかどうかを指定します。true に設定した場合は、トレースメッセージが送信されます。デフォルトは false です。
fileTrace
名前が付けられたファイルにトレースメッセージを送信するかどうかを指定します。特定のファイルにトレースメッセージを送信するには、そのファイルの名前を入力します。
maxSteps
ワークフロープロセスまたはサブプロセスで許容される、最大ステップ数を指定します。このレベルを超過すると、その時点で Identity Manager はワークフローを終了します。この設定は、無限ループによるワークフローのスタックを検出するための安全装置として使用されます。デフォルトは 5000 ステップです。
resultTrace
タスクの結果オブジェクトにトレースメッセージを維持するかどうかを指定します。true に設定した場合は、タスクの結果オブジェクトにトレースメッセージが累積されます。
retainHistory
タスクの完了時に、履歴全体を返すかどうかを指定します。true に設定した場合は、Identity Manager は、ケース履歴全体を返します。これは、履歴を分析してプロセスの問題を診断する場合には便利ですが、結果全体のサイズが大きくなります。
traceAllObjects
汎用オブジェクトをワークフローのトレース処理の対象とするかどうかを指定します。
traceLevel
ワークフローのトレースに含める詳細度を指定します。値を指定しないか、または 0 を指定した場合は、もっとも詳細な情報がトレースされます。デフォルトは 1 です。
validationLevel
実行前にワークフローの検証に適用される厳密度を指定します。設定したレベル以上のエラーが検出された場合は、ワークフローの実行は開始されません。有効な値は、CRITICAL、ERROR、WARNING、または NONE です。NONE を指定した場合は、検証を完全に無効にします。
デフォルトは CRITICAL です。
Synchronize User Password ワークフローユーザーパスワードを同期させるために、PasswordSync アプリケーションによって使用されます。JMS リスナーアダプタによって呼び出されるこのワークフローは、アダプタが送信する個々の要求を受け取り、「ユーザーパスワードの変更」ビューをチェックアウトして後ほどチェックインします。チェックインを完了すると、このワークフローは、デフォルトで、チェックインの成功または失敗を示す確認の電子メールをユーザーに送信します。
変数
Synchronize User Password ワークフローには、次の変数があります。
IDMAccountId
メッセージマッパーによって解決される Identity Manager アカウント ID を指定します。NULL は、ユーザーが Identity Manager に見つからなかったことを示します。
password
すべてのリソースと同期させる必要があるパスワードを識別します。
sourceResource
Identity Manager にリソースアカウントが見つかったリソースの名前を識別します。
userEmail
ユーザーの電子メールアドレスを指定します。この値は、Active Directory から取得されます。NULL の場合は、Identity Manager に記録されている電子メールアドレスです。
PasswordSyncThreshold
同期を開始するまでの秒数を指定します。この設定により、Identity Manager のユーザーインタフェースで更新されたパスワードがソースリソースに送信されても、ユーザーパスワードの同期は繰り返されません。
lastSourcePasswordUpdate
Identity Manager がソースリソースのパスワードを最後に更新してから経過した時間を、ミリ秒単位で示します。この設定により、Identity Manager のユーザーインタフェースでリセットしたパスワードがリソースに送信されても、ユーザーパスワードの同期が再度繰り返されることはありません。
lastUpdateSecs
パスワードが更新されてから経過した時間を、秒単位で示します。
PasswordSyncResourceExcludeList
常に同期対象から除外されるべきリソースの名前を一覧表示します。この属性を設定するには、System Configuration オブジェクトの PasswordSyncResourceExcludeList 属性を編集します。
resourceAccountId
ソースリソースから受け取るネイティブ accountId を指定します。
アクティビティー
checkForIDMAccountID
IDMAccountId が NULL であるかどうかを調べます。NULL である場合は、noIDMAccountForResourceAccount という空のアクティビティーに遷移します。NULL 以外のアカウントが存在する場合は、ワークフローは checkLastUpdateThreshold に遷移します。
noIDMAccountForResourceAccount
デフォルトでは何も行いませんが、受け取ったリソースアカウント ID や GUID をメッセージマッパーが Identity Manager のユーザー名に解決しなかった場合に呼び出されます。
checkLastUpdateThreshold
lastUpdateSecs 変数の値が PasswordSyncThreshold の値未満であることを確認します。このアクティビティーは、Identity Manager 製品でパスワードが変更された場合に、パスワードのリセットが繰り返されることを防ぎます。たとえば、ユーザーがリソース (Active Directory を含む) のパスワードを変更します。この後、パスワード通知ツールは、パスワードが変更されたことを Identity Manager に伝えます。この確認を行わない場合、Identity Manager はパスワードの変更を余分に実行することになります。passwordThreshold の値を超過した場合は、checkoutView アクティビティーは継続されます。
CheckoutView
指定された Identity Manager アカウントの ChangeUserPassword をチェックアウトします。チェックアウトに成功したときは、ワークフローは SetPasswordView に遷移します。失敗した場合は、NotifyFailure に遷移します。
SetPasswordView
リソースアカウントに対して繰り返され、ソースリソースでもなく、排除リストにも含まれないすべてのリソースを選択します。それ以外のすべてのリソースは選択され、直後のパスワード変更が不要であることを示すために、expiredPassword フラグを false に設定します。このアクティビティーは常に CheckTargets に遷移します。
CheckTargets
同期の対象が、ほかに少なくとも 1 つ残されていることを確認します。Identity Manager がその他のリソースアカウントを検出しない場合は、ワークフローは UnlockView に遷移します。
UnlockView
現在チェックアウトされたビューのロックを解除し、終了に遷移します。
CheckinView
NotifyFailure への失敗通知遷移がある場合に、ビューをチェックインします。それ以外の場合は、Notify に遷移します。
Notify
PasswordSyncNotice 電子メールテンプレートを使用して、同期に成功したことをエンドユーザーに通知します。このアクティビティーは常に終了に遷移します。
NotifyFailure
PasswordSyncNotice 電子メールテンプレートを使用して、同期に失敗したことをエンドユーザーに通知します。このアクティビティーは常に終了に遷移します。