워 크 플 로 시리즈(5.1)-activiti 프로 세 스 파일 분석 기능 구조 디자인

46027 단어 Activiti 학습
글 목록
  • 프로필
  • BPMN 2.0 요소 와 Activiti 의 지원
  • 이벤트(이벤트)
  • 활동(활동)
  • 퀘 스 트(작업)
  • 서브 프로 세 스
  • 게 이 트 웨 이
  • 링크 대상
  • 분석 구조 디자인
  • 원소 와 전환
  • 변환기
  • 해상도 기
  • 분석 프로 세 스 파일 에 대해 Activiti 는 스 트림 모드 를 사 용 했 고 5.12.1 이전 에는 푸 시 모드(SAX)를 사 용 했 으 며 그 이후 에는 스 트림 모드(STAX)를 사용 했다.
    프로필
    이전에 도 말 했 듯 이 프로 세 스 파일 은 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
  • <subProcess id="subProcess">
      <startEvent id="subProcessStart" />
      ... other Sub-Process elements ...
      <endEvent id="subProcessEnd" />
     subProcess>
    
  • 하위 프로 세 스 callActivity 호출
  • <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.childorg.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 등 정 보 를 분석 합 니 다.

    좋은 웹페이지 즐겨찾기