私の文書管理プロセスでは、追加の文書(コメントのリスト、相違点のリスト、スクリーンショットなど)を追加する必要があることがよくあります。ワークフローに添付ファイルを追加するにはどうすればよいですか?
これらの追加ドキュメントは、Activitiフォームに追加すると便利です。私は、ビジネスプロセスの開始段階と改訂の段階でドキュメントを追加できるようにしたいと考えています。このため
、Iはworkflow-model.xml
(関連部分)に関連のある局面を追加:share-config-custom.xml
で
...
<type name="mswf:activitiRevise">
...
<mandatory-aspects>
...
<aspect>mswf:attachments</aspect>
</mandatory-aspects>
</type>
...
<aspect name="mswf:attachments">
<associations>
<association name="mswf:package">
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:content</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</aspect>
...
etc
をIは、以下の(関連部分)を有する:
...
<config evaluator="task-type" condition="bpm:startTask">
<forms>
<form id="workflow-details">
<field-visibility>
...
<show id="mswf:package" />
</field-visibility>
<appearance>
...
<set id="attachments" appearance="title" label-id="Additional docs" />
<field id="mswf:package" set="attachments" />
</appearance>
</form>
<form>
<field-visibility>
<show id="mswf:package" />
...
</field-visibility>
<appearance>
<set id="attachments" appearance="title" label-id="Additional docs" />
<field id="mswf:package" set="attachments" />
...
</appearance>
</form>
</forms>
</config>
...
etc
今は持っています私は適切な文書を選ぶことができる追加のフィールド。
それは動作します - 私はいくつかの文書を追加し、文書管理プロセスの各段階のすべてでそれらを見ることができます。
問題は、最初に選択したファイルのセットを変更しようとしたときに発生します。たとえば、新しいものを追加しようとしたときなどです。新しいものを追加(または削除)した場合、変更は保存されず、次のタスクでは最初に選択されたものと同じものが表示されます。
この動作を制御するために、私はプロパティを管理しようとするWebScriptを開発しました。私はいくつかの任意とreplace(...)
方法を返すと、選択したファイルを置き換えるためにしようとしている
...
public class WorkflowAttachmentsManipulator extends DeclarativeWebScript {
private static final String WORKFLOW_MODEL_URI = "...";
private WorkflowService workflowService;
@Override
protected Map<String, Object> executeImpl(WebScriptRequest req, Status status) {
Map<String, Object> model = new HashMap<>();
String taskId = req.getParameter("taskId");
String addedItem = req.getParameter("addedItem");
WorkflowTask workflowTask = workflowService.getTaskById(taskId);
Map<QName, Serializable> taskProperties = workflowTask.getProperties();
...
taskProperties.replace(
QName.createQName(WORKFLOW_MODEL_URI, "package"), oldValue, addedItem);
workflowService.updateTask(taskId, taskProperties, null, null);
...
:私のJavaの担保WebScriptの一部
/**
* Returns items that have been added to the current value
*
* @method getAddedItems
* @return {array}
*/
getAddedItems: function ObjectFinder_getAddedItems() {
var addedItems = [],
currentItems = Alfresco.util.arrayToObject(this.options.currentValue.split(","));
for (var item in this.selectedItems) {
if (this.selectedItems.hasOwnProperty(item)) {
if (!(item in currentItems)) {
addedItems.push(item);
}
}
}
...
// here the call to the WebScript
return addedItems;
},
:私はgetAddedItems()方法で共有からWebScriptを呼び出しますtrue
。
key: {WORKFLOW_MODEL_URI_HERE}package
value: [workspace://SpacesStore/7f980005-2a1b-49a5-a8ff-ce9dff31a98a,
workspace://SpacesStore/30d9122f-4467-451b-aeab-ca8b164f7769]
:
WebScriptを呼び出す前に(パッケージに2つのファイルを):alfrescotomcat-stdout.2017-09-06.log
で、私はまた、プロパティが置き換えられていることを確認します
key: {WORKFLOW_MODEL_URI_HERE}package
value: workspace://SpacesStore/1a0b110f-1e09-4ca2-b367-fe25e4964a4e
現在のタスクでフォームを更新した後、新しいファイルが表示されます。
しかし、値は変更/レビュー後に保存されず(紛失)、次のタスクでは同じファイルが表示されます。私はBPMN図にいくつかのデバッグコードを追加し、mswf_package
の内容がWebScriptを呼び出した後に変更していないことが判明
...それはactiviti$204647
に等しくなった、のは、現在のユーザーのためのタスクIDがactiviti$204587
だったとしましょう。
for(var i = 0; i < mswf_package.size(); i++) {
logger.log(mswf_package.get(i).nodeRef);
}
出力:: 'レビュータスク' で
DEBUG [repo.jscript.ScriptLogger] [http-apr-8080-exec-9] workspace://SpacesStore/7f980005-2a1b-49a5-a8ff-ce9dff31a98a
DEBUG [repo.jscript.ScriptLogger] [http-apr-8080-exec-9] workspace://SpacesStore/30d9122f-4467-451b-aeab-ca8b164f7769
、create
とcomplete
イベントのリスナー:
for(var i = 0; i < mswf_package.size(); i++) {
logger.log(mswf_package.get(i).nodeRef);
}
出力:??ワークフローで追加の添付ファイルを追加する方法
DEBUG [repo.jscript.ScriptLogger] [http-apr-8080-exec-9] workspace://SpacesStore/7f980005-2a1b-49a5-a8ff-ce9dff31a98a
DEBUG [repo.jscript.ScriptLogger] [http-apr-8080-exec-9] workspace://SpacesStore/30d9122f-4467-451b-aeab-ca8b164f7769
...それは可能です...
私は情報のために非常に感謝されます。ありがとうございます。