Skip to content

Latest commit

 

History

History
163 lines (127 loc) · 6.04 KB

README.ja.md

File metadata and controls

163 lines (127 loc) · 6.04 KB

BPMNml [WIP]

English/英語 | Japanese/日本語

BPMNmlは、BPMNのマークアップ言語です。文法は当初Class Digramにインスパイアされました。 Mermaidへの対応を目指しています。

デモ

Goal

  • 主要なBPMN仕様に対応
  • Mermaidにマージ
  • BPMN XMLのコード生成

---
title: BPMN デモ
---

bpmn-beta
    event StartEvent <<start>>
    task TaskA
    gateway DecisionPoint <<exclusive>>
    task TaskB
    task TaskC
    event EndEvent <<end>>

    StartEvent --> TaskA
    TaskA --> DecisionPoint
    DecisionPoint --> TaskB : "yes"
    DecisionPoint --> TaskC : "no"
    TaskB --> EndEvent
    TaskC --> EndEvent

    pool fstPool {
        lane fstLane {
            event Start1 <<start>>
            event End2 <<end>>
            %% コネクションの設定がスコープ内に限定されるため要修正
            Start1 --> End2
        }
    }
grammar BPMNml

// from https://github.com/mermaid-js/mermaid/blob/develop/packages/parser/src/language/common/common.langium
// import "../common/common";
interface Common {
  accDescr?: string;
  accTitle?: string;
  title?: string;
}

fragment TitleAndAccessibilities:
  ((accDescr=ACC_DESCR | accTitle=ACC_TITLE | title=TITLE) EOL)+
;

fragment EOL returns string:
  NEWLINE+ | EOF
;

terminal NEWLINE: /\r?\n/;
terminal ACC_DESCR: /[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/;
terminal ACC_TITLE: /[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/;
terminal TITLE: /[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/;

hidden terminal WHITESPACE: /[\t ]+/;
hidden terminal YAML: /---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/;
hidden terminal DIRECTIVE: /[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/;
hidden terminal SINGLE_LINE_COMMENT: /[\t ]*%%[^\n\r]*/;
// common

// エントリールール
entry BPMN:
    NEWLINE*
    "bpmn-beta"
    (
    NEWLINE* TitleAndAccessibilities BPMNModel*
    | NEWLINE* BPMNModel
    | NEWLINE*
    )
;

// ターミナルルールの定義
terminal ID: /[a-zA-Z_][a-zA-Z0-9_]*/;
terminal STRING: /"([^"\r\n])*"/ | /'([^'\r\n])*'/;
terminal INT returns number: /[0-9]+/;

hidden terminal WS: /\s+/;

BPMNModel:
    elements+=BPMNElement*;

// BPMN要素の定義
BPMNElement:
    Node | Container | Connection;

// ノードの抽象定義
Node:
    Event | Task | Gateway;

// イベントの定義
Event:
    'event' name=ID ('<<' eventType=EventType '>>')?;

// イベントの種類の定義
EventType:
    start = 'start' |
    end = 'end' |
    intermediate = 'intermediate';

// タスクの定義
Task:
    'task' name=ID;

// ゲートウェイの定義
Gateway:
    'gateway' name=ID ('<<' gatewayType=GatewayType '>>')?;

// ゲートウェイの種類の定義
GatewayType:
    exclusive = 'exclusive' |
    parallel = 'parallel' |
    inclusive = 'inclusive';

// コンテナの抽象定義
Container:
    Pool | Lane;

// プールの定義
Pool:
    'pool' name=ID '{'
        elements+=BPMNElement*
    '}';

// レーンの定義
Lane:
    'lane' name=ID '{'
        elements+=BPMNElement*
    '}';

// 接続の定義
Connection:
    source=[Node:ID] ('-->' | '..>' | '--') target=[Node:ID] (':' label=STRING)?;

参考

ライセンス

Apache-2.0 license