First Previous Next Last ワークフローガイド  

第2章    基本的なワークフロー開発

この章では、基本的なワークフロー開発の概念について説明し、ワークフロークライアントAPIについても紹介します。 この章は、次のトピックから構成されています。

 
Top of page

開発プロセスについて

開発プロセスには、次のタスクが含まれます。

ビジネスニーズの分析

設計段階では、ビジネスプロセスで自動化する内容を最初に決定する必要があります。 設計はできるだけ詳細に行い、ビジネスエキスパートおよびアプリケーション開発者も関与することが推奨されます。 取り組む可能性のある問題の一部は、次のとおりです。

ワークフロープロセスの作成

ワークフローデザイナでは、アプリケーション開発者としてプロセスをグラフィカルにレイアウトし、アクティビティとリンクを作成して、該当する場合にユーザとプロパティを割り当てます。 その後、ワークフローエンジンで実行できるXMLファイルとしてプロセスを保存します。

For more information    詳細については、 第5章「ワークフローデザイナ」を参照してください。

ワークフローユーザの定義

Directorワークフローでは、次の2種類の認証されたユーザを認識します。

ほとんどの場合、ワークフローに対するユーザアクセスの設計は、役割を設計するプロセスです。 役割は、通常、アクティビティに並行します。 プロセスを設計する場合は、必要なアクティビティを識別し、そのアクティビティのユーザインタフェースを設計して、認証されたユーザのリストで役割を定義します。

For more information    詳細については、『ユーザ管理ガイド』の 役割ベースの認証に関する章を参照してください。

ワークフロークライアントの開発

ワークアイテムを作成して、ワークフロープロセスおよびワークフローエンジンと通信するためには、アプリケーション開発者としてワークフロークライアントAPIを使用します。 ワークアイテムは、ドキュメントとプロパティを含むことのできる作業対象のデータのコンテナです。

 
Top of page

ワークフローサブシステムコンポーネント

ワークフロークライアントを開発し始める前に、ワークフローサブシステムの異なる部分を理解しておく必要があります。

ワークフローコンポーネント

説明

ワークフローエンジン

ワークフロープロセスを実行し、キュープロセスを制御します。

ワークフローキュー

ワークアイテムデータを保持し、ワークフロークライアントとワークフローエンジンの間を仲介します。 また、キューは、自動アクティビティも監視します。

プロセス定義

ワークフローデザイナを使用してワークフロー開発者が作成するアクティビティとリンクを表します。

アクティビティ

プロセス内の各ステップで実行される作業を定義します。 アクティビティはワークフローデザイナで定義され、基本的なタイプには次の2つがあります。

  • 「ユーザアクティビティ」: ユーザの操作を必要とするアクティビティ。 ワークアイテムが関連付けられています(次の定義を参照)。

  • 「自動アクティビティ」: クライアントによる操作なしに実行する不在アクティビティ。 論理は、アプリケーション開発者によって提供されます( 第4章「アクティビティおよびリンクのカスタマイズ」を参照)。

ワークアイテム

ユーザアクティビティに関連付けられているコンテナ。 ワークアイテムには、編集可能なプロパティとドキュメント、またはドキュメントへのポインタを含むことができます。

リンク

アクティビティとユーザ宛先の間の論理パスを定義します。 リンクは、ワークフローデザイナで定義されます。

ワークフロークライアント

ワークフローAPIを使用してアプリケーション開発者によって提供されるワークフローサブシステムのユーザインタフェース。 クライアントでは、ワークアイテムを定義し、ワークフローエンジンおよびキューと通信します。

For more information    これらのコンポーネントがアプリケーションで動作する方法の詳細については、 20ページの「クライアントのしくみ」を参照してください。

 
Top of page

ワークフロークライアントについて

ワークフロークライアント」では、ワークフローサブシステムと通信するために、wf.apiパッケージとwf.client.apiパッケージのクラスを実装します。 クライアントの開発に使用できるインタフェースは、次のとおりです。

インタフェース

説明

EbiWorkitemDelegate

ワークアイテムを操作するためにクライアントによって使用されます。 これは、ワークアイテムプロパティおよび関連付けられているドキュメントにアクセスするためのメソッドと、ユーザまたはユーザセッションのワークアイテムをロックおよびロック解除するためのメソッドを提供します。

EbiContext

ポータルセッション情報へのアクセスを提供します。 このオブジェクトは、クライアントAPIの複数のメソッドによって渡されます。

EbiQueueDelegate

キュー内のワークアイテムに対してアクセス、転送、および再割り当ての操作を提供します。

EbiWorkEngineDelegate

プロセスインスタンスを開始するためのメソッドを提供します。

 
Top of section

クライアントのしくみ

