高度なカスタマイズ > ビジネスロジックのカスタマイズ > ワークフロー管理のカスタマイズ > プロモーションプロセスの強化 > ソリューション > 手順 — 自動再表示の追加
  
手順 — 自動再表示の追加
プロモーションリクエストで使用されるカスタマイズされたワークフロープロセステンプレートは、自動再表示に対応するよう修正することができます。以下の例は、定義済み "プロモーションリクエスト承認プロセス" の最新の作業版数で使用する手順についての概要です。
この例ではやり直しループが追加されています。ループの開始点は「プロモーションリクエストの承認」タスクです。プロモーション承認者のメンバーがこのタスクを受信します。「やり直し」という追加ルートが「プロモーションリクエストの承認」タスクに追加されています。
この例では、すべての承認者の投票に基づき、実行すべきルートを決定する集計定義式が定義されます。
Vector v = new Vector();
v.addElement("Approve");
v.addElement("Reject");
v.addElement("Rework");
Vector vResult = wt.workflow.work.WfTally.any(self, v);
if( vResult.contains("Rework")) {
result = "Rework";
} else if ( vResult.contains("Reject") ) {
result = "Reject";
}else {
vResult = WfTally.all(self,v);
if( !vResult.isEmpty() ) {
result = (String)vResult.get(0);
}
}
この定義式は、任意の承認者が「やり直し」を選択した場合、「やり直し」オプションが行われることを示しています。承認者が「やり直し」を選択せず、任意の承認者が「却下」を選択した場合は、「却下」が行われます。「やり直し」と「却下」が選択されない場合は、「承認」ルートに進みます。
承認者のタスクには、特別な指示が含まれなくなりました。ただし、special_instructions というプロセス変数が存在します。このフィールドは処理においてグローバルのため、プログラムによって設定することができます。強化されたワークフローは、「プロモーションリクエストの承認」タスクの「コメント」フィールドを使用して、承認者が「やり直し」に投票したコメントの文字列をアセンブリします。この文字列は、やり直しの特別な指示として設定されます。たとえば、user1、user2、user3 という承認者役割の 3 人のユーザーがいるとします。
User1 は、"Looks good" コメント付きで承認に投票
User2 は、"Modify" コメント付きでやり直しに投票
User3 は、"Resize" コメント付きでやり直しに投票
この場合、やり直し担当者は特別な指示付きのタスクを受信します。
[User2]: Modify
[User3]: Resize
一度やり直しルートが選択されると、やり直しのためにプロモーションターゲットがロックされ、プロモーション作成者はプロモーションリクエストのやり直しタスクを受信します。このタスクには、やり直しが必要なプロモーションアイテムに関する承認者の特別な指示が提供されます。特別な指示フィールドは、承認タスクの場合は書き込み可能、やり直しタスクの場合は読み取り専用です。作成者はその後、このタスクの特定のプロモート可能オブジェクトに作業版数を適用できます。作成者は、プロモーションに不向きかどうかを判断し、却下オプションを選択できます。この場合、プロモーションリクエストは却下されます。
やり直しを実行するユーザーは、修正が許可されたオブジェクトのみを更新することができます。プロモーションリクエストの大幅なやり直しでプロモーションリクエストのコンテンツの修正が行えない場合は、却下が必要となり、やり直しアイテムと新規プロモーションリクエストが必要となります。やり直しループは、大幅な構造変更以外の書式エラー、数量または単位の問題、ジオメトリの細部の変更などといった、軽度の問題を処理するためのものです。
プロモーション作成者がサブミットオプションを選択すると、プロモーションリクエストによってプロモーションオブジェクトを再表示する定義式が実行されます。
wt.maturity.PromotionNotice pn = (wt.maturity.PromotionNotice)primaryBusinessObject;
try
{
com.ptc.windchill.enterprise.maturity.PromotionNoticeWorkflowHelper.refresh(pn);
wt.maturity.MaturityServerHelper.service.lockTargets (pn);
catch( Exception wte )
}
{
wte.printStackTrace();
}
PromotionNoticeWorkflowHelper.refresh(pn) メソッドによって、プロモーションオブジェクトがソリューションで定義されたプリファレンス規則に従って最新の作業版数に再表示されます。ループが終了し、承認者は再度「プロモーションリクエストの承認」タスクを受信します。ロックがサポートされている場合、承認の前にプロモーションターゲットが不注意で修正されないよう、lockTargets() の呼び出しを含めることは重要です。
FIT テーブル
以下の FIT テーブルは、最新作業版数の再表示プリファレンスが自動再表示にどのように影響するかについて示しています。
プロモート可能
プロモーションターゲット
最新作業版数の再表示のプリファレンス値
再表示可能
part_1
なし
何もしない
false
part_2
Y
プロモーション候補を再表示
true
part_3
Y
すべて
true
part_4
N
プロモーション候補を再表示
false
part_5
Y
すべて
true