記事ディレクトリ
1.説明
この記事は、immort.Liuのブログ投稿を参照しています。
2. Activiti7の各段階でのデータベーステーブルの変更
2.1プロセスの展開フェーズ
2.1.1コード
/**
* 部署流程
*/
@Test
public void testDeployProcess() {
Deployment deploy = repositoryService.createDeployment()
.addClasspathResource("processes/test.bpmn")
.addClasspathResource("processes/test.png")
.name("测试数据库内容变化-1")
.deploy();
System.out.println("流程部署ID:"+deploy.getId());
System.out.println("流程部署名称:"+deploy.getName());
}
2.1.2変更された表
展開フェーズ中に変更されたテーブルは次のとおりです。
act_ge_bytearray (资源表)
act_re_deployment (流程定义部署表,存储流程部署信息)
act_re_procdef (流程定义表,记录流程定义信息)
2.1.3表のデータの内容
act_ge_bytearray
-
最初の行はbpmnのxmlファイルを格納します
-
2行目にはPNG画像ファイルが保存されています
-
act_re_deployment
上の図はこれらのデータのソースを説明しており、展開中にテーブル内の他のフィールドを設定することもできます。 -
act_re_procdef
上記の表のキーフィールドを使用してプロセスを開始できます。この記事では、キーを使用してプロセスを開始します。
2.2プロセスインスタンスを開始する
2.2.1コード
/**
* 启动流程
*/
@Test
public void testStartProcess(){
securityUtil.logInAs("salaboy");
//启动流程实例,同时还要指定业务标识businessKey
//第一个参数:是指流程定义key
//第二个参数:业务标识businessKey
ProcessInstance test = runtimeService.startProcessInstanceByKey("test","1001");
System.out.println("流程实例id:"+test.getId());
System.out.println("流程部署id:"+test.getProcessDefinitionId());
}
2.2.2変更されたテーブル
act_hi_actinst
act_hi_identitylink
act_hi_procinst
act_hi_taskinst
act_ru_execution
act_ru_identitylink
act_ru_task
注:通常、act_hi_の先頭のレコードは、プロセスインスタンスの実行後に削除されません。
2.2.3表のデータの内容
act_hi_actinst
英語のスペル:activiti_history_action_instance
変換:activiti_史_活动_instance
アクティビティインスタンス:個人的には、購入申請の説明など、プロセス内のノードだと思います。処理された
タスク(アクティビティインスタンス)ごとに、レコードがテーブルに追加されます。
act_hi_identitylink
英語の完全なスペル:activiti_history_identity_link
翻訳:activiti_historical_identity_contact
各プロセスインスタンスのタスク参加者の履歴情報を記録します(各参加者の1つを記録します)。
act_hi_procinst
英語の完全なスペル:activiti_history_process_instence
変換:activiti_史_process_instance
説明:プロセスが開始されるたびに、プロセスインスタンスが生成されます。表にはもう1つの情報があります。
act_hi_taskinst
英語の完全なスペル:activiti_history_task_instence
変換:activiti_historical_task_instance
テーブルは、実行された(保留中を含む)タスクインスタンスをそれぞれ記録します
act_ru_execution
英語の完全なスペル:activiti_run_execution
変換:activiti_跑_exec
テーブルに格納されているデータ構造はツリー構造です。つまり、テーブルには親フィールドがあります。
説明:プロセスインスタンスの実行。現在、ブランチが1つしかない場合、プロセスインスタンスにはレコードが1つだけあり、実行テーブルの主キーIDはプロセスインスタンスIDと同じです。現在実行中のブランチが複数ある場合、実行テーブルには複数のレコードがあります。実行テーブルの主キーがプロセスインスタンスIDと異なるレコード。現在ブランチがいくつあるかに関係なく、実行テーブルには、プロセスインスタンスIDと同じ主キーを持つレコードが常に存在します。プロセスインスタンスが実行されて完了すると、このテーブル内のプロセスインスタンスに関連するレコードが削除されます。
act_ru_identitylink
英語の完全なスペル:activiti_run_identity_linkの
翻訳:activiti_execution_identity_link
説明:プロセスインスタンスに2人の参加者zhangsanとlisiが存在する場合、zhangsanの実行を待機しているときに、参加者を未完了のプロセスインスタンスに格納します。このプロセスインスタンスには1つのレコードしかありません。shangsanの実行が完了し、lisiが実行する番である場合、このプロセスインスタンスには2つのレコードがあります。このプロセスインスタンスの実行が完了すると、この表では、完了したプロセスインスタンスに対応するすべての参加者が削除されact_hi_identitylink
ますが、テーブルは削除されませんテーブル名がわかります。
act_ru_task
英語の完全なスペル:activiti_run_task
翻訳:activiti_execute_task
説明:テーブルは、未完了のプロセスインスタンスで保留中のタスク(処理されるノード)を格納します。一般的に言えば、各プロセスインスタンスのテーブル内のレコードは1つだけです。
2.3タスク処理
2.3.1コード
/**
* 查询及完成任务
*/
@Test
public void testTaskProcess(){
List<Task> list = taskService.createTaskQuery()
.taskAssignee("user1")
.list();
for (Task task : list) {
System.out.println("任务id:"+task.getId());
System.out.println("任务处理人:"+task.getAssignee());
System.out.println("流程实例id:"+task.getProcessInstanceId());
//完成任务
taskService.complete(task.getId());
}
}
2.3.2変更されたテーブル
act_hi_actinst
act_hi_identitylink
act_hi_taskinst
act_ru_execution
act_ru_identitylink
act_ru_task
注:通常、act_hi_の先頭のレコードは、プロセスインスタンスの実行後に削除されません。
2.3.3表のデータの変更
表の特定の変更は、セクション2.2.3の表と比較できます。
act_hi_actinst
英語の
フルスペル:activiti_history_action_instanceが翻訳:activiti_史_活动_instance
アクティビティインスタンス:個人的には、これは購入リクエストなどのプロセス内のノードだと思います。
タスク(アクティビティインスタンス)が処理されるたびに、レコードがテーブルに追加されます。
テーブルの変更:タスクが処理された後、このテーブルにレコードが追加されます。タスクが処理されたため。
act_hi_identitylink
英語のフルスペル:activiti_history_identity_link
変換:activiti_historical_identity_contactこれ
は、各プロセスインスタンスのタスク参加者の履歴情報を記録します(各参加者について、1つ記録します)。
テーブルの変更:テーブルにレコードが追加されました。その理由は、現時点でlisiがタスクを処理するのを待っているからです。もう一つのアイデンティティ。
act_hi_taskinst
英語の完全なスペル:activiti_history_task_instence
変換:activiti_historical_task_instance
テーブルは、毎回実行さ
れたタスクインスタンステーブルの変更を記録します(実行されるものを含む):プロセスが1つ完了したため、テーブルにレコードが追加されましたタスクインスタンス、2番目のタスクインスタンスを処理する時が来ました。したがって、追加のレコードがあります。
act_ru_execution
英語のすべてのスペル:activiti_run_execution
変換:activiti_exec_execution
注:テーブルに格納されるデータ構造はツリー構造です。つまり、テーブルには親フィールドがあります。
注:プロセスインスタンスが実行されます。現在ブランチが1つしかない場合、プロセスインスタンスにはレコードが1つだけあり、実行テーブルの主キーIDはプロセスインスタンスIDと同じです。現在実行中のブランチが複数ある場合、実行テーブルには複数のレコードがあります。実行テーブルの主キーがプロセスインスタンスIDと異なるレコード。現在ブランチがいくつあるかに関係なく、実行テーブルには、プロセスインスタンスIDと同じ主キーを持つレコードが常に存在します。プロセスインスタンスが実行されて完了すると、このテーブル内のプロセスインスタンスに関連するレコードが削除されます。
テーブルの変更:プロセスインスタンスの2番目のレコードがテーブルで更新されます。前のタスクインスタンスが処理され、処理される現在のタスクインスタンスが変更されたため、テーブルの対応するレコードが更新されました(以下)写真の方が表示が優れています)
上記のレコードはタスク処理前であり、後者はタスク処理後です。
act_ru_identitylink
英語の完全なスペル:activiti_run_identity_linkの
翻訳:activiti_execution_identity_link
説明:プロセスインスタンスに2人の参加者zhangsanとlisiが存在する場合、zhangsanの実行を待機しているときに、参加者を未完了のプロセスインスタンスに格納します。このプロセスインスタンスには1つのレコードしかありません。shangsanの実行が完了し、lisiが実行する番である場合、このプロセスインスタンスには2つのレコードがあります。このプロセスインスタンスの実行が完了すると、この表では、完了したプロセスインスタンスに対応するすべての参加者が削除されact_hi_identitylink
ますが、テーブルは削除されませんテーブル名がわかります。
テーブルの変更:レコードが追加されました。
act_ru_task
英語の完全なスペル:activiti_run_task
翻訳:activiti_execute_task
説明:テーブルは、未完了のプロセスインスタンスで保留中のタスク(処理されるノード)を格納します。一般的に言えば、各プロセスインスタンスのテーブル内のレコードは1つだけです。
テーブルの変更:このプロセスインスタンスに対応するレコードがテーブルで更新されます。現在処理が必要なタスクの例を常に表示します。
2.4プロセスの終了
すべてのタスクが完了すると、プロセスが終了します。
2.4.1コード
/**
* 查询及完成任务
*/
@Test
public void testTaskProcess(){
List<Task> list = taskService.createTaskQuery()
.taskAssignee("user2")
.list();
for (Task task : list) {
System.out.println("任务id:"+task.getId());
System.out.println("任务处理人:"+task.getAssignee());
System.out.println("流程实例id:"+task.getProcessInstanceId());
//完成任务
taskService.complete(task.getId());
}
}
2.4.2変更されたテーブル
セクション2.3の表と同じ
act_hi_actinst
act_hi_identitylink
act_hi_taskinst
act_ru_execution
act_ru_identitylink
act_ru_task
注:通常、act_hi_の先頭のレコードは、プロセスインスタンスの実行後に削除されません。
2.4.3表のデータの変更
act_hi_actinst
英語の
フルスペル:activiti_history_action_instanceが翻訳:activiti_史_活动_instance
アクティビティインスタンス:個人的には、これは購入リクエストなどのプロセス内のノードだと思います。
タスク(アクティビティインスタンス)が処理されるたびに、レコードがテーブルに追加されます。
テーブルの変更:タスクの処理後、このテーブルはレコードを追加します。タスクのため。
act_hi_identitylink
英語の完全なスペル:activiti_history_identity_link
翻訳:activiti_historical_identity_contact
各プロセスインスタンスのタスク参加者の履歴情報を記録します(各参加者について、1つ記録します)。
テーブルの変更:テーブルにレコードが追加されました。その理由は、プロセスインスタンスがすでに完全に実行されているためです。非常に多くのタスクインスタンスが処理されました。したがって、テーブルにはさらに多くのレコードがあります。
act_hi_taskinst
英語の完全なスペル:activiti_history_task_instence
変換:activiti_historical_task_instance
テーブルは、実行された(保留中を含む)タスクインスタンスをそれぞれ記録
しますテーブルの変更:レコードがテーブルに追加され、プロセスインスタンスが完了しました。非常に多くのタスクインスタンスが処理されました。したがって、テーブルにはさらに多くのレコードがあります。
act_ru_execution
英語のすべてのスペル:activiti_run_execution
変換:activiti_exec_execution
注:テーブルに格納されるデータ構造はツリー構造です。つまり、テーブルには親フィールドがあります。
注:プロセスインスタンスが実行されます。現在ブランチが1つしかない場合、プロセスインスタンスにはレコードが1つだけあり、実行テーブルの主キーIDはプロセスインスタンスIDと同じです。現在実行中のブランチが複数ある場合、実行テーブルには複数のレコードがあります。実行テーブルの主キーがプロセスインスタンスIDと異なるレコード。現在ブランチがいくつあるかに関係なく、実行テーブルには、プロセスインスタンスIDと同じ主キーを持つレコードが常に存在します。プロセスインスタンスが実行されて完了すると、このテーブル内のプロセスインスタンスに関連するレコードが削除されます。
テーブルの変更:テーブルが空です。すべてのプロセスインスタンスが実行されたからです。したがって、実行中のプロセスインスタンスはありません。
act_ru_identitylink
英語の完全なスペル:activiti_run_identity_linkの
翻訳:activiti_execution_identity_link
説明:プロセスインスタンスに2人の参加者zhangsanとlisiが存在する場合、zhangsanの実行を待機しているときに、参加者を未完了のプロセスインスタンスに格納します。このプロセスインスタンスには1つのレコードしかありません。shangsanの実行が完了し、lisiが実行する番である場合、このプロセスインスタンスには2つのレコードがあります。このプロセスインスタンスの実行が完了すると、この表では、完了したプロセスインスタンスに対応するすべての参加者が削除されact_hi_identitylink
ますが、テーブルは削除されませんテーブル名がわかります。
テーブルの変更:テーブルが空です。すべてのプロセスインスタンスが実行されたからです。したがって、実行中のプロセスインスタンスはありません。
act_ru_task
英語の完全なスペル:activiti_run_task
翻訳:activiti_execute_task
説明:テーブルは、未完了のプロセスインスタンスで保留中のタスク(処理されるノード)を格納します。一般的に言えば、各プロセスインスタンスのテーブル内のレコードは1つだけです。
テーブルの変更:テーブルが空です。すべてのプロセスインスタンスが実行されたからです。したがって、実行中のプロセスインスタンスはありません。
3.まとめ
上記の詳細なプロセス追跡の後、単純なプロセスに関係するテーブルと、最初から最後までのテーブルの内容の変更が反映され、テストが終了します。