워 크 플 로 시리즈(5.1)-activiti 프로 세 스 파일 분석 기능 구조 디자인
46027 단어 Activiti 학습
프로필
이전에 도 말 했 듯 이 프로 세 스 파일 은 XML 파일 을 통 해 설정 되 었 습 니 다.다음 과 같 습 니 다.
<definitions id="definitions"
targetNamespace="http://activiti.org/bpmn20"
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:activiti="http://activiti.org/bpmn">
<process id="vacationRequest" name="Vacation request">
<startEvent id="request" activiti:initiator="employeeName">
<extensionElements>
<activiti:formProperty id="numberOfDays" name="Number of days" type="long" value="1" required="true"/>
<activiti:formProperty id="startDate" name="First day of holiday (dd-MM-yyy)" datePattern="dd-MM-yyyy hh:mm" type="date" required="true" />
<activiti:formProperty id="vacationMotivation" name="Motivation" type="string" />
extensionElements>
startEvent>
<sequenceFlow id="flow1" sourceRef="request" targetRef="handleRequest" />
<userTask id="handleRequest" name="Handle vacation request" >
<documentation>
${employeeName} would like to take ${numberOfDays} day(s) of vacation (Motivation: ${vacationMotivation}).
documentation>
<extensionElements>
<activiti:formProperty id="vacationApproved" name="Do you approve this vacation" type="enum" required="true">
<activiti:value id="true" name="Approve" />
<activiti:value id="false" name="Reject" />
activiti:formProperty>
<activiti:formProperty id="managerMotivation" name="Motivation" type="string" />
extensionElements>
<potentialOwner>
<resourceAssignmentExpression>
<formalExpression>managementformalExpression>
resourceAssignmentExpression>
potentialOwner>
userTask>
<sequenceFlow id="flow2" sourceRef="handleRequest" targetRef="requestApprovedDecision" />
<exclusiveGateway id="requestApprovedDecision" name="Request approved?" />
<sequenceFlow id="flow3" sourceRef="requestApprovedDecision" targetRef="sendApprovalMail">
<conditionExpression xsi:type="tFormalExpression">${vacationApproved == 'true'}conditionExpression>
sequenceFlow>
<task id="sendApprovalMail" name="Send confirmation e-mail" />
<sequenceFlow id="flow4" sourceRef="sendApprovalMail" targetRef="theEnd1" />
<endEvent id="theEnd1" />
<sequenceFlow id="flow5" sourceRef="requestApprovedDecision" targetRef="adjustVacationRequestTask">
<conditionExpression xsi:type="tFormalExpression">${vacationApproved == 'false'}conditionExpression>
sequenceFlow>
<userTask id="adjustVacationRequestTask" name="Adjust vacation request">
<documentation>
Your manager has disapproved your vacation request for ${numberOfDays} days.
Reason: ${managerMotivation}
documentation>
<extensionElements>
<activiti:formProperty id="numberOfDays" name="Number of days" value="${numberOfDays}" type="long" required="true"/>
<activiti:formProperty id="startDate" name="First day of holiday (dd-MM-yyy)" value="${startDate}" datePattern="dd-MM-yyyy hh:mm" type="date" required="true" />
<activiti:formProperty id="vacationMotivation" name="Motivation" value="${vacationMotivation}" type="string" />
<activiti:formProperty id="resendRequest" name="Resend vacation request to manager?" type="enum" required="true">
<activiti:value id="true" name="Yes" />
<activiti:value id="false" name="No" />
activiti:formProperty>
extensionElements>
<humanPerformer>
<resourceAssignmentExpression>
<formalExpression>${employeeName}formalExpression>
resourceAssignmentExpression>
humanPerformer>
userTask>
<sequenceFlow id="flow6" sourceRef="adjustVacationRequestTask" targetRef="resendRequestDecision" />
<exclusiveGateway id="resendRequestDecision" name="Resend request?" />
<sequenceFlow id="flow7" sourceRef="resendRequestDecision" targetRef="handleRequest">
<conditionExpression xsi:type="tFormalExpression">${resendRequest == 'true'}conditionExpression>
sequenceFlow>
<sequenceFlow id="flow8" sourceRef="resendRequestDecision" targetRef="theEnd2">
<conditionExpression xsi:type="tFormalExpression">${resendRequest == 'false'}conditionExpression>
sequenceFlow>
<endEvent id="theEnd2" />
process>
definitions>
이 프로 세 스 파일 은 Activiti 사용자 매 뉴 얼 에서 발췌 합 니 다.
BPMN 2.0 요소 와 Activiti 지원
BPMN 요소 에 대한 소 개 는 워 크 플 로 시리즈(2)-BPMN 프로필 을 볼 수 있다.
Activiti 는 BPMN 요소 에 대한 지원 으로 가장 기본 적 인 요소 만 표시 합 니 다.
이벤트(이벤트)
간단 한 소개 로 사건 을 끝내기 시 작 했 고,다른 것 은 경계 사건 등 은 잠시 소개 하지 않 았 다.
BPMN 원소
Activiti 클래스
프로필 표시
시작 이벤트
StartEvent
종료 이벤트
EndEvent
활동(활동)
이벤트 포함 퀘 스 트,하위 프로 세 스
작업(작업)
자주 사용 하 는 것 만 소개 하고 물론 다른 것 도 있다.예 를 들 어 업무 규칙 임무,임 무 를 받 는 등 이다.
BPMN 원소
Activiti 클래스
프로필 표시
사용자 작업
UserTask
서비스 임무
ServiceTask
수공 임무
ManualTask
스 크 립 트 퀘 스 트 ScriptTask
<scriptTask id="theScriptTask" name="Execute script" scriptFormat="groovy">
<script>
sum = 0
for ( i in inputArray ) {
sum += i
}
script>
scriptTask>
서브 프로 세 스
<subProcess id="subProcess">
<startEvent id="subProcessStart" />
... other Sub-Process elements ...
<endEvent id="subProcessEnd" />
subProcess>
<callActivity id="callCheckCreditProcess" name="Check credit" calledElement="checkCreditProcess" />
게 이 트 웨 이
BPMN 원소
Activiti 클래스
프로필 표시
병렬 게 이 트 웨 이
ParallelGateway
배타 적 게 이 트 웨 이
ExclusiveGateway
게 이 트 웨 이 포용
InclusiveGateway
링크 개체
BPMN 원소
Activiti 클래스
프로필 표시
순서 흐름
SequenceFlow
순서 흐름 에서 조건 을 증가 시 킬 수 있다.예 를 들 어
<sequenceFlow id="flow3" sourceRef="requestApprovedDecision" targetRef="sendApprovalMail">
<conditionExpression xsi:type="tFormalExpression">${vacationApproved == 'true'}conditionExpression>
sequenceFlow>
해석 구조 설계
Activiti 의 분석 작업 은 설정 파일 의 요 소 를 대응 하 는 자바 류 로 바 꾸 는 것 입 니 다.자바 류 가 맨 위 에 있다 면 설정 파일 은 맨 아래 에 있 고 이 둘 사이 에 변환기 와 해석 기 입 니 다.먼저 모든 요소 에 공공 속성 이 있 습 니 다.예 를 들 어 id,name 등 공공 속성 에 대해 우 리 는 이 를 공공 적 인 방법 으로 추출 하여 분석 할 수 있 습 니 다.그러나 모든 요 소 는 자신 만 의 독특한 속성 을 가지 고 있 기 때문에 Activiti 는 모든 요소 에 해상도 나 변환 기 를 정의 하여 모든 요소 에 속성 을 추가 할 때 특정한 해상도 만 수정 하면 이 루어 집 니 다.
원소 와 변환
BpmnXMLconverter 는 변환 의 입구 입 니 다.설정 파일 을 읽 고 순환 적 으로 해석 합 니 다.서로 다른 변환 기 를 등록 하여 서로 다른 요 소 를 변환 하고 변환기 에서 해상도 기 를 통 해 요 소 를 해석 하거나 호출 하여 최종 적 으로 BpmnModel 대상 을 구축 합 니 다.많은 요소 들 이 똑 같은 구 조 를 가지 기 때문에 공공 적 인 해석 방식 을 가진다.공공 확장 속성(Extension Attribute)이 있 습 니 다.같은 해상도 기 를 사용 하여 순환 처리 합 니 다.
컨버터
원소
자바 클래스
컨버터
비고
endEvent
EndEvent
EndEventXMLConverter
startEvent
StartEvent
StartEventXMLConverter
businessRuleTask
BusinessRuleTask
BusinessRuleTaskXMLConverter
manualTask
ManualTask
ManualTaskXMLConverter
receiveTask
ReceiveTask
ReceiveTaskXMLConverter
scriptTask
ScriptTask
ScriptTaskXMLConverter
serviceTask
ServiceTask
ServiceTaskXMLConverter
sendTask
SendTask
SendTaskXMLConverter
userTask
UserTask
UserTaskXMLConverter
task
Task
TaskXMLConverter
callActivity
CallActivity
CallActivityXMLConverter
eventGateway
EventGateway
EventGatewayXMLConverter
exclusiveGateway
ExclusiveGateway
ExclusiveGatewayXMLConverter
inclusiveGateway
InclusiveGateway
InclusiveGatewayXMLConverter
parallelGateway
ParallelGateway
ParallelGatewayXMLConverter
complexGateway
ComplexGateway
ComplexGatewayXMLConverter
sequenceFlow
SequenceFlow
SequenceFlowXMLConverter
catchEvent
CatchEvent
CatchEventXMLConverter
throwEvent
ThrowEvent
ThrowEventXMLConverter
boundaryEvent
BoundaryEvent
BoundaryEventXMLConverter
textAnnotation
TextAnnotation
TextAnnotationXMLConverter
association
Association
AssociationXMLConverter
dataStoreReference
DataStoreReference
DataStoreReferenceXMLConverter
valuedDataObject
ValuedDataObject
ValuedDataObjectXMLConverter
alfrescoStartEvent
AlfrescoStartEvent
AlfrescoStartEventXMLConverter
alfrescoUserTask
AlfrescoUserTask
AlfrescoUserTaskXMLConverter
해석 기
해상도 가 있 는 가방 은
org.activiti.bpmn.converter.child
과org.activiti.bpmn.converter.parse
입 니 다.원소
자바 클래스
해석 기
비고
process
Process
ProcessParse
subProcess
SubProcess
SubProcessParser
bpmndi:BPMNEdge
GraphicInfo
BpmnEdgeParser
순서 흐름 등 선분 도형 위치 등 정 보 를 분석 합 니 다.
bpmndi:BPMNShape
GraphicInfo
BpmnShapeParser
작업 등 비 선분 도형 위치,넓 은 고등 정 보 를 분석 합 니 다.
lane
Lane
LaneParser
pool
Pool
ParticipantParser
messageFlow
MessageFlow
MessageFlowParser
activiti:executionListener
ExecutionListener
ExecutionListenerParser
실행 모니터
activiti:taskListener
ActivitiListener
TaskListenerParser
태 스 크 모니터 분석
multiInstanceLoopCharacteristics
MultiInstanceLoopCharacteristics
MultiInstanceParser
loopCardinality,isSequential,completionCondition 등 정 보 를 분석 합 니 다.