Definiowanie wyrażeń OMG (Object Managment Group) DMN (Decision Model and Notation) w języku FEEL (Friendly Enough Expression Language). Język FEEL (Friendly Enough Expression Language) jest uproszczonym językiem dedykowanym opisom wyrażeń, reprezentujących logikę decyzyjną modeli decyzyjnych standardu OMG DMN (Decision Model and Notation). Plakat DMN FEEL jest dostępny do pobrania na stronie http://www.aion.com.pl/dmn-feel-poster/
1. www.aion.com.pl/narzedziownik
DEFINIOWANIE WYRAŻEŃ DMN W JĘZYKU FEEL
wartość
pusta
przedział
czasowy
null
Boolean
Number
Instrukcje warunkowe
Operatory logiczne
data-czas
tekst
if warunek then instrukcja( else instrukcja9 ➜
instrukcja ( ⇔ warunek jest prawdziwy
some element in lista satifies warunek ➜ true
⇔ istnieje element listyH spełniający warunek
if Klientbstatus3FVIPF then
FprzyjąćF else FodrzucićF
some faktura in Faktury BD
satisfies fakturabnumer3FF(Z-:9F
P[n]Y[n]M[n]DT[n]H[n]M[n]S pisany pogrubioną
czcionką lub jako parametr funkcji
YYYYSMMSDD lub HH4MM4SS pisany
pogrubioną czcionką lub jako parametr funkcji
d=<w[=d[<wT=75==
date and time]F9:(ZS:9S(ZT:<4::FY
some in satisfies
tekst pisany zwykłą czcionkąH ujęty
w cudzysłów lub pisany kursywą
zwykła czcionka
9: minut4PTd=M!duration]FPT9:MFY
( dzień4 P<D! duration]FP(DFY
FVIPFH FStałyFH FZwykłyF
VIPH StałyH Zwykły
true
false
(H (:H (::H (:::H (::::H (:::::
:b(H :b:(H :b::(H :b:::(H :b::::(
mean
wartość
logiczna
every element in lista satifies warunek ➜ true
⇔ wszystkie elementy listy spełniają warunek
every faktura in Klientbfaktury
satisfies fakturabwartość 5 (:::
max
count
min ]listaY ➜ element listy
o najmniejszej wartości
count ]listaY ➜ liczba
elementów listy
max ]listaY ➜ element listy
o największej wartości
sum
mean ]listaY ➜ średnia
arytmetyczna elementów listy
sum ]listaY ➜ suma wartości
elementów listy
[n]
[ex]
list
contains
list contains ]listaHeY ➜ trueH
jeśli lista zawiera element e
lista[ex] ➜ elementy listyH
spełniające warunek ex
literał null pisany pogrubioną czcionką null
not równy
,!
,
H!
mniejszy
większy
większy
równy
mniejszy
równy
Klientbstatus 3 FZwykłyF and
Zamówieniebwartość h ( :::
Operatory porównania
Zamówienie 3 null
9 3 9 ≡ true! 93ó ≡ false
Klientbstatus f3 FVIPF
9 f3 9 ≡ false! 9f3ó ≡ true
Klientbstatus 3 FVIPF
or Zamówieniebwartość 5 (: :::
in
Klientbstatus in ]FVIPFH FStałyFY
Fakturabwartość in [(::bb(: :::Y
Funkcje przekształcające teksty ]łańcuchyH angb stringY
[ >
x y
Date and
time
liczba
Operatory arytmetyczne
min
Funkcje przekształcające listy ]kolekcjeH angb collectionY
ends
with
string
length
string length ]tY ➜ liczba
znaków tekstu t
String
Date>time
data
i czas
dwa literały4 true ]prawdaY oraz false ]fałszY
pisane pogrubioną czcionką
YYYYSMMSDDTHH4MM4SS pisany pogrubioną
czcionką lub jako parametr funkcji
d=<w[=d[<w! date]F9:(ZS:9S(ZFY
=75==5==! time]F:<4::4::FY
Duration
contains
substring
before
contains ]tHpY ➜ trueH jeśli
tekst t zawiera ciąg p
substring before]tHpY ➜ podciąg
tekstu tH będący przed ciągiem p
starts with]tHpY ➜ trueH jeśli
tekst t rozpoczyna się ciągiem p
ends with]tHpY ➜ trueH jeśli
tekst t kończy się ciągiem p
substring
after
substring after]tHpY ➜ podciąg
tekstu tH będący po ciągu p
string length]FVIPFY 3 )
string length]FStałyFY 3 ;
contains]FF(Z-:9FHF(ZFY 3 true
contains]FF(Z-:9FHFZ:FY 3 false
starts with]FF(Z-:9FHFF(ZFY 3 true
starts with]FF(Z-:9FHF(ZFY 3 false
ends with]FF(Z-:9FHF:9FY 3 true
ends with]FF(Z-:9FHF:FY 3 false
substring before]FF(Z-:9FHF-FY3FF(ZF
substring before]FF(Z-:9FHF<FY3FF
substring after]FF(Z-:9FHF-FY 3 F:9F
substring after]FFHF-FY 3 FF
count][(;H9;H9;H);]Y3ó
count][FVIPFH FStałyFH FZwykłyF]Y 3 )
max](;H9;H9;H);Y 3 );
max]P<=YHPdYHPTd=MY 3 P<=Y
mean](;H9;H9;H);Y 3 9;
mean](;H9:Y 3 (>b;
sum](;H9;H9;H);Y 3 (::
sum](;H9:Y 3 );
list contains][(;H9;H);]H(;Y 3 true
list contains][(;H9;H);]H;Y 3 false
lista[n] ➜ nSty element listy!
n3( S pierwszyH n3S( S ostatni
lista[(]3(;H lista[;]3nullH lista[S(]3);H
dla lista3[(;H9;H);]
Klientbfaktury[wartość5(:::]
[(;H9;H);][item59:] 3 [9;H);]
min](;H9;H9;H);Y 3 (;
min]P<=YHPdYHPTd=MY 3 PTd=M
9:T(;3);! FF(ZFTF-FTF:9F3FF(Z-:(9F
d=<w[=d[<w T P<D 3 d=<w[=d[<g
9:S(;3;! (;S(>b;3S9b;
d=<w[=d[<w S P<D 3 d=<w[=d[<*
9: y ; 3 (::! ; y >b; 3 )>b;
P<YgM y 9 3 P/YdM
9: - ; 3 ó! ); - 9 3 (>b;
P<DT<H > 9 3 PT<dH/=M
not ex ➜ true ⇔
nieprawdziwe ex
0! różny
or
and
e( and e9 ➜ true
⇔prawdziwe e( i e9
e( or e9 ➜ true ⇔
prawdziwe e( lub e9
if then else
every in satisfies
not Klientbstatus 3 FVIPF
not true ≡ false! not false ≡ true !
H
Fakturabwartość h (:::
9 h ( ≡ false! 9 h ó ≡ true
Fakturabdata5d=<w[=d[=<
9 5 ( ≡ true! 9 5 ó ≡ false
Fakturabnumer53FF(Z-:9F
PTd=M 53 PT<H ≡ false
Fakturabwartość h3 (:::
PT<=M h3 PTd=M ≡ true
c
]]
e in S ➜ true ⇔ e
należy do zbioru S
oddziela elementy
zbioru skończonego
definiuje przedział
nieskończony
FVIPF in ]FVIPFH FStałyFY ≡ true
<< in ](H (:H (::H (:::Y ≡ false
; in ];bb(:] ≡ false! ; in [;bb(:Y ≡ true
(: in ];bb(:Y ≡ false! (: in [;bb(:] ≡ true
Typy danych
starts
with