4

Grails Activiti プラグインを使用して独自のワークフロー システムを構築したいと考えています。これを行う手順は何ですか?誰でも私を助けることができますか?

このドキュメントを参照しました。

プロジェクトに Grails Activiti プラグインをインストールしました。また、プロジェクトに休暇申請のサンプル アプリケーションをダウンロードしてインストールし、その動作を確認しました。

4

1 に答える 1

3

現時点では、Grails Activiti プラグインを実装するための段階的な手順はないと思います。私は似たような船 (ワークフロー エンジンを実装したい Grails を使用する開発ショップ) にいますが、これまでのところ Activiti プラグインはあまり役に立ちませんでした。それを使用している人は、GORM と Activiti の間で提供される統合を実際に活用していないようです

大まかに言うと、Grails で Activiti を使用するために私が推奨する手順は次のとおりです。おそらく、Activiti Plugin を使用するか、使用しないでください。

  1. データベースに Activiti エンジンを作成します。インメモリ H2 データベースを使用していて、Grails に create/drop ステートメントを実行させる場合、アプリケーションの起動プロセスに h2 スクリプトを追加する必要がある場合があります。
  2. Grails アプリで必要なプロセスを BPMN 2.0 XML 形式でマップします。Activiti Eclipse Designerを使用できます。これは GGTS に問題なくプラグインでき、どこかで Activiti Explorer を起動して Web ベースのデザイナーを使用するか、生の XML を独自の悪い自己でコーディングします。
  3. Grails アプリケーションに依存関係として Activiti を含めます。これを行うには、Activiti Grails プラグインを BuildConfig.groovy に含めるか、Activiti エンジン jar を依存関係として単独で含めます (以下を参照)。
  4. Activiti エンジンの API (できれば Grails サービスから) へ の呼び出しを使用して、プロセス モデルをデプロイし、プロセスの個々のインスタンスを起動し、ワークフローのさまざまな手順を実行します。
    • Grails ドメイン オブジェクトに関する情報をプロセス変数として渡し、後でそれらを再び引き出す必要がある場合があります。Grails がドメイン オブジェクト内のデータを永続化する場所と、Activiti がデータをプロセス変数として保持する場所を特定することは、開発者の側で少し考えなければなりません。

一般的に、私の経験則では、Activiti にプロセスを処理させ、Grails に他のすべて (UI、データの永続化と操作、検証など) を処理させます。

Grails を使用して、コントローラーと GSP を介してすべてのユーザー インターフェイスを管理し、ドメイン オブジェクトとサービスを介してオブジェクト モデルの多くを管理できるようにするために、このアプローチをお勧めします。Activiti チームが構築している UI に問題はありませんが、独自の特徴と哲学を持つ独自の Java/UI フレームワークであるVaadinに基づいています。スーパー開発者ならそれらをシームレスに組み合わせることができると確信しており、おそらくすでにそうしていますが、彼/彼が山から降りてきて教えてくれない限り、試すツールの数を制限する必要があります.一気にマスターする。:)

Activiti を依存関係として含める方法

BuildConfig.groovy ファイルで、依存関係とリポジトリのクロージャーに次の内容を含めます。

repositories {
    inherits true // Whether to inherit repository definitions from plugins

    mavenRepo "https://maven.alfresco.com/nexus/content/groups/public/"
    //any other repositories you need go here, including grailsCentral(), etc.
}
dependencies {
    compile("org.activiti:activiti-engine:5.13"){
        excludes "spring-beans"
    }
}

spring-context の依存関係を除外する必要はありませんが、Grails 2.3.1 は Activiti 5.13 より新しいバージョンの Spring を使用しています。私が試した 2/3 のマシンでは問題ありませんでした。Grails は、Activiti が必要とする古いバージョンを無視して、新しいバージョンの Spring を使用するだけです。ただし、あるマシンでは、この違いにより、追跡が困難な persnickety 例外が発生しました

于 2013-11-17T20:52:18.327 に答える