blob: 9981db15345eb55ed7b6e70b5fa27a76c22b7265 [file] [log] [blame]
/**
*
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*
*/
grammar org.eclipse.osbp.xtext.blip.BlipDSL with org.eclipse.osbp.xtext.oxtype.OXtype
import "http://osbp.eclipse.org/xtext/blip/BlipDSL"
import "http://osbp.eclipse.org/dsl/dto/v1" as dto
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
import "http://osbp.eclipse.org/dsl/common/types/v1" as types
import "http://www.omg.org/spec/BPMN/20100524/MODEL-XMI" as bpmn2
import "http://www.eclipse.org/xtext/xbase/Xtype" as xtype
import "http://osbp.eclipse.org/xtext/functionlibrarydsl/FunctionLibraryDSL" as function
BlipModel:
importSection=XImportSection?
blippackage=BlipPackage;
BlipPackage returns types::LPackage:
{BlipPackage} 'package' name=QualifiedName blips+=Blip*;
Blip:
{Blip} 'process' name=TRANSLATABLEID
((hasImage?='image' image=STRING)? &
(hasIcon?='icon' icon=IconsEnum)? &
(hasLogging?='logging')? &
(description?='describedBy' descriptionValue=TRANSLATABLESTRING)?)
('workload' workload=BlipWorkload)?
('functiongroup' functionGroup=[function::FunctionLibraryBlipGroup])?
'bpmn' process=[bpmn2::Process|QualifiedName]
('{'
(items+=BlipItem)*
'}')?
;
BlipWorkload:
{BlipWorkload} 'using' source=BlipDto ('predefine' '{' filters+=BlipFilter* '}')?;
BlipFilter:
{BlipFilter} 'set' filterName=STRING 'to' filterValue=STRING;
BlipDto:
{BlipDto} 'dto' dtoRef=[dto::LDto];
BlipItem:
BlipStartEvent | BlipEndEvent | BlipUserTask | BlipCallActivity | BlipScriptTask | BlipServiceTask | BlipPersistTask | BlipExclusiveSplitGateway | BlipInclusiveSplitGateway;
BlipStartEvent:
{BlipStartEvent} 'startevent' name=TRANSLATABLEID 'for' event=[bpmn2::StartEvent|QualifiedName];
BlipEndEvent:
{BlipEndEvent} 'endevent' name=TRANSLATABLEID 'for' event=[bpmn2::EndEvent|QualifiedName]
endHandling=EndEventHandlingEnum
;
BlipUserTask:
{BlipUserTask} 'usertask' name=TRANSLATABLEID 'for' task=[bpmn2::UserTask|QualifiedName]
('operatesOn' dtoPath=BlipDtoPath)?
('onentry' onEntry=[function::FunctionLibraryFunction])?
('onexit' onExit=[function::FunctionLibraryFunction])?
;
BlipCallActivity:
{BlipCallActivity} 'callActivity' name=TRANSLATABLEID 'for' callActivity=[bpmn2::CallActivity|QualifiedName]
('onentry' onEntry=[function::FunctionLibraryFunction])?
('onexit' onExit=[function::FunctionLibraryFunction])?
;
BlipScriptTask:
{BlipScriptTask} 'scripttask' name=TRANSLATABLEID 'for' task=[bpmn2::ScriptTask|QualifiedName]
'function' function=[function::FunctionLibraryFunction]
;
BlipPersistTask:
{BlipPersistTask} 'persisttask' name=TRANSLATABLEID 'for' task=[bpmn2::ScriptTask|QualifiedName]
'function' function=[function::FunctionLibraryFunction]
;
BlipServiceTask:
{BlipServiceTask} 'servicetask' name=TRANSLATABLEID 'for' task=[bpmn2::ServiceTask|QualifiedName]
('onentry' onEntry=[function::FunctionLibraryFunction])?
'run' (
'asynchron' timeoutInSecs=INT 'secsTimeout' |
executionMode=ServiceExecutionModeEnum
)
'as' (
'function' function=[function::FunctionLibraryFunction] |
'webservice' webServiceInterface=STRING webServiceOperation=STRING
)
('onexit' onExit=[function::FunctionLibraryFunction])?
;
BlipOutGoing:
{BlipOutGoing} 'case' name=TRANSLATABLEID 'for' sequenceFlow=[bpmn2::SequenceFlow|QualifiedName]
'when' constraint=[function::FunctionLibraryTest];
BlipOutGoingDefault:
{BlipOutGoingDefault} isDefault?='default' name=TRANSLATABLEID 'for' sequenceFlow=[bpmn2::SequenceFlow|QualifiedName];
BlipExclusiveSplitGateway:
{BlipExclusiveSplitGateway} 'exclusivesplitgateway' name=TRANSLATABLEID 'for' gateway=[bpmn2::Gateway|QualifiedName]
'{' (outgoings+=BlipOutGoing)* outgoings+=BlipOutGoingDefault '}';
BlipInclusiveSplitGateway:
{BlipInclusiveSplitGateway} 'inclusivesplitgateway' name=TRANSLATABLEID 'for' gateway=[bpmn2::Gateway|QualifiedName]
'{' (outgoings+=BlipOutGoing)* '}';
BlipDtoPath:
{BlipDtoPath} dtoPath=QualifiedDtoPath;
QualifiedDtoPath:
ValidID (=>'.' ValidID)*;
TRANSLATABLEID:
ID;
TRANSLATABLESTRING:
STRING;
enum ServiceExecutionModeEnum:
SYNC = "synchron" |
// ASYNCHRON = "asynchron" |
ONEWAY = "oneway";
enum EndEventHandlingEnum:
TERMINATES_PROCESS = 'terminates process' |
ENDS_TOKEN_PATH = 'ends token path'
;
enum IconsEnum:
ICON_PLUS = 'plus' |
ICON_MINUS = 'minus' |
ICON_INFO = 'info' |
ICON_LEFT = 'left' |
ICON_UP = 'up' |
ICON_RIGHT = 'right' |
ICON_DOWN = 'down' |
ICON_EXCHANGE = 'exchange' |
ICON_HOME = 'home' |
ICON_HOME_1 = 'home-1' |
ICON_UP_DIR = 'up-dir' |
ICON_RIGHT_DIR = 'right-dir' |
ICON_DOWN_DIR = 'down-dir' |
ICON_LEFT_DIR = 'left-dir' |
ICON_STAR = 'star' |
ICON_STAR_EMPTY = 'star-empty' |
ICON_TH_LIST = 'th-list' |
ICON_HEART_EMPTY = 'heart-empty' |
ICON_HEART = 'heart' |
ICON_MUSIC = 'music' |
ICON_TH = 'th' |
ICON_FLAG = 'flag' |
ICON_COG = 'cog' |
ICON_ATTENTION = 'attention' |
ICON_MAIL = 'mail' |
ICON_EDIT = 'edit' |
ICON_PENCIL = 'pencil' |
ICON_OK = 'ok' |
ICON_CANCEL_1 = 'cancel-1' |
ICON_CANCEL = 'cancel' |
ICON_CANCEL_CIRCLE = 'cancel-circle' |
ICON_HELP = 'help' |
ICON_PLUS_CIRCLE = 'plus-circle' |
ICON_MINUS_CIRCLE = 'minus-circle' |
ICON_RIGHT_THIN = 'right-thin' |
ICON_FORWARD = 'forward' |
ICON_CW = 'cw' |
ICON_LEFT_THIN = 'left-thin' |
ICON_UP_THIN = 'up-thin' |
ICON_DOWN_THIN = 'down-thin' |
ICON_LEFT_BOLD = 'left-bold' |
ICON_RIGHT_BOLD = 'right-bold' |
ICON_UP_BOLD = 'up-bold' |
ICON_DOWN_BOLD = 'down-bold' |
ICON_USER_ADD = 'user-add' |
ICON_HELP_CIRCLE = 'help-circle' |
ICON_INFO_CIRCLE = 'info-circle' |
ICON_BACK = 'back' |
ICON_EYE = 'eye' |
ICON_TAG = 'tag' |
ICON_UPLOAD_CLOUD = 'upload-cloud' |
ICON_REPLY = 'reply' |
ICON_EXPORT = 'export' |
ICON_PRINT = 'print' |
ICON_RETWEET = 'retweet' |
ICON_COMMENT = 'comment' |
ICON_VCARD = 'vcard' |
ICON_LOCATION = 'location' |
ICON_TRASH = 'trash' |
ICON_RESIZE_FULL = 'resize-full' |
ICON_RESIZE_SMALL = 'resize-small' |
ICON_DOWN_OPEN = 'down-open' |
ICON_LEFT_OPEN = 'left-open' |
ICON_RIGHT_OPEN = 'right-open' |
ICON_UP_OPEN = 'up-open' |
ICON_ARROWS_CW = 'arrows-cw' |
ICON_CHART_PIE = 'chart-pie' |
ICON_SEARCH_1 = 'search-1' |
ICON_USER = 'user' |
ICON_USERS = 'users' |
ICON_MONITOR = 'monitor' |
ICON_FOLDER = 'folder' |
ICON_DOC = 'doc' |
ICON_CALENDAR = 'calendar' |
ICON_CHART = 'chart' |
ICON_ATTACH = 'attach' |
ICON_UPLOAD = 'upload' |
ICON_DOWNLOAD = 'download' |
ICON_MOBILE = 'mobile' |
ICON_CAMERA = 'camera' |
ICON_LOCK = 'lock' |
ICON_LOCK_OPEN = 'lock-open' |
ICON_BELL = 'bell' |
ICON_LINK = 'link' |
ICON_CLOCK = 'clock' |
ICON_BLOCK = 'block';