ワークフロークライアントAPIがワークフローサブシステムと通信する方法は、次の図のとおりです。

wfAPIS

  1. アプリケーションにより、ワークフローエンジンとキュープロセス(この図には表示されていません)を開始するためのメカニズムが提供されます。

  2. ワークフロークライアントでは、EbiWorkflowEngineDelegateを使用して、新しいプロセスインスタンスを開始します。

  3. クライアントでは、EbiQueueDelgateを使用して、ユーザの現在のワークアイテムリストを取得します。

  4. キュー委任では、キュー内の各ワークアイテムを処理し、プロセスが完了するまで次のアクティビティに転送するために、EbiWorkitemDelgateを取得します。

 
Top of page

クライアントの開発

この節では、基本的なクライアント開発のトピックの一部について説明します。

 
Top of section

ワークアイテムのライフサイクル

ほとんどの場合、ワークフロークライアント開発では、ワークアイテムおよび関連付けられているドキュメントの処理が関与します。 要約は次のとおりです。

  1. Webアプリケーションのどこかで、ユーザが新しいワークフロープロセスを開始します。 この例として、Directorコンポーネントの[Create New Document]ボタンが挙げられます。

  2. 新しいプロセスインスタンスを作成するために、クライアントコードがEbiWorkflowEngineDelegateでメソッドを呼び出します。 ワークフローサブシステムでは、プロセスインスタンスを作成し、新しいワークアイテムを自動的に作成します。 プロセスインスタンスで保持されるワークアイテムは、1つだけです。

  3. ワークフローデザイナで開始ドキュメントを指定した場合、サブシステムでは、そのドキュメントをワークアイテムに追加します。 通常、このドキュメントは、個々の作業リクエストに固有なデータがビジネス論理によって入力されるテンプレートの種類です。 ドキュメントは、ワークアイテムの文字列データとして保存し、キュー層で保持できますが、一般的には、コンテンツ管理サブシステムのドキュメントへのURLになります。

  4. プロセス内の最初のアクティビティでは、次の任意の操作を実行するために、EbiWorkitemDelegateを使用します。

  5. プロセス内で後続する任意のアクティビティで 手順4を繰り返します。 また、ドキュメントとプロパティはいつでも削除できます。

 
Top of section

設計オプション

クライアントを開発する場合は、DirectorポータルコンポーネントまたはJSPページのいずれかを使用できます。 Directorには、JSPの実装に対して使用できるJSPタグのセットが含まれています。

インストールされたワークフローコアコンポーネントでは、プロセスを開始したり、ユーザのワークアイテムのリストを取得したりするための一般論理とUIを提供します。

For more information    コアコンポーネントの使用例については、 第3章「サンプルワークフローアプリケーション」を参照してください。

 
Top of section

プロパティの操作

ワークアイテムプロパティは、ワークアイテム自体、またはワークアイテムに関連付けられているドキュメントに対して定義できます。 ワークアイテムプロパティは、HTMLフォームで編集可能な値である可能性があります。 この状況におけるドキュメントプロパティは、ワークアイテムの一部ですが、物理的なドキュメントには影響を与えません。 いずれの場合も、ワークアイテムプロパティは、EbiWorkitemDelegateからアクセスできるan.EbiPropertyオブジェクトとして定義される必要があります。

com.sssw.wf.api.EbiPropertyメソッドの部分的なリストは、次のとおりです。

EbiPropertyメソッド

説明

getPropertyName()

このプロパティの名前を返します

get/setPropertyType()

プロパティデータタイプに対するアクセッサメソッド

get/setPropertyValue()

プロパティ値に対するアクセッサメソッド

isDocumentProperty()

関連付けられているワークアイテムドキュメントに対してプロパティが定義されている場合は、trueを返します

isImmutable()

プロパティを変更できる場合は、falseを返します

com.sssw.wf.client.EbiWorkitemDelegateメソッドの部分的なリストは、次のとおりです。

Propertyアクセスメソッド

説明

createProperty()

EbiPropertyを作成します

getAllProperties()

すべてのワークアイテムとすべてのドキュメントのプロパティのリストを返します

getWorkitemProperties()

すべてのワークアイテム(ドキュメント以外)のプロパティのリストを返します

get/setProperty()

ワークアイテム(ドキュメント以外)に対してEbiPropertyを取得/設定します

setDocumentProperty()

ドキュメントに対してEbiPropertyを設定します

hasProperty()

指定されたプロパティがワークアイテムにあるかどうかをテストします

 
Top of section

ドキュメントの操作

ワークフロードキュメントは、ワークフローユーザまたは自動アクティビティによってアクセスおよび変更される生成物です。 ワークアイテムは、ドキュメントのコンテナとして機能します。

ドキュメントの可能な形式には、次の2つがあります。

EbiWorkitemDelegateからアクセスできるドキュメント関連メソッドのリストは、次のとおりです。

Documentアクセスメソッド

説明

add/removeDocument()

ワークアイテムにドキュメントを追加したり、ワークアイテムからドキュメントを削除したりします

lock/unlockDocument()

編集するためにドキュメントをロックまたはロック解除します(1つのワークアイテムに複数のドキュメントが関連付けられている場合は、ワークアイテム自体ではなく、ドキュメントをロックすることが推奨されます)

updateDocument()

ドキュメントに対する変更を更新します

 
Top of section

クライアントタイプへのアクティビティのバインド

ワークフローサブシステムでは、ワークフローアクティビティに関連付けられているワークアイテムに対して異なるクライアントタイプを指定するためのメカニズムを提供します。 たとえば、スプレッドシートアプリケーション、Javaクライアント、またはその他のアプリケーションになるように、特定のワークアイテムのUIを指定することができます。

アクティビティポリシー記述子

クライアントは、activity-policy.xmlという記述子内で指定します。 この記述子は、選択したワークアイテムに使用するクライアントのセットを決定するために、コアWorkflowQueueコンポーネントによって使用されます。 スキーマは、installed library/ WorkflowService/schemaディレクトリにあるactivitypolicy.xsdで定義されます。

例   サンプルコンテンツ管理ワークフローアプリケーションで使用される3つのコンポーネントに対して定義されているアクティビティポリシーは、次のとおりです。

  <?xml version="1.0"?>
  <activitypolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="activitypolicy.xsd">
  	 <activity name="AssignContent">
  	 	 <client type="portal" uri="/main/comp/WorkflowAssign">Portal</client>
  	 </activity>
  	 <activity name="CreateContent">
  	 	 <client type="portal" uri="/main/comp/WorkflowCreate">Portal</client>
  	 </activity>
  	 <activity name="AuthorizeContent">
  	 	 <client type="portal" uri="/main/comp/WorkflowAuthorize">Portal</client>
  	 </activity>
  </activitypolicy>
  

要素

説明

name

ワークフローデザイナで指定したとおりのアクティビティの名前。

client

アプリケーションコンポーネントまたはJSPページのクライアントタイプおよびURI。 デフォルトのクライアントタイプはportalで、つまり、コンポーネントでは、Directorポータルサービスを使用してクライアントをレンダリングします。

注記:   クライアントタイプとしてdefaultを指定し、実装を提供することもできます。 また、文字列defaultを使用して、<activitypolicy>の下にグローバルのデフォルトとしてクライアントタグを追加することもできます。

クライアントタイプの追加

異なるクライアントタイプを提供する場合は、アクティビティポリシーファイルを変更し、新しいクライアントタイプと、関連付けられているURLを追加できます。 WorkflowQueueコアコンポーネント(WorkflowQueueDefault.xsl)のXSLでは、クライアントタイプとしてportalを検索し、アクティビティのリンクとして、関連付けられているURLを使用します。 異なるクライアントタイプを参照するには、キューコンポーネントとactivity-policyクライアントタイプに対してXSLを適宜変更します。

注記:   QueueComponentでは、URIポインタとして直接URL参照のみをサポートしていますが、URL参照を変更したり、カスタムキュークライアントを提供したりすることは可能です。

ポリシー情報へのアクセス

EbiWorkitemDelegateでは、アクティビティポリシー情報へのアクセスを提供します。 メソッドの一部は、次のとおりです。

Client情報メソッド

説明

getClientTypes()

このアクティビティに対するすべてのクライアントタイプの配列を返します

getClientURI()

指定したクライアントタイプのURIを返します

getPolicyDefaultURI()

このアクティビティに対するデフォルトのポリシークライアントURIを返します。

hasClientType()

指定したクライアントタイプをアクティビティに含めるかどうかを決定します

hasClientDefault()

デフォルトのクライアントタイプをアクティビティに持たせるかどうかを決定します

 
Top of section

ワークアイテムの再割り当て

EbiWorkitemDelegate.reassign()メソッドを使用すると、現在のアクティビティを別の宛先のワークアイテムキューに割り当てることができます。 これは、作業を別のユーザに一時的に転送する場合に便利です。 このメソッドには、次の宣言が含まれています。

  public void reAssign(com.sssw.wf.client.EbiAddressee addressee,
                       EbiContext context)
                throws com.sssw.wf.exception.EboWorkitemException

宛先は、サーバ認証領域で定義されているユーザ、またはプロジェクトリソースセットで記述されている役割にすることができます。 詳細については、『APIリファレンス』を参照してください。

    First Previous Next Last ワークフローガイド  

Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC, a wholly owned subsidiary of Novell, Inc. All rights reserved.