1

さて、私はポップアップウィンドウをアクティビティ/屋外ワークフローに組み込む例をインターネットで探していましたが、結果が得られませんでした。誰かがこれを行った経験があるのか​​、それともそのようなことが可能かどうかさえ知っているのだろうかと思っていました。

4

1 に答える 1

4

ポップアップをトリガーするものは何ですか? ここで達成しようとしていることが 2 つありますが、それぞれ実装が大きく異なります。

ワークフローの特定のタスクのタスク編集ページにポップアップを作成する場合は、javascript を使用してコントロールを追加して作成できます (ワークフロー設計の基本を既に知っていると思いますが、そうでない場合は、Jeff Potts 'チュートリアルは素晴らしいです - > http://ecmarchitect.com/images/articles/alfresco-workflow/advanced-workflow-article-2ed.pdf)。これを行うには、tomcat/shared/classes/alfresco/web-extension/site-webscripts/org/alfresco/components/form/controls にファイルを作成します。たとえば、tomcat/shared/classes/alfresco/web-extension/site です。 -webscripts/org/alfresco/components/form/controls/myWorkflowPopup.ftl. javascript を含む freemarker 構文を使用してファイルをセットアップし、好きなイベントで好きなようにポップアップを作成します - あなたの投稿からは、ポップアップ ブラウザー ウィンドウ、小さな JavaScript アラート、または YUI ダイアログが必要かどうかわかりませんが、これらのいずれかを行うことができます。同様に、ボタンから、誰かがフォームフィールドで「承認」を選択したときに、これをどのようにトリガーしたいのかわかりません。コントロールを設定したら、それをワークフロー タスクに追加できます。コントロールを追加するには、tomcat/shared/classes/alfresco/web-extension/share-config-custom.xml を編集します。

<config evaluator="task-type" condition="[workflowNS]:[someTask]">
    <forms>
        <form>
            <field-visibility>
                ...
            </field-visibility>
            <appearance>
                ...
                <field id="[workflowNS]:[someField]">
                    <control template="/org/alfresco/components/form/controls/[myWorkflowPopup].ftl" />
                </field>
            </appearance>
        </form>
    </forms>
</config>

ポップアップで使用する必要がある場合は、テンプレートで [workflowNS]:[someField] の値を field.value として使用できます。これらの手順は少し高レベルですが、これがあなたが探している解決策であるかどうかさえわからないので、必要に応じて詳細を説明できます。

もう 1 つの可能性は、ワークフローによってトリガーされたが、ワークフロー UI とは無関係に表示されるポップアップを探していることです。この場合、別の 2 つの可能性に分割します。

a) ワークフローが終了するか x 状態に達したときに、ユーザーのデスクトップにポップアップを表示したいと考えています。私はJava通知領域アプリでこれを行います。私は実際に以前にこれを行うことを検討し、どれだけの作業が必要になるかを理解したときに、代わりに電子メールを使用することにしました. あなたがこれを試すことに決めたなら、幸運を祈ります - あなたは私よりも怠け者ではありません.

b) ブラウザにポップアップを表示したい (これは、別のブラウザ ウィンドウ、yui ダイアログ、または jscript/vbscript アラート/メッセージ ボックスである可能性があります)。これは AJAX を使用して行うことができます。私だったら、各ユーザーのホーム フォルダーに xml ファイルを保存します。これを設定して、ユーザーが表示するには高すぎるパーミッションを設定しますが、ワークフロー定義で run-as オプションを使用して、スクリプト タスクを管理者ユーザーとして実行し、これらのファイルを更新します。たとえば、新しい要求が提出されたときに財務グループの全員に通知する必要がある財務承認ワークフローがあるとします。スクリプト タスクは、金融グループをループし、各ユーザーを選択して、ユーザー ホームの xml ファイルに要素を追加します。

ポップアップ ロジックについては、share-config-custom.xml に javascript 依存関係を追加して、すべてのページに外部スクリプト ファイルを含めることができるようにします。そのスクリプト ファイルでは、setInterval を使用して、x 秒ごとに uri に GET します (x の正しい値は、パフォーマンスと帯域幅の使用量と機能のバランスをとって決定する必要があります)。

スクリプトがヒットする uri で、レポ Web スクリプトを設定して、現在のユーザーのユーザー ホーム xml ファイルからデータを取得します。各要素で属性を使用して、メッセージの表示状態を維持します。Webscript が実行されると、(おそらく json を介して) 未表示のメッセージが返され、表示済みに設定されます。

繰り返しになりますが、非常に高レベルの指示であり、まだ多くの作業が必要ですが、問題がある場合は、これらのどれを達成しようとしているのか (もしあれば) を投稿してください.

于 2012-09-21T06:55:07.063 に答える