知人Activitiワークフロー

I.背景

  同社は最近、刑務所のプロジェクトABのドアシステム、プロジェクト研究を受け、顧客の焦点は主にこのであることが判明し、機能のほとんどは、ABドアプロセスにおけるプロジェクトの承認プロセスと文書フロー状態です。前と後に、同社の主要プロジェクトは、プロセス制御のためのコードを使用して、状態テーブルにプロセスに設定されている、まさにこのプロジェクトに基づく統合プロセスにおける問題の統合プロセスと知識の枠組みの中で記録し、プロジェクトにワークフローフレームワークに統合されます。

二、JBPMとActiviti比較

  選択は、市場占有率主にActivitiとjBPMによると、ワークフローフレームワークを受けています。この場合、我々は2つのフレームワークのいずれかを選択し、プロジェクトが最初に導入されて以来、主な考慮事項は、地域社会でより積極的で、問題に直面したとき、後半に拡張しました。

技術的なコンポーネント 活動 jBPMの
ORMフレームワーク Mybatis3 Hibernate3の
永続標準 ノー EJB JPA仕様
トランザクション管理 MyBatisのは、春の統合総務/来ます Bitronix / JTAベースのトランザクション管理
データベース接続 JDBC /データソース JDBC /データソース
春のサポート ナチュラルサポートSpirng デフォルトでは、春のためのサポートを提供していません
サポートされるデータベース オラクル/ SQLServerの/ MySQLの/ H2 /メモリデータベース オラクル/ SQLServerの/ MySQLの/メモリデータベース
デザインパターン コマンドモード/オブザーバーモード ノー
内部通信サービス ルームサービスのAPI呼び出し Apacheのミナに基づく非同期通信
統合されたインターフェース SOAP /ミュール/ RESTfulな 消息通信
対応フォーマットプロセス BPMN2 / XPDL / jPDLの等 のみBPMN2 XMLをサポートしています
コアエンジン PVMのプロセス仮想マシン Droolsの
技術前身 jBPM3 / jBPM4 Droolsの流れ
プラグインツール IDEAのactiBPM / EclipseのEclipseのデザイナー/オファーActivitエクスプローラベースのRESTスタイル Eclipseプラグインは、アプリケーション管理とWebを提供します
更新サイクル 隔月1回程度投稿 時々

 

  上記とプロジェクトの要件に基づいて、我々は安定性やコミュニティによっては、プロジェクトとしてActivitiワークフローフレームワーク、中5,6,7 Activitiと、いくつかの異なるバージョンを選択している、我々はActiviti6.Xを選びました。

第三に、ワークフロー財団

3.1何時間BPM

  ビジネスプロセス管理のための略語であるBPMビジネスプロセス管理。包括的な管理の側面を統合するための企業の多様性を達成するために設定されています。BPMは、論理的に関連する一連の活動である、BPMが最初に進化したワークフローおよびエンタープライズアプリケーション統合によって統合された、それはペーパーレスオフィスのニーズを満たすためでした。

3.2ワークフローのライフサイクル

  5つの主要なステップの完全なワークフローのライフサイクル:

  1.定義:プロセス定義は、すべてのプロセスは、常に最初から定義されています。主なタスクは、要件を収集し、プロセス定義にそれらを変換することです。

  2は、発行:リソースの流れは、メインのタスク・フロー定義ファイル/カスタムフォーム/リスニングタスクなどのプラットフォームで定義された後、開発者は、パッケージ化され、リリースされます。

  3、実行上記定義のルート業務が実行する処理の具体的なフローに従った処理エンジン。

  4.監視:各タスクの収集結果は、処理が異なる結果に応じて行われます。

  5、最適化:この時間は、ビジネス・プロセスが完了している、必要性は、プロセスや再設計を最適化することです。

何時間BPMN 3.3

  これは、ビジネス・プロセス・モデリング表記法、組織によって発行されBPMN標準と呼ばれるビジネス・プロセス・モデリング表記法の短い、後、2011年には2.0に発行され、それは一般的に市場での仕様書のこのバージョンを使用している、です。

  操作が行わ切断のグラフィカルモデルを作成中BPMNは、ビジネスの定義されたクラス、フローチャートに基づく技術、ビジネスプロセスのフローチャートです。すなわち、ビジネスプロセスモデルのグラフィックオブジェクトのネットワーク図は、プロセス制御活動を備え、操作するシーケンスを定義しています。

四、Activiti導入

