記事のディレクトリ
1.フローチャートメソッドを作成します
ActivitiTestプロジェクトをクリックして、フローチャートを格納するためのsrc /メイン/ javaディレクトリーにダイアグラムのディレクトリを作成します。
現在のプロジェクトを右クリックし、Activitiダイアグラムを選択します。フローチャート名のHelloWorldを入力し、[OK]をクリックします。
上のアイコンを描くそこに関連していますコントロールパネルの右側。操作
プロセスの1つには、開始ノードと終了ノードが含まれている必要があり、複数の終了ノードが存在する場合があります。
次に、StartEvent、UserTask、EndEventを使用して次のフローチャートを作成し、ConnectionでSequenceFlow接続を使用して接続します。
2.以下に示すように、フローチャートを作成します
2.1。UserTaskのフローチャート名、ID、およびハンドラーを指定します
1)最初のノードを選択し、name属性に現在のノードの名前を入力し、Assigneeにノードのプロセッサを入力してから、類推によって3つのノードの値を設定します。
2)次に、フローチャートの横の空白をクリックし、プロセスのIDと名前を入力して、保存します
3.フローチャートをActivitiデータテーブルにデプロイします
/**
* 部署流程定义(操作数据表:act_re_deployment、act_re_procdef、act_ge_bytearray)
*/
@Test
public void test1(){
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
System.out.println(processEngine);
RepositoryService service = processEngine.getRepositoryService();
Deployment deployment = service.createDeployment()
.name("helloworld入门")
.addClasspathResource("diagrams/helloworld.bpmn")
.addClasspathResource("diagrams/helloworld.png")
.deploy();
System.out.println("流程定义部署ID:"+deployment.getId());
System.out.println("流程定义部署NAME:"+deployment.getName());
}
4.クエリプロセス定義リスト
/**
* 查询流程定义列表
*/
@Test
public void test2() {
// 流程定义查询对象,用于查询表act_re_procdef
ProcessDefinitionQuery query = processEngine.getRepositoryService().createProcessDefinitionQuery();
// 添加过滤条件
query.processDefinitionKey("helloworldkey");
// 添加排序条件
query.orderByProcessDefinitionVersion().desc();
// 添加分页查询
query.listPage(0, 10);
List<ProcessDefinition> list = query.list();
for (ProcessDefinition pd : list) {
System.out.println(pd.getId() + "--" + pd.getName());
}
}
5.プロセスインスタンスを開始します
その中runtimeService.startProcessInstanceByKey("helloworldkey");
で、helloworldkey
対応するフローチャートのid値、act_re_procdef
およびデータテーブルのプロセス定義テーブルのキーフィールド
@Test
public void flowStart(){
String processDefinitionKey = "helloworldkey";
//获取正在执行流程实例和执行对象相关的service
RuntimeService runtimeService = processEngine.getRuntimeService();
//使用流程定义key启动流程实例,key对象是HelloWorld.bpmn文件中的ID属性值,对应的是act_re_procdef表中的key
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey);
System.out.println(processInstance.getId()); //流程实例ID
}
プロセスが開始act_ru_execution
されると、テーブルにデータが生成されます。このデータは現在のプロセスによって実行されているタスクであり、act_id_フィールドの値はフローチャートノードのID値に対応します。
act_ru_task
テーブルには、プロセスインスタンスIDである主キーにexecution_id_
対応するタスクデータが生成されます。値はプロセスノードの名前であり、フィールドはToDoの現在の処理です。act_ru_execution
proc_inst_id_
name_
assignee_
5.ToDoタスクのクエリ
/**
* 查询个人任务列表
*/
@Test
public void test7() {
TaskQuery query = processEngine.getTaskService().createTaskQuery();
String assignee = "张三";
query.taskAssignee(assignee);
List<Task> list = query.list();
for (Task task : list) {
System.out.println("待办任务ID:"+task.getId());
System.out.println("待办任务名称:"+task.getName());
System.out.println("任务创建时间:"+task.getCreateTime());
System.out.println("任务办理人:"+task.getAssignee());
System.out.println("流程实例ID:"+task.getProcessInstanceId());
System.out.println("执行对象ID:"+task.getExecutionId());
System.out.println("流程定义ID:"+task.getProcessDefinitionId());
}
}
6.やることタスクを完了する
/**
* 办理任务
*/
@Test
public void test8(){
String taskId= "7504";
processEngine.getTaskService().complete(taskId);
System.out.println("办理完成,任务ID是:"+taskId);
}
taskIdact_ru_task
はテーブルの主キーIDに対応します。現在のto-doタスクはアプリケーションを送信する最初のノードであるため、to-doが実行されると、次のto-doデータが承認に流れます[部門マネージャー]など。部門マネージャーとゼネラルマネージャーのToDoタスクはすべて照会され、実行されます。
7.まとめ
サービスオブジェクト
RepositoryService Activitiフレームワークによって提供される----(プロセス定義、BPMN、PNG)静的リソースを操作
RuntimeService -----動作プロセスインスタンス(クエリプロセスインスタンス、エンド・プロセス・インスタンス、プロセス・インスタンスを開始)
--- TaskService
-操作タスク(クエリタスク、処理タスク)HistoryService ----操作履歴データ
Activitiフレームワーク(テーブルに対応する)によって提供されるオブジェクト
展開----- act_re_deployment
プロセス定義---- act_re_procdef
のProcessInstance ----- act_ru_execution
タスク----- act_ru_task