1. 概要

以前の記事( JavaおよびSpringを使用したActivitiAPIに基づく)では、プログラムでプロセスを管理する方法を説明しました。 ActivitiのUIとともにデモを設定する場合は、2つのWebアプリがあり、わずか数分で設定できます。

activiti-appは、ユーザーがID管理およびタスク管理関連の操作を実行し、ユーザーとグループを作成するためのユーザーインターフェイスを提供します。

同様に、 activiti-restは、プロセス、タスク、プロセスなどで任意の操作を実行するためのRESTAPIを提供するWebアプリです。

この記事では、これらのWebアプリの使用方法と、それらが提供する機能について説明します。

2. ダウンロード

Activity Webサイト自体から、両方のWebアプリのwarファイルをダウンロードできます。

v6.0.0の場合、 activiti-6.0.0.zip をダウンロードして解凍するだけで、warファイルはactiviti-6.0.0/にあります。 warsディレクトリ。

3. Activitiキックスタートアプリ

アプリをデプロイするには、動作するJavaランタイムApacheTomcatのインストールが必要です。 どのWebコンテナでも機能しますが、Activitiは主にTomcatでテストされます。

ここで、Tomcatに戦争を展開し、 http:// localhost:8080 /activiti-appを使用してそれにアクセスする必要があります。

ホームページは次のようになります。

 

 

 

 

 

3.1. データベース

デフォルトでは、H2インメモリデータベースを使用します。 DB構成を変更する場合は、 code をチェックアウトして、activiti-app.propertiesファイルを変更できます。

これを行った後、warファイルを再生成する必要があります。これはstart.shスクリプトを実行することで実行できます。 これにより、必要な依存関係とともにactiviti-appが構築されます。

3.2. キックスタートアプリ

キックスタートアプリをクリックすると、プロセスを操作するためのオプションが表示されます。プロセスを作成/インポートして、ここから実行できます。

ユーザーからのメッセージを受信する単一のユーザータスクを持つ小さなプロセスを作成しましょう。 キックスタートアプリでプロセスを作成するには、プロセスタブを選択し、プロセスの作成をクリックします。

プロセスエディタが開き、開始イベント、さまざまなタイプのタスク、および終了イベントのさまざまなシンボルをドラッグアンドドロップして、プロセスを定義できます。

ユーザータスクをプロセスに追加しているので、それを誰かに割り当てる必要があります。 このタスクのオプションから割り当てをクリックし、割り当て先を選択することでそれを行うことができます。

簡単にするために、タスクをプロセスイニシエーターに割り当てましょう。

また、このユーザータスクがユーザーから入力メッセージを取得するようにします。 これを実現するには、このタスクで Form、を単一のテキストフィールドに関連付ける必要があります。

ユーザータスクを選択し、参照フォームを選択します。 現在、タスクに関連付けられているフォームはないため、新しいフォームをクリックして、必要な詳細を追加します。

この後、フォームセクションに移動します。ここで、フォームに必要なさまざまなフィールドをドラッグアンドドロップしたり、それらのラベルを設定したりできます。

必須にチェックマークが付いていることに注意してください。これは、ユーザータスクがメッセージを入力しないと完了できないことを意味します。

完了したら、それを保存してアプリタブに移動します。 作成したプロセスを実行できるようにするには、プロセスアプリを作成する必要があります。

プロセスアプリでは、1つ以上のプロセス定義を追加できます。 これを行った後、プロセスを他のユーザーが利用できるように、このアプリを公開する必要があります。

3.3. タスクアプリ

タスクアプリには、タスク –現在実行中のタスク用とプロセス –現在実行中のプロセス用の2つのタブがあります。

プロセスタブのプロセスの開始をクリックすると、実行可能なプロセスのリストが表示されます。 このリストからプロセスを選択し、開始ボタンをクリックします。

このプロセスにはタスクが1つだけ含まれており、それはユーザータスクです。 したがって、プロセスはユーザーがこのタスクを完了するのを待っています。 プロセスが待機しているタスクをクリックすると、作成したフォームが表示されます。

図の表示をクリックすると、プロセスの図が表示されるだけでなく、完了したタスクと保留中のタスクも強調表示されます。 この場合、ユーザータスクはまだ保留中であり、強調表示されています。

このタスクを完了するには、 Complete butto nをクリックします。前述のように、メッセージを入力する必要があります。これは必須です。 。 したがって、メッセージを入力した後、タスクを完了できます。

3.4. ID管理アプリ

プロセスの管理とは別に、ユーザーとグループを追加できるID管理アプリがあります。 ユーザーの役割を定義することもできます。

4. Activiti REST

Activitiは、activiti-rest.warファイルをApacheTomcatなどのサーブレットコンテナにデプロイすることでインストールできるActivitiEngine用のRESTAPIを提供します。

デフォルトでは、ActivitiEngineはメモリ内のH2データベースに接続します。 activiti-app で見たように、ここでは WEB-INF /classesフォルダーのdb.propertiesファイルのデータベース設定を変更して再作成できます。戦争ファイル。

アプリが稼働していると、すべてのリクエストにこのベースURLを使用できます。

http://localhost:8080/activiti-rest/service/

デフォルトでは、すべてのRESTリソースは、有効なActivitiユーザーが認証される必要があります。 基本HTTPアクセス認証は、すべてのREST呼び出しに使用する必要があります。

4.1. プロセスの作成と実行

プロセスを作成するには、まず、プロセスのBPMNファイルが必要です。 Activity with Java に基づいて以前の記事で説明したようにファイルを作成するか、キックスタートアプリのプロセスセクションからダウンロードすることができます。

contentType:multipart / form-data とともにPOSTリクエストを行う必要があります。ここで、新しいプロセスのBPMNファイルをアップロードします。

POST repository/deployments

作成したプロセスのBPMNファイルを渡してこの呼び出しを行うと、次の出力が得られます。

{    
    "id": "40",
    "name": "user_msg.bpmn20.xml",
    "deploymentTime": "2017-10-04T17:28:07.963+05:30",
    "category": null,
    "url": "http://localhost:8080/activiti-rest/service/repository/deployments/40",
    "tenantId": ""
}

これで、すべてのプロセス定義を取得すると、プロセス定義が一覧表示されます。

GET repository/process-definitions

次に、BPMNファイルで説明したprocessKeyを使用してこのプロセスを実行できます。

POST /runtime/process-instances

このリクエスト本文で:

{
    "processDefinitionKey":"user_msg"
}

応答は次のようになります。

{
    "id": "44",
    "url": "http://localhost:8080/activiti-rest/service/runtime/process-instances/44",
    "businessKey": null,
    "suspended": false,
    "ended": false,
    "processDefinitionId": "user_msg:1:43",
    "processDefinitionUrl": "http://localhost:8080/activiti-rest/service/repository/process-definitions/user_msg:1:43",
    "processDefinitionKey": "user_msg",
    //other details...
}

前の応答で返されたプロセスインスタンスのidを使用して、実行中のプロセスの図を確認できます。

GET runtime/process-instances/44/diagram

前述のように、プロセスはユーザータスクが終了するのを待っているため、図で強調表示されています。

4.2. タスクの完了

次に、以下を使用して保留中のタスクを見てみましょう。

GET runtime/tasks

応答には、保留中のタスクのリストが含まれます。 現在、タスクは1つだけです-ユーザータスク

{
    "data": [
        {
            "id": "49",
            "url": "http://localhost:8080/activiti-rest/service/runtime/tasks/49",
            "owner": null,
            "assignee": "$INITIATOR",
            "delegationState": null,
            "name": "User Input Message",
            "description": "User Task to take user input",
            "createTime": "2017-10-04T17:33:07.205+05:30",
            "dueDate": null,
            // other details...
        }
}

最後に、タスク id49を使用してこのタスクを完了しましょう。

POST runtime/tasks/49

これはPOSTリクエストであり、タスクで何をしたいかを示すactionフィールドを送信する必要があります。 タスクを「解決」、「完了」、または「削除」することができます。 また、タスクが完了するために必要な変数の配列を渡すこともできます。

この例では、「メッセージ」フィールドを渡す必要があります。これは、「ユーザーメッセージ」テキストフィールドの外です。 したがって、リクエストの本文は次のとおりです。

{
    "action": "complete",
     "variables": [{
         "name": "message",
         "value": "This is a User Input Message"
     }]
}

5. 結論

この記事では、ActivitiKickstartアプリと提供されているRESTAPIを使用する方法について説明しました。

activiti-rest の詳細については、ユーザーガイドをご覧ください。また、 activiti-app の詳細については、Alfrescoドキュメントをご覧ください。 ]。