第2章

ワークフローの設計

この章では、ワークフローを開始する方法について説明し、ワークフローの設計概念についても紹介します。この章には、次のトピックが含まれています。

 
Top of page

ワークフローの開始

ワークフローの開発をはじめるまえに、インストールされているコンテンツライフサイクルアプリケーションを確認してみます。 このワークフローは、ドキュメントの割り当て、オーサリング、承認、およびContent Managementサブシステムへの発行を含むいくつかのアクティビティを介してドキュメントに従います。 また、インストールされたWorkflowStartProcessポートレットおよびWorkflowQueueポートレットを使用して、ユーザアクティビティの宛先にワークアイテムのプロセスおよびキューを開始します。

For more information    アプリケーションの実行およびソースへのアクセスの詳細については、を参照してください。

ワークフローモデラーを理解するには、コンテンツライフサイクルプロセスを開くか独自のプロセスを作成する必要があります。 exteNd Directorページフローモデラーを使用したことがある場合は、設計環境が同じであることに気付くでしょう。

For more information    詳細については、を参照してください。

 
Top of page

プロセス設計概念

Workflowサブシステムを使用すると、2つの基本的なフロー構造を作成することができます。

 
Top of section

単一ブランチのフロー

単一ブランチ構造では、ワークフローエンジンは、プロセスが終了するまで単一のワークアイテムを1つのアクティビティから次のアクティビティに転送します。 インストールされているコンテンツライフサイクルワークフローは、単一ブランチフローの一例です。

Branch-singleEx

 
Top of section

複数ブランチのフロー

より複雑な要求には、フローを分割することによって、異なるプロセスのブランチによる並行作業または排他的な作業が可能になります。 並行実行では、異なる作業を同時に実行できるようにプロセスは2つかそれ以上のパスに従います。たとえば、異なる処理が必要な2つのドキュメントがワークアイテムにあるとします。 並行実行の例を次に示します。

Branches-multi1

この例では、開始アクティビティに続いて作業が両方のブランチに転送されたと想定しています。 このような条件付ブランチの場合は、「同期化マージ」アクティビティを使用してブランチをマージする必要があります。

同期化マージの機能

次に、ワークフローエンジンが複数のブランチを同期化する方法を示します。

  1. 分割が発生すると、エンジンはワークアイテムをリンクがtrueに評価される各ブランチの次のアクティビティに転送します。

  2. 作業は各ブランチアクティビティによって処理され、それぞれの作業が同期化マージアクティビティに達するまでフローロジックに従って転送されます。

  3. ワークフローエンジンでは、すべてのブランチで作業が完了するまで待機し、ワークアイテムを次のアクティビティに転送します。

複数分割

この例では、複数分割を処理する方法について説明します。 ほかの分割に移行するまえに、個々の分割をマージする必要があります。

Branches-multi2

排他的なブランチおよびループ

次の例では、さらに2つの点について説明します。

この例では\xa4 最後のアクティビティの後の分割は、排他的に終了アクティビティに進むか分割前の最初のアクティビティにループバックすると想定します。

Branches-multi3

For more information    詳細については、同期化マージアクティビティを参照してください。

 
Top of page

ワークフローでのページフロー

exteNd Directorは、ページフローおよびワークフローの統合をサポートします。 ワークフローモデラーのページフローアクティビティでは、ページフローをワークフロー内の表示アクティビティとして実行するように指定できます。 これにより、exteNd Directorページフローモデラーのリッチクライアント機能をワークフロープロセスに組み込むことができます。

ワークフローでページフローを使用するには、次のコンポーネントを実装する必要があります。

ワークフロー/ページフロー統合コンポーネント

説明

ページフローアクティビティ

ワークフロープロセスで、ページフローを実行する場所に、ページフローアクティビティを配置します。

このアクティビティは、持続性ワークアイテムをページフローに渡します。

ワークフローリターンアクティビティ

ワークアイテムをワークフローに返す場所にページフローのワークフローリターンアクティビティを配置します。

