「Activitiワークフローフレームワーク」トピック(3)-ActivitiワークフローフレームワークHelloWorldプログラム

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_executionproc_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

おすすめ

転載: blog.csdn.net/BruceLiu_code/article/details/113615691