jbpm学習ノート(九)task活動のコースの概念


ミッションコースの概念:実際の業務応用において、よくこのような場面があります.流れの定義における複数のタスクは同じグループのユーザに割り当てられますか?この「同じグループのユーザー」を統一して「一つのコース」と定義することができます.同じ流れの定義の中のどのタスクもコースを適用できます.同じコースに属する任務はこのコースのすべてのユーザーに割り当てられます.
コースの概念は流れの定義である「グローバルユーザグループ」とも理解できます.場合によっては、コースは後の身分認証コンポーネントの中のパーミッションの役割と似ているかもしれませんが、実際には同じものではありません.
まず簡単な例を紹介します.jpdlは以下の通りです.
<?xml version="1.0" encoding="UTF-8"?>

<process name="taskSwimlane" xmlns="http://jbpm.org/4.4/jpdl">
	<!--        ,             -->
	<swimlane name="checkManagers" candidate-groups="order_managers" />
	<start>
		<transition to="checkOrder" />
	</start>

	<!--   2        ,             -->
	<task name="checkOrder" swimlane="checkManagers">
		<transition to="repeatCheckOrder" />
	</task>

	<task name="repeatCheckOrder" swimlane="checkManagers">
	 		<transition to="end" />
	</task>

 <end name="end" />
</process>
上で定義されたコース「check」はユーザーグループのmanagersを引用しています.プロセスが実行される前に、このユーザグループは作成され、アイデンティティ認証サービスIdentityServiceを利用する必要があります.
identityService.createGroup("order_managers");
		//      afei   managers 
identityService.createUser("afei", "du", "yunfei");
identityService.createMembership("afei", "order_managers");
は、開始フロー例の後、ユーザafeiがタスクcheckOrderの唯一の候補となる.まず、afeiにこの任務を受けさせます.
注意してください.findGroupTaskを使うとtaskが見られます.findPersonalTassでは出られません.
taskService.take Task(tasky);
この任務を受けてafeiを任務の分配者にし、同時にコース「check」も変化します.afeiはこの流れの例で割り当て者に固化されます.
次に、afeiは任務を達成できます.
taskyService.com mpleteTask(tasky)
このタスクを完了すると、フロー例は次のタスク「repeat CheckOrder」に流れます.この任務も前のコースを引用しました.ですから、任務は直接afeiに割り当てられます.下記のコードで検証できます.
tasks = taskService.findPersonalTasks("afei"); //   afei       
		System.out.println("tasks.size(): " + tasks.size());
		task = tasks.get(0);
		//               
		assertEquals("repeatCheckOrder", task.getName());
		assertEquals("afei", task.getAssignee());
		// taskService.takeTask(task.getId(), "afei");
		taskService.completeTask(task.getId());
注意:もしこの時take Taskも間違っていたら、afeiにtakeされました.
次の、タスク変数!