このアクティビティは、ワークフローにワークアイテムを次のアクティビティに転送するように伝えます。

Flowスコープパス

ページフローおよびワークフローの両方のFlowスコープパスを使用してワークアイテムインスタンスを保存します。

ワークフローに含まれたページフローは、Flowスコープを介して同じ持続性ワークアイテムにアクセスします。

 
Top of section

ワークフローリターンアクティビティの使用

ワークフロープロセスでのページフローアクティビティは、次のようになります。

WorkflowReturnEx1

ページフローアクティビティが指すページフローは、次のようになります。

WorkflowReturnEx2

この例では、ワークフローでの一般的な要求を処理する方法を示します。 ユーザは、ワークアイテムを転送するか転送しないかオプションで編集しますが、別のセッションのために現在のワークアイテムの状態を保持できます。 たとえば、ユーザが[保存]および[転送]ボタンを順に選択して1つのリンクが表示され、ユーザが[転送]しないで[保存]を選択し、もう1つのリンクが表示されたとします。

ワークフローリターンアクティビティは、最初の要求を処理します。 2つめの要求に対して、この例ではHTMLアクティビティを使用して単にウィンドウを閉じただけです。

  <script>self.close()</script>

 
Top of section

ワークアイテムのロックおよびロック解除

ワークフローユーザにとって、ランタイム時にワークアイテムをロックしたりロック解除できることは基本的なワークフロー要求です。 ワークフローAPIでは、この目的のために、EbiWorkitemDelegateでlock()およびunlock()メソッドを提供しています。 ワークフローで実行しているページフローについては、ワークアイテムのロックおよびロック解除に使用できるFlowスコーププロパティがあります。

Flowスコーププロパティ

説明

ロック

現在のユーザに対してワークアイテムをロックします。

  • ワークアイテムが正常にロックされたか、このユーザに対してワークアイテムがすでにロックされていた場合は、trueを返します。

  • ほかのユーザに対してワークアイテムがすでにロックされていた場合は、falseを返します。

ロック解除

現在のユーザに対してワークアイテムのロックを解除します。

  • ワークアイテムのロックが正常に解除されたか、ワークアイテムのロックがすでに解除されていた場合は、trueを返します。

  • ワークアイテムがほかのユーザに対してロックされているため、ロックを解除できなかった場合は、falseを返します。

持続的

ワークアイテムの状態を返します。

ワークアイテムが持続的状態(ワークフローコンテキスト)の場合は trueを返し、持続的でない場合(ページフローコンテキスト)はfalseを返します。

作業のロックおよびロック解除は、ページフローアクティビティ内で行われます。 一般的に、ページフローを開始するときにワークアイテムをロックし、ワークフローリターンアクティビティが実行されるまえにロックを解除します。

WorkflowReturnEx3

上記のページフローを呼び出すワークフローにページフローアクティビティがあって、宛先がキューからワークアイテムにアクセスした場合はワークアイテムをロックするとします。 基本的な手順は、次のとおりです。

注記:   この節では、ワークフローモデラーにスコープパスをコピーする方法については説明していません。詳細については、を参照してください。 スコープパスの詳細については、『exteNd Directorアプリケーションの開発』のスコープパスの使用に関する章を参照してください。

  1. Flow/lockを使用してワークアイテムをロックして別の場所に戻り値をコピーします。たとえば、次のとおりです。

      Flow/lock ---> Flow/property/lockSuccess
    

    スコープのコピーは、モードアクティビティの前でも後でもできます。

  2. 戻り値を検証して両方のケースについて処理します。

  3. Flow/unlockを使用して、ワークフローに返す前にワークアイテムのロックを解除します。たとえば、次のとおりです。

      Flow/unlock ---> Flow/property/unlockSuccess
    

    スコープのコピーは、ワークフローリターンアクティビティの前にできます。

    この場合は、戻り値を無視できます。



Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved.  more ...