4.1 Activitiは何ですか

  Activitiは、ビジネスユーザー、開発者、システム管理者の軽量ワークフロー業務の管理プラットフォームを目指している、そのコアは、Java開発の高速、安定したBPMN2.0プロセスエンジンを使用することです。サーバ、クラスタ、クラウドサービス:ActivitiのようなJavaプログラム、のいずれかの種類に実行することができ、ライセンスApacheV2の下で配布されています。完全に春と統合Activitiは、シンプルなデザインに基づいて作成されます。

4.2 Activitiの特徴

  1、データの永続性:Activitiデザインは速く、簡単です。一般的には、システム内のボトルネックは、主ActivitiはMyBatisのを使用するように選択し、このような状況のため、コマンドは、最適なSQL文を使用して実行され、インタラクティブなアプリケーションとデータベースに反映されています。

  2、エンジンサービスインタフェース:ActivitiエンジンはチェーンAPIのプログラミングスタイルをサポートしながら7サービスインタフェースは、ProcessEngineから入手できます提供します。

サービスインタフェース 効果
RepositoryService 、削除、展開リソースの流れを読んで次のような倉庫プロセスを管理するための倉庫サービスを処理
IdentifyService アイデンティティ・サービスは、ユーザーが管理し、グループ間の関係を照会することができます
RuntimeService 実行時サービス、ハンドルのインスタンスを実行しているすべてのタスクとプロセス、など
TaskService タスクサービスは、領収書、取り扱い、およびその他としてクエリタスクを管理するために割り当てられました
FormService フォームサービス、読書やタスク、プロセス関連フォームデータのための
HistoryService 歴史サービスは、すべての履歴データを見つけることができます
ManagementService エンジン管理サービス、および特定のビジネス関係のない可能なクエリエンジンの設定、データベース、およびその他の操作

 

  3、プロセスデザイナー:ActivitiチームがActiviti Activiti ModelerのWebベースのプロセス設計をカスタマイズすることがSignavio会社加えて、デザイナー-EclipseベースBPMN2.0仕様の設計者が設計しました。

  4、春のネイティブサポート:現在の事業開発は、基本的にはそう簡単に統合される春、春のためActivitiネイティブサポートによる、独自のシステムを開発する春に基づきます。

  5、実行時データと履歴データの分離:運用データと履歴データの分離、パフォーマンスデータは、実行時間を短縮することができ、過去のデータ、必要なときに、我々は、クエリに行ってきました。

4.3 Activitiアプリケーション

  1、システム統合:ルール・エンジン/埋め込む既存のプラットフォーム(プロジェクトのニーズも)とのESB /統合との統合

  他の製品に使用される2、:エンタープライズアプリケーションでのAlfrescoのECM製品は、主にドキュメント管理/コラボレーション/記録管理/ナレッジマネジメント/ Webコンテンツ管理に関連します。

4.4 Activitiフレームアセンブリと

  最も重要なことは、Activitiエンジンであり、外部ツールとコンポーネントに追加されるものです。

モデリング Runtion 管理
活動モデラー Activitiエンジン 活動Exproler
デザイナー活動 資産休憩
Activitiキックスタート

 

  次に、上記の構成要素について簡単に説明します。

  1、Activitiエンジン:BPMN2.0仕様の解析/実行/作成/管理(タスク - プロセス・インスタンス)を提供するコアモジュール/クエリの履歴及びレポート等を生成します。

  2、Activitiモデラー:モデルの設計者は、非Activitiを開発しました。需要の仕様プロセス定義を変換します。

  3、Activitiデザイナー:デザイナー、Activitiモデラー機能に似ています。

  4、Activiti Exproler:プロセス/タスク・ハンドルを開始しようにするために倉庫/ユーザ/グループを管理します。

  図5は、Activiti REST:クライアントはJSON REST APIと方法エンジンと対話することができます提供するRESTスタイルのサービス、契約はクロスプラットフォーム/クロスランゲージを持っています。

第五に、ビルドとテスト開発環境Activiti

5.1ダウンロードActiviti

  Activitiからその解凍ダウンロードバージョン6.0は、我々は、ディレクトリ構造を説明することができます。

  1、データベース:テーブルActivitiエンジンが含まれているフォルダを作成/削除/ activiti [データベースの種類] [スクリプトタイプを作成する|ドロップ| upgradestep]」と命名、SQLスクリプトの3種類をアップグレード[その他] .... 「SQL、アップグレードスクリプトがxx.to.yy.が含まれています

  2、ドキュメント:このディレクトリは、javadocを(開発ドキュメント)/ユーザガイドの(ユーザーマニュアル)/ XSD(プロセス定義スキームに関連付けられている)が含まれてい

  3、libs:包含Activiti引擎的各个模块包。

  4、wars:一些可以独立运行的项目,用来熟悉Activiti操作。activiti-explorer.war / activiti-rest.war。

5.2 配置环境

  1、安装JDK并配置环境变量。

  2、安装Ant

  3、安装Maven

  以上三个环境的安装方法到对应官方网站下载安装包,并按照官方文档说明来安装。

5.3 配置文件介绍

  1、Activiti配置文件,我们首先开看一个标准的Activiti配置文件内容。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4   xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd">
 5 
 6   <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
 7    <property name="databaseType" value="h2" />
 8    <property name="databaseSchemaUpdate" value="true" />
 9    <property name="jobExecutorActivate" value="false" />
10    <property name="history" value="full" />
11   </bean>
12 
13 </beans>

  对Spring熟悉的同学一看该配置文件就知道这是一个普通的Spring配置文件,从这也可体现出Activiti对Spring的原生支持。

  关于相关的配置见下图:

  2、Maven配置,在Maven项目的pom文件中引入依赖

<dependency>
  <groupId>org.activiti</groupId>
  <artifactId>activiti-engine</artifactId>
  <version>6.0.0</version>
</dependency>

5.4 一个简单的实例

  下面我们就使用一个请假流程来对Activit做简单的实战。由请假人发起,部门领导审批,完成。

  首先我们需要创建流程图:

  这就是流程图设计器的界面,流程设计总是从start开始且只有一个入口,总是由End结束可有多个结束。中间就是任务、结果、流程线等,关于各个节点后续再做介绍,基于此流程图我们来看看代码时如何实现的。

 1 /**
 2  * 该实例测试简单流程包含审批和审批结果
 3  * @throws Exception
 4  */
 5 @Test
 6 public void testStartProcess2() throws Exception {
 7     // 1 创建流程引擎,使用内存数据库
 8     ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration().buildProcessEngine();
 9 
10     // 2 部署流程定义文件
11     RepositoryService repositoryService = processEngine.getRepositoryService();
12 //        String bpmnFileName = "leave2.bpmn";
13     String bpmnFileName = "leave2.bpmn.xml";
14     repositoryService.createDeployment().addInputStream("leave2.bpmn", this.getClass().getClassLoader().getResourceAsStream(bpmnFileName)).deploy();
15 
16     // 3 验证已部署的流程定义
17     ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().singleResult();
18     assertEquals("leave2", processDefinition.getKey());
19 
20     // 4 启动流程并返回流程实例
21     RuntimeService runtimeService = processEngine.getRuntimeService();
22 
23     Map<String, Object> variables = new HashMap<>();
24     variables.put("applyUser", "employee1"); //申请人名称
25     variables.put("days", 3); //请假天数
26 
27     ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leave2", variables);
28     assertNotNull(processInstance);
29     System.out.println("pid=" + processInstance.getId() + ", pdid=" + processInstance.getProcessDefinitionId());
30 
31     TaskService taskService = processEngine.getTaskService();
32     Task deptLeaderTask = taskService.createTaskQuery().taskCandidateGroup("deptLeader").singleResult(); //查询deptLeader组未签收的任务
33     assertNotNull(deptLeaderTask);
34     assertEquals("领导审批", deptLeaderTask.getName());
35     taskService.claim(deptLeaderTask.getId(), "leaderUser"); //签收此任务归用户leaderUser所有
36 
37     variables = new HashMap<>();//.clear(); //处理结果
38     variables.put("approved", true); //设置审批通过
39 
40     taskService.complete(deptLeaderTask.getId(), variables); //设置审批结果
41 
42     deptLeaderTask = taskService.createTaskQuery().taskCandidateGroup("deptLeader").singleResult(); //由于任务已经完成,此时查询任务应该为空
43     assertNull(deptLeaderTask);
44 
45     // 获取历史记录
46     HistoryService historyService = processEngine.getHistoryService();
47     long count = historyService.createHistoricProcessInstanceQuery().finished().count(); //已经完成的流程实例数
48     assertEquals(1, count);
49 }

  运行结果:

1 pid=4, pdid=leave2:1:3
2 applyUser:employee1, days:3, approval:true

おすすめ

転載: www.cnblogs.com/chuanqi1415583094/p/12198180.html