Alfresco Share で Activiti ワークフローを使用していますが、ワークフロー内のすべてのユーザー タスク フォームに共通のヘッダーを追加する必要があります。このヘッダーは、ワークフロー内のすべてのユーザー タスク フォームの上部にコンテキスト ワークフロー情報を表示する一連の読み取り専用プロパティ (フィールド) になります。たとえば、クライアント管理ワークフローでは、ヘッダーにクライアントの名前と姓、クライアント ファイル コードなどが表示され、各値が読み取り専用のテキスト ボックスまたはラベルに表示されます。
ワークフロー内のすべてのユーザー タスク フォームに、一連の情報フィールドを追加する (および入力する) 簡単な方法はありますか? 必要なプロパティを含む新しいアスペクトを作成できることはわかっていますが、実行時にそのアスペクトをタスク タイプに追加し、必要に応じて JavaScript を介してそれらのプロパティ値を設定するにはどうすればよいでしょうか? 現在、ワークフロー内の各ユーザー タスクは、フォーム キーとして「wf:activitiReviewTask」を使用している一部の「標準」レビュー タスクを除いて、ワークフロー モデル定義 (XML ファイル) 内に独自のカスタム タイプ (つまり、フォーム) を持っています。一連の読み取り専用情報フィールドは、標準のレビュー タスク フォームを含むすべてのフォームに表示される必要があります。
私はこのようなことを達成したい (赤い四角を参照):
事前にご協力いただきありがとうございます。
更新 1
フォーム テンプレートの経験がありません。私のフォームは非常にシンプルなので、いくつかのモデル定義 (アスペクトとタイプ) といくつかの共有カスタム構成を組み合わせて設計しました。ヘッダーに表示したい情報は、いくつかのワークフロー コンテキスト変数に格納されているため、JavaScript コードから簡単に取得できます。これは私が考えていたもので、まだテストしていません。実行可能なアイデアかどうか教えてください。そうでない場合は、フォーム テンプレートを使用してそれを行う方法の例を提供できますか?
mynsModel.xml
<aspect name="myns:customerTaskHeader">
<title>Customer task header</title>
<properties>
<property name="myns:customerName">
<title>Name</title>
<type>d:text</type>
</property>
<property name="myns:customerSurname">
<title>Surname</title>
<type>d:text</type>
</property>
</properties>
</aspect>
ワークフローモデル.xml
<type name="wf:customerDelivery">
<title>Delivery to customer</title>
<parent>bpm:workflowTask</parent>
<properties>
<property name="wf:customerDeliveryType">
<title>Delivery type</title>
<type>d:text</type>
</property>
<property name="wf:customerDeliveryStatus">
<title>Signed</title>
<type>d:boolean</type>
</property>
</properties>
<mandatory-aspects>
<aspect>myns:customerTaskHeader</aspect>
</mandatory-aspects>
</type>
share-config-custom.xml
<config evaluator="task-type" condition="wf:customerDelivery">
<forms>
<form>
<field-visibility>
<show id="myns:customerName" />
<show id="myns:customerSurname" />
<show id="packageItems" />
<show id="wf:customerDeliveryType" />
<show id="wf:customerDeliveryStatus" />
<show id="bpm:comment" />
<show id="transitions" />
</field-visibility>
<appearance>
<set id="" appearance="title" label-id="workflow.set.general" />
<set id="items" appearance="title" label-id="workflow.set.items" />
<set id="response" appearance="title" labelid="workflow.set.response" />
<field id="bpm:comment" labelid="workflow.field.message">
<control template="/org/alfresco/components/form/controls/textarea.ftl">
<control-param name="style">width: 95%</control-param>
</control>
</field>
<field id="packageItems" set="items" />
<field id="transitions" set="response" />
<field id="myns:customerName" read-only="true">
<control template="/org/alfresco/components/form/controls/info.ftl" />
</field>
<field id="myns:customerSurname" read-only="true">
<control template="/org/alfresco/components/form/controls/info.ftl" />
</field>
</appearance>
</form>
</forms>
</config>
この(可能な)回避策で見られるいくつかの欠点:
- すべてのタスク タイプの定義には、
customerTaskHeader
アスペクトが含まれている必要があります。問題は、ワークフロー内の多くのユーザー タスクにカスタム タイプではなく組み込みタイプがあることです。JavaScript コードによって、実行時にすべての必要な値を持つアスペクトをタスク タイプに追加できると便利ですが、これはおそらく不可能です。 - share-config-custom.xml のタスク タイプごとに異なるカスタム構成エバリュエーターが必要です。同じ問題。
- 使い方がかなり面倒で、維持するのが難しいと思います。さらに、間違っている場合は訂正してください。ワークフロー内のすべてのタスク フォームのヘッダー フィールドに値を設定する簡単な方法がわかりません。次のコードを使用して、すべてのユーザー タスクに「作成」イベント リスナーを追加する必要があると思います。
【JavaScriptコード】
var customerName = execution.getVariable('customerName');
var customerSurname = execution.getVariable('customerSurname');
task.setVariable('myns_customerName', customerName);
task.setVariable('myns_customerSurname', customerSurname);