jBPM4.4: 임무를 분배하는 몇 가지 방식은 집행 기간에 임무 집행자를 동태적으로 분배한다.
할당된 객체는 다음과 같습니다.
다음과 같이 할당할 수 있습니다.
절차가 확정된 상황에서 때때로 한 단계를 완성하는 인원이 확정되지 않고 임무가 발표될 때 지도자가 완성에 참여하는 인원을 확정한다.
이러한 상황을 완성하기 위해 이 단계에 이르렀다. 동적 생성을 설정하여subTask를 만들고subTask를 통해 모든 사람에게 파견 작업을 할 수 있다.
사실 jBPM 4도 통과할 수 있어요.4의foreach 방식으로 완성(주의: 이 기능은 아직 부화기에 있다).
예를 들어 하나의 심사 업무를 완성하려면 어떤 업무는 2명이 완성해야 하고 어떤 업무는 3명이 완성해야 한다. 절차를 시작할 때 절차를 생성하는 인원이 해당하는 직원을 지정한다.
jBPM 4.4 개발 가이드의 예는 다음과 같습니다.
<process name="ForEach" xmlns="http://jbpm.org/4.4/jpdl">
<start g="28,61,48,48" name="start1">
<transition to="foreach1"/>
</start>
<foreach var="department" in="#{departments}" g="111,60,48,48" name="foreach1">
<transition to="Collect reports"/>
</foreach>
<task candidate-groups="#{department}" g="201,58,92,52" name="Collect reports">
<transition to="join1"/>
</task>
<join g="343,59,48,48" multiplicity="#{quorum}" name="join1">
<transition to="end1"/>
</join>
<end g="433,60,48,48" name="end1"/>
</process>
1. 프로세스를 시작한 후 foreach 노드에 도달합니다.
<foreach var="department" in="#{departments}" g="111,60,48,48" name="foreach1">
<transition to="Collect reports"/>
</foreach>
매개변수:
in: 밖에서 들어오는 인자를 표시합니다.foreach에서 이 인자를 읽을 것입니다. 이 인자는string 수조일 수도 있고 쉼표로 구분된 문자열일 수도 있습니다.
var: 이 변수는foreach에서 in의 내용을 규칙에 따라 나누는 것입니다. 나누는 결과는 var이 정의한 변수에 놓고 다음 단계로 전달됩니다. (한 걸음 한 걸음 값을 받습니다.)
foreach에 들어가서 이 매개 변수를 분석하면join의multiplicity 매개 변수의 값에 따라task(multiplicity를 몇 개로 정의하면 몇 개의Executiuon, 몇 개의task)를 생성합니다. 이것들의assignee는 모두 비어 있습니다.
2.task 입장
<task candidate-groups="#{department}" g="201,58,92,52" name="Collect reports">
<transition to="join1"/>
</task>
task에 들어갔습니다. 사실 현재 여러task가join의multiplicity에 의해 확정되었습니다.
이task 작업에 배정된 인원은 candidate-groups(또는 candidate-users 등)에서 정의됩니다.이 예#{department}는foreach 노드에서 정의된 var="department"의 변수 이름입니다.
이 작업들은 사용자에게 직접 분배되는 것이 아니라 사용자 스스로take를 진행해야 한다
(TaskService.createTaskQuery().candidate(userId).list 어떤 미션을 받을 수 있는지 본인이 후보자입니다.
또는 TaskService를 통해findGroupTasks(userId)는 자신이 가입한 그룹에서 수행해야 할 작업을 가져옵니다.
또는 프로세스 xml 파일에서 assignee로 작업 수행자에게 직접 분배
).
3. foreach에서 자동으로 생성된 Task가 모두 완성되면 프로세스는 다음 단계로 넘어갑니다.
만약 일부 인원이 완성하고 일부 인원이 완성하지 못하면foreach에서 자동으로 생성된 모든 Execution(processInstance.getExecutions()를 찾을 수 있지만 임무가 완성된 상황에 따라 다른 상태가 있습니다.
작업이 완료되면 Task 테이블에서 삭제됩니다. 받은 excution 상태는: inactive-join입니다.
완료되지 않은 작업은task에 여전히 존재합니다.excution 상태는active-concurrent입니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
개인 FLEX 지식 라이브러리 작업 노트[size=large]1、 이 방법은 TileWindows 팝업 창에 있습니다. TitleWindows의 maxWidth와 maxHeight를 지정하지 않으면 최대 값이 화면 전체에 깔립니다. 페이지의minHeigh...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.