Activiti Kickstart AppとActiviti Rest Webアプリケーション

Activiti Kickstart AppおよびActiviti Rest Webapp

1. 概要

以前の記事(JavaSpring)を使用したActiviti APIに基づく)では、プログラムでプロセスを管理する方法を説明しました。 ActivitiのUIと一緒にデモをセットアップする場合、わずか数分でセットアップできる2つのwebappがあります。

activiti-app offers a user interface through which a user can perform any identity management and task management related operations、ユーザーとグループを作成します。

同様に、activiti-rest is a webapp that provides the REST API for performing any operation on a process, task, processなど。

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

2. ダウンロード

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

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

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

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

ここで、Tomcatにwarをデプロイし、http://localhost:8080/activiti-appを使用してそれにアクセスする必要があります。

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

image

 

 

 

 

===

 

===

3.1. データベース

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

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

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

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

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

image

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

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

簡単にするために、タスクをプロセス開始者に割り当てましょう。

image

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

User Taskを選択し、Referenced Formを選択します。 現在、タスクに関連付けられているFormはないため、New Formをクリックして、必要な詳細を追加します。

image

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

image

Required,にチェックマークが付いていることに注意してください。これは、Message.を入力しないとUserタスクを完了できないことを意味します。

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

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

image

3.3. タスクアプリ

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

[Processes]タブのStart Processをクリックすると、実行できる使用可能なプロセスのリストが表示されます。 このリストからプロセスを選択し、startボタンをクリックします。

image

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

image

Show Diagramをクリックすると、Processの図が表示されるだけでなく、完了したタスクと保留中のタスクも強調表示されます。 この場合、User Taskはまだ保留中であり、強調表示されています。

image

このタスクを完了するには、Complete button.をクリックします。前述のように、Message,は必須のままなので、入力する必要があります。 したがって、Message,を入力した後、タスクをCompleteできます。

3.4. ID管理アプリ

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

4. Activiti REST

activiti-rest.warファイルをApache TomcatなどのサーブレットコンテナにデプロイすることでインストールできるActiviti provides a REST API for the Activiti Engine

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

アプリを起動して実行すると、すべてのリクエストにこのベースURLを使用できます。

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

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

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

プロセスを作成するには、まず、プロセスのBPMNファイルが必要です。 以前の記事で説明したようにActiviti 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

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

image

4.2. タスクの完了

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

GET runtime/tasks

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

{
    "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...
        }
}

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

POST runtime/tasks/49

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

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

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

5. 結論

この記事では、Activiti Kickstart Appと提供されたREST APIの使用方法について説明しました。

activiti-restの詳細については、https://www.activiti.org/userguide/#rest_api[User Guide], and _activiti-appを参照してください。詳細は、documentation by Alfrescoを参照してください。