DIPLOMARBEIT zur Erlangung des Grades eines Diplom

Transcription

DIPLOMARBEIT zur Erlangung des Grades eines Diplom
 !"# $% & & ! ! ' $%( $% # $% & ' $%% $%$% # !
$% )
&&# *
+, ' $%! # $% & & ! !! ) +-./0,
! 1/
1.1.2 3
,) 451-06 720271+
38 99999999999999999999999999
:&
&, ,",;,<!!
Integration von Business Rules in eine Standardapplikation
&& # * &, ,",, ;, <!!
= > % © 7550 && # *
Inhaltsverzeichnis
? 3 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,C
1, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
1,1, (! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
1,7,& (@ ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 1
1,0,A ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
1,2, ( ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 7
7, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D
7,1,& ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D
7,7, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, /
0, " " ! " >! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 1D
0,1, &:% ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1D
0,7,3 % ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,0, "B,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 1.
0,2, C >C ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 27
0,D,' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D0
2,!! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD
2,1, ?>E ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, DD
2,7, > ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D/
D,@ !!& ( $ ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, /D,1,@ !!& ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,/D,7,( $ ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,/.
,"? 5,. ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -1
, & ! $ $% ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -0
=, >"F$ ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -D
, $ ' ! " ,( ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-+
$% ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.1
Abbildungsverzeichnis
0,1, 0 $% ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 1/
0,7,G3 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,75
0,0, H ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 70
0,2, H (I ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 70
0,D, % 3 $% ! (I B " ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 72
0,/, H "" !">!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7/
0,-,B ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7.
0,., ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7+
0,+, ) 3 ; $% 3<% 3 %! &:( J ! 4? $% 6 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,05
0,15, > ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,01
0,11, 3 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 0D
0,17, > ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.
0,10,& 3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25
0,12, >C 7 " J 3 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, D1
0,1D, >C 7 " > ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, D7
2,1,?>E" :( $% ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, DD
2,7, ?>E " J &!< $% J ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, D/
2,0,( $%,I
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D.
2,2, = " ( ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, D+
2,D, = " ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, D+
2,/, (I$ " ? J ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, /1
2,-, >& ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,/7
2,.,# ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,/2
2,+, " = $ ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, //
Tabellenverzeichnis
0,1, C)& $ ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 2D
0,7, >C" ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, D5
,1, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-0
C
C
Beispiele
7,1, < "? ( ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, .
0,1, %! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,75
0,7, 4886 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 0/
0,0,=" ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,20
0,2, C)? ( ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 22
0,D, C) & J 3( ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 22
0,/, C)F"'$ ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,22,1, > ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D-
C
C
Vorwort
$% $% ! ; %! &3 $% K $%<& 8 $% $% !! $% 3$% & (, G % I < $% %!( ; %!
!, ? < & * ! G ! & & , ;! &3 >! & 3 $% < 8 3 $% ;! &! !& $% ! * %! * >! ' % (, $% K %!( &:% < $% #<% 8
K $% ? $% & ' ; %! , $%
< $%<& ! $% $% ( ; %! &3 A ,
A &: (! ? 3 $%<& 4L M6 3 &3 3 3 , $% A 3 % !!$ < ,
( 3 ( ?,
1 ( , ?,
4 $ &:
& ! ( 6 3 1++5 $% ,", BA ( :, 1+++ $% & !3 ; %! % $% ! &:% ( &:
"A 3 $% & 3 $, O !% 105 ; %! 3 $% & (3 $% &3 ?>E, (& $% 3 @3$ (< ( 3 " (3, P( , @ 3 ; %! & $%8 !! B % ! &:% ! $% &!< $% &3 &: ? %! $% 3 $% !
< $% ( , ?>E ( ! & ! $"$% ,
&3 A $% 4 8 ' $8 $68 < >! 3 A,
( 3 $( 7 $% ( ! O & $
$% ' ! 4O8 '8 OO6 & ! ,
!46 0 1%)NN333, ,
7%)NN333, $( , 0%)NN333,"
,
C
C
Kapitel 1. Einleitung
1.1. Problemstellung
3 $% &3 ! , ;! !
3 ( & < '% ( ;!3( , &3 % $% ! ' 8
! ! ? $% < ;!3, < ( 3 < 8 ;! ; %! J3:$% &3 , & 3 ! (> &3 ( $% # &, ($% % ! ( A* ( &3 3 $, ;! @ &3 &: $%&:% !!< !A $% % 8 F < $% ( <$% ! '% ! ! !: # & 3 , # &C ( >!8
3 $%<& (, $%<& 3 ( & ! & !$% ! 3 , $% >!
A $% (8 < % $ < 8 $ ! ,
1.2. Aufgabenstellung und Zielsetzung
( ($%<& $% ! ! 3 & (>!8 ! 3 & $%<& 4 6 " !! , $%3 (% 8 3 & ! %! ! 3 % ( , % & 3 > 3 & ! 8
$% 8 3 ! 3$% :& 3 A, $% J & % $% $% % !! > , % > > 3 & &: ? 3 3 ' !8 3 = " ,
1.3. Lösungsansatz
& ( % %
8 $%<& 3 &3 & ! 3 , $% % ! $%<&8 ( $%<& , $%"C ( " ! ! ? < &: !! $% " , & 8 !A $% !
$%<& & $% < $% ' ! ($% (, $% 3 $%<& I ! ( ' $% %( 8 ( < ( ,
!A $% A &: & 3 Q $% %8 ! O & < & ! , & ! 3 ! > $% 8 3$% %!3 % $% 3 3 ,
> ( , ': $% ? 3 3 % $% (A 8 3$% !A $% < 8 A$% % &:,
1
3 :( !! & ! $% 4 68 3$% & 3 ( :$ & , ;! ( :$ & ! & ! $% ! # ( ? &: %, (% $% $% %A ' 8 3$% ( (& 3 $% 3, ' 8 3$% &: # ( 3 8 & (& 3 , ? % % ? 8 # ( !! & ! , # ( 3 $% ' $% ? :& (& ' ( ,
>!8 (% & ! $% # ( 8 3 %
$% & ! = ?>E !! 3 , :&8 3 3 , A $% ( " 3,
$$ ! ( !! L3 M
3 % ( :% ( (,
1.4. Gliederung der Arbeit
& J 7, $% & &: ( ,
@! 3 & 3 3 , &: ( , # 3 &8 > $% ! $%
< , ! 3 ? & 3 $%
& 8 3 ! O & $%
3 3$% (! &3 ,
! J 0, ($% ( <$% 3 "" !">!46 3 , 3 < 3 3 % ( B C4 $, >C6 !! , ( 3<% 3 &:% $% ($% ( 3 & % >! 3 & $%( ! @ !!% ! 3 $ > ! ( , ! * ($% ! J 3 B " %! < 3 ! 3 , % &:% $% 3 & 8 & $%
3 $!( B , # B 3 ($% H " &, 3 ($% ($%<& $% ! !
> B, ! 3 * ($% 3 & &:( C
($% (, $%3 & >C8 3$% 3 C , >C
& $% $% C, ( O ! ) J 3 > >C 3 ( $%,
! & & ! J 2, 3 ?>E ' !
? 2 ($% (, 3 ! 3$% $% &3 3 $ 3 , !
$% 3 A $% & 8 3 ! O & B 3 , 3 % 3 $ > $% ,
:( % 3 3 $% ? 4 8 $ 6
,
! J D, 3 $% * $% 2%)NN333, ,
7
( ; $% !!& (3 , * ! 3 ( $ &
3 (8 $% & ( ( $%3 !&%,
0
2
Kapitel 2. Business Rules
2.1. Definition
% ( % ; , % ( 3 < 8 3 && () ! ! % ! ! 8 :
3 ( $%, # !! ! $% $%! 4RSTSU6 ( ! 8 ! :( , ($%<& $% ! >!
$% *, $% 3 8 3 3 % 3 !
3 % & 3 A8 3 $ & ! >! C $% (
$% $% , ( % % %! 8 % F (: &: & ! ,
< ( 3 < , & &: && ( $% & $%8 % $% && < & , (
O VO 1++-W ! ! $% <( $%)
" # % & '
$ $ ! % , 4 , V 1+.2W , 12D6 & ! 8 < ? % ( & ( &: &)
" # # % ( & '
3 $% $% && 8 $% & @< & ( %, $% & & O O (4 ,
VO ( 1++-W ,76)
" ( $ & &$ ( )& '
D & 3 $%3 , ! $% ; %! ! $% & ! $% , &:% $%
$% ( 3 & ! ! L' M / ,
$% ; %!) " &&& % $ ( %$ & '
D%)NN333,( , / %)NN333,( , N& 9 N( 51$5,%!
D
$% & ! $% ) " &&& & $ % & ' @ !!& & ! :( 8 $% 3$%
!<* & , ($% ( $% $% <
@< , 3 J )
X
! " # $%%8 3 ( !! Y
L ! $ ( % $ & C$ ,M
X
ZO ( 1++- , //
< " # & $% $%%8 3 ( !! Y
L > $ ( 3 & % ( C % 3 ,M
ZO ( 1++- , //
( ( % $% ! & ( & $%<& , ! !A $% 3 ,, ? 3 L[M4,, ! ( $%6 , O < < $% ,, A
$% & 3 8 & % ( < :&, $% $% < $%( ! ! ( "= ,
& ($% A $% & 3 ($% ( 3 A
$% ( $% ( (,
2.2. Darstellung von Business Rules
2.2.1. Einleitung
# & :% 1++5 B % &3 I & 3 8 $% % :( & 8 3$% !! 3 (, $% % ' ! & $%%&, # < 3 8 $% % 8
& A $% (! & $% &:,
&: & $% $%8 (
( && , 8 $%<& ( && 8 3 3 &% $% $% && $% $%, $% < 3 & 3 8 * &3 !! , &% 3 '< ,
! $% 3 3 8 ? % 3 &3 ! 8 $% $%<& , $% A $% 3 $8 3 $%
- %)NN333,( , N( &,%!
/
( !! ! ( !! %!( % , % $% ! & $% %!( ? ( 8 ( !!
J & , 1++2 A&& $% V 1++2W $% L% ) = &> 8 & 8 M ! J &: ,
2.2.2. Ontologie
(( , && % % % ! % $% $% , & L # $% & ! M ., ( ( & 8
( & !! % ! ( , < 3 & )
" * $ # ) & ' +
& J , # 8 & ! $% ( < % 8 &: ( &&( , ! @ !!% ! : $% 4J6 ( $% !%
4(3, # $% &6 % $% , ; 3 ! @ !!% !! !!%A && , !!&:% && 3 % 8
% $% ! & % ( $%, $% % & ! $% $% < $% ! = ! ( , ( ! O & $% 3 8 3 ( !< ( $%,
;! ($% ( 3 & ! $% (A , < )
" + , ( , & ' 15
> $% ! $% ( < !
$% : $% , 3 &: > $% &N%"G , &: ( $%8 ? $%
$% $% 3 $% (& , & $% & , @ !!$% L 46M ! # # #( = ! ! L$% $ >
47/,57 " 57,50,75516M 11
, #$% $% ! !A $% , & ($% 3 $% ( $% ($% 7,7,2,7 <%
,
. ) ' !3A ($%8 D8 8 B % 8 , D-5
+ ,, ( ) $% ( > $ & $ , J 3 $Q ? , D 8 1++0, ,
7
15 % ! O, 8 $ ) # J 3) O 3 #% %> J 3,
$% 7555
11 %)NN( ,! ,N( &N !"30$&7&,%!
O
-
2.2.3. Allgemeiner Aufbau einer Business Rule
# & 3 > $% ! $%
< , < 3 , $% 8 $% ! ! ? < $% % (& , <8 3 % & $% ! 3 A, 3 $%
( $%, ($%<& $% ! ! ' 8 ,%, !
$% *
? 4 <! 6 & $%& 4J 6, $% ( 3 % & $%8 ,%, ( 3 # , A
:( 3 :& 3 )
X
J I 4;G6
X
I 46
X
KQ
X
! 4#GG ,,, GG ,,,6
4,,, G; GG #GG ,,,6
A $% 4 6 3 )
X
G 4G=O6
? $% % $% $% $% :$, 3 A :( (I $% & (I $% & 3 ,
3 % ( ! F 8 ' " < >!( 3 , 3 ! && < !! & , # $% $% & < :( 8 X
X
!
(I 3 A (I ?
( 3 3 A, 17
$% & < 3 3, 3 $% $% & ? 3 ? (, ! &( 3 ? ( ! & ! < 3 ,
IF the value of all transactions of a customer
is more than 100 $ in one year
THEN he qualifies for a discount of 10%.
17 , V<!!N= 7551W , 2+
.
! $ ( $% ! , # ( 3 'NOG
G & , 3 $% ' OG 3 4 <! 6 ( $%, (
A !% $% ;G :& 3 , $% OG $%& 4J 8 6, $%& (% < !, ! ( L ! % M LQ & & M < , !
L $ ! M L $ & 15\M, ! ' ! L $ ! M (
! ! $% $% J (I 3 , ! !
% $% ! !, 3 & J 3 ! &3 % ( B % !% 155] ( <, J 3 ( OA% 15\ 3<% , ? ( 8 3 C &: I J $% ( 3 !:,
G $%& 3 $% G $% $% & ,
, % 3 ? "
2.2.4. RuleML - XML Sprache zur Repräsentation
von Fakten/Regeln
2.2.4.1. Allgemein
( 7555 ! ! @ ["( $% ! $%
$% &&, : ? I ! &8
O >8 (, ( $% && G3 # $% & # $% &, @ %! G ,, :( # # #( = !, $ !
! :( & ! ( % (, 3 $ ! " & " & ! >!, * ! 3 $ &:% 8 G & $% % " , # % < 3&< 3 ,,
$%<& &<% $ !!, (& $% $% & % 3 $,
$% $% 3 $% >! &
"( 3 $% , @,, ! ["P( 8 ' 3 ' $% :( , $% !A $%8 # ( :( $% 8 P( &:
! O &
$% 3 $% !% $%,
46 %
& 3<% ( ( $% 3 $ 3 ,
8 I ! 2.2.4.2. RuleML Design
" O $% ( % & )
X $ 4 "$ " $ 6
X & ! 4&$ "Q 6
X 4 ! $ " & $ 6
X & $ 4H ! H 6
+
X Q 4H$ $ H 6
X >"$ 4$ $>"! $ 6
# O $% ( , 3 $% $ & ! , # ( $% & ! $% 3 3 !
!" $% $% , # ; 3 $% ( &: $ ,
rules
/
1. /
/
reaction rules
\
\ 2.
\
transformation rules
|
3. |
|
derivation rules
|
|
4. |
5. |
|
|
facts
queries
|
6. |
|
integrity constraints
A ! : $% $%8 & ! J !( ( 3 , ( 3 & ! $% 4 68
:, $% % : = !! ?0 10 :,
! " = 12 3( ! $%
"= !! $ &, (3 % $% $% 3 C 8 & $% 8 ( $% (! ( ,
3 )
Wenn eine Aktie x um mehr als 5 % verliert
Dann verkaufe Aktie x und schicke eine Info per Email
( 3 $%& 4J 6, $% &:% C ! _ ` A 3 , _ ` ! _9% `" 1D ^ $% $% $! > & 4% , -.- / 0&16 & !!,
( ,! ,N( &N N " !"I$" 3"157+57"! ,&^
333, $%, (!,$ !N N$ !! " 3,%!
12%)NN333,& ,N $
1D J & ( $% J 4 $% L%M6
10
15
Hier die Darstellung in RuleML:
<imp>
<_body>
<atom>
<_opr><rel>eine Aktie x um mehr als 5 % verliert</rel></_opr>
</atom>
</_body>
<_head>
<and>
<atom>
<_opr><rel>verkaufe Aktie x</rel></_opr>
</atom>
<atom>
<_opr><rel>schicke eine Info per Email</rel></_opr>
</atom>
</and>
</_head>
</imp>
& ! $% J I &A,
Wenn eine Aktie x um mehr als 5 % verliert
Dann verkaufe Aktie x
Wenn eine Aktie x um mehr als 5 % verliert
Dann schicke eine Info per Email
<imp>
<_body>
<atom>
<_opr><rel>eine Aktie x um mehr als 5 % verliert</rel></_opr>
</atom>
</_body>
<_head>
<atom>
<_opr><rel>verkaufe Aktie x</rel></_opr>
</atom>
</_head>
</imp>
<imp>
<_body>
<atom>
<_opr><rel>eine Aktie x um mehr als 5 % verliert</rel></_opr>
</atom>
</_body>
<_head>
<atom>
<_opr><rel>schicke eine Info per Email</rel></_opr>
</atom>
</_head>
11
</imp>
3 $% $% $ @ $% $% (( 3 A,
" -
# )&& ) $ )&& 2 % & ' 1/
( $% 3: & $%8 ( $% $% (( , 1 3 :( 3 &: (A , 3 * G $% 8 A $% ( $% , ,, $% ( ( ! ' $% ! > $% & ! $% 3 $% (& , %< ? 8 >$% ! ( & 3: ,
! <$% ($% : $% $% & ! &N% "
G ($% * ,
2.2.4.3. Das Beispiel
& !! $% ? " , 8 4,, (& 8 8 !8 # 6 ( !! ( $% 3 A, ( ! ?>E $ $% (,
3 $% ( !! 3 % ,
G : $% $%)
L# ( $% ! (3 ( $%M
8 3 & N % " G )
if medium(Abwasser) then ort(Rostock)
)
1/ ! , % ( , O > 4'J6 1- %)NN333,& , ",N !N (N $ "
, !
17
! $
<?xml version="1.0" encoding="UTF-8"?>
<rulebase>
<imp>
<_head>
<atom>
<_opr>
<rel>Orte</rel>
</_opr>
<ind>Rostock</ind>
</atom>
</_head>
<_body>
<and>
<atom>
<_opr>
<rel>Medium</rel>
</_opr>
<ind>Abwasser</ind>
</atom>
</and>
</_body>
</imp>
</rulebase>
&: (& $% ! % , -.- / 0&1,
' ! ! , , $ ! 3 ! ! % 3 & )
if medium(Abwasser) and not ort(Rostock) then send("Message")
% ( G 4 6 3 ( & & ' 8
3 % G $% $% 8 $% $% !, $ ( !
@ !!% ! * , !A $% $% A , ( & ! ! G (
( ? * ?>E G $% $%
8 G && ( ! ! ! ,
! @ !!% ( $ $ 1. 8 ! A $% ( 8 $ B
( ,
2.2.5. Zusammenfassung
(& $% ( $% &< 3 $, ( 7555 ! % ( 3 % !% & ; %! # $% & :, ;!& & O ! 1.! , % ( , O
> 4'J6 ^ %)NN333,$,(,$ Na($
10
$%,
3 3 $
! ! (3 $% ! O ( $ & $%, # $% 3< 3 $ &: $ ( B " " , % $% < ( ,
$% ( $% &: 8 ( ($% ( (! $%
&3 8 & ( !! (, "B , ( % ' !3 ! O & ! 3 & , ; ! % B & ) $ !A $% : $% $% & , 3 ! ($% 0,0,2 <% ($% (,
12
Kapitel 3. Busines - Rule - Managment
- Systeme
3.1. Einführung
$% $% < ( %<& K $%<& & !! 3 G $%( 3 & , O % # >! ' , (% & $% && "" !">! ! ,
( >! ! 4!:% !6 ( ( !! 8 3 ! % @ !!%< (( , G ;! $%
8 3 ? ( &: C >! 3 $% 43 3 68 $% B % % $%, ( 3 ( :( $% $% $% ; %! 3, ? $% ! ! ( >! $% 3 4 : 3 $ 8 ( # ( 6
* ! $% & ( J, # ! % $% < )
" 30 $ $ 4 56$ . - % 7 8 & '
1+
% & " ! @ !!% ! 3 $% ! $%<& , ': ! !: : $% $% %A & !! 3 , ( $%
# ( ) & % A!! $% !! ( $% & ! ( >! 8 3 ! 3 3 &3 $% K !A $% & < : ,
$% ! B % A 3 8 "" !">!46, ! $% # & $% $% 4( 6 %!3 $ &:( 3 ( , 3 & $% & &)
X
( ' ! 4;! $%6,
X
X
!A $% (Q! ? 3 ,
X
K A % & $% &3 $%&:% 3 , ; 1+ , V
!A $% : $%
! $% &:% P( 3 $%
$%
( ,
! > 7550W
1D
$% & ,
X
$% (% ";!( 8 ! $% < $% 4B 8 B8 =8 =8 $,6 ( ( ,
$% $% 3 &: " !A $%8 % ! ;!& ( 4,%, % " 6 & 3 , J !C $% A ! !!$ N !! % ! 3 ,
4 6 > $% 0 $% & (( 0,1, 0 $% $% $%,
!"
(( ,
>! % $% $% ($% ( % :( 3 !! , $% 4 8 ' 6 ! >
$% , ' $% A K !! 3 !< $% K !!$ A ( K , % & ( ( , ' 3 3 ! ($% 0,0,7
1/
($% (,
! & ($% 3 3 "" !">!
3 !
3<% 3 , & > 3 ? 3 %
( &&, & !C 3 % 3 $%8 % <$% $% ! % & 3 3 !! 3 A,
3.2. Auswahl
': ( 3 ! 3 % 3, 3 I3 !! & &:( 3<%, 3 % % & J ()
X
$% LJ >EM
X
& $% ? 3 $% # 4' N6
X
' ! < $% ' !4 $%6
X
A $% : $%4L $%"$% $%M6 &:
3
' ( & ! !! $% 3 !% J &, @ ( !! "" !">! %A LBM L N M &4%! 6, G ! 3 ( $% 3 , 3 $% !A $% & "? &3 ? &: , % $% &3 B 2,D $% $% * $% #(! ? &:, B
3 ($% 0,0 &:% $%
< , & ! ! 75 %)NN333,( &,$ ! & ,
& &:( 3 C 71 3<%, ( % $% ! B " &:
< 8 8 ! ? ( , C B
( !! < 1" &, $% B
( $% &C ( < $% C & $% &C ( 3 8 B
$% ( , 3 *#77 ! C "" !">!46 ( $%,
! <$% ($% 3 B C ($% ( 3 %
&&8 3$% >! &: I ! ( ,
! @ !!% ! $% 3 $% 3<% B
$ & $ Q 70 C , & & B
! &:
75%)NN333,( 71%)NN333,! 77%)NN333,I( 70%)NNI$, NNI
&,$ !
C, $%,
N Y b+2
1-
,
3.3. ILog - JRules
3.3.1. Allgemein
1+.- : ; %! 3 $ J ! &: ! 8 ? , 3 3 3 3 ,, G $% $%$% 8 &" !& % 8 ? 8 3 3 , 3 $% $%<& 3
3 3 G3 ! !8 J 8 ' >8 8 8
(" ( ( 8 " & , P( 1,555 ( !% 055 &:% &3 "( H $%<& "8
! " ? "$% , @ ( J %A $8 8 ; 8 ! =% > 8 O3" $ 8 $% ! G , H
"" !A $% $% (!! 8 ( !! K % >!,
B ( 3 $
&: P( 3 $%
&: , B 3 3 3 G&:% 8
:( 3 $% (& 3, B & ! $% 8 % $%<& 3 !A $% B
$% ( ,
; %! !& $% $% $% $ ? &:8 $% * $% A $% 8 &3 8 # &: & &:% I, # &: J #("! " ' 3 I<% $% I<% $% $% (,
3.3.2. ILOG`s Rule Engine
;! ' 3 < !: && (I8 $% 8 # ! >4#68 < 3 , (I & $% B
(I, B 3 (I $% B
J ["$%! < , $% $% ( !!4 $%6 ' , # $% & 3 $% ( $%, <$% 3 $% && # ! >, (I! & P( :& & , 3 (I ( ! ! ! ( 3 , (I! !!
! (I ! , B # & $% # < A, ( 3 , A (I ! # % &: & 8
(I ! & % (I &:% , " $" , # ( ! # (I % &: (I ! # A$%, 3 $% && , $% ( ! & 3 , ( & &:
(& , B % &: 3 8 3 ( $%4" 6,
1.
B 3 ! %!V' > 1+.7W ! ? ( , %! 3 -5 B % =% , ' > = " ; > 3 $, %! 3 3 '<% * % %< 3 %
& ! $, ': ( ? < 3 B ( 3 $%& ' 3 ! %! % ! & $% < ,
%! 3< , ? 3< 3 3 !
% # ( 8 ! ( $%< , A( !
3 $% 3 $% & @ &( , $% ! @ !!% $%
(4 6 ? %3 , ! ( ? 3< & 8 3$% $%& % ( # % , @<$% 3 ! >! & ( ( 8 3 & ( ' % , @> 3 3 !A $% 3 % , ! 8 & X
!% (8 &: ^
X
(( $% ! &: 4 , V 1++5W , D/,
! " %! 3 <$% G3 &( ,
% $% G ! 8 ( $% G, ! # ! >
3 $% 3 3 !A $% , ' ! ! G $%
8 % ! 8 3$% &:% 3 !, (I &:
4 "6 8 3 (3 $% $% < < ( &:4 ! $% 6 3 ( (, $% $% 3 I 4 6 ( (I () 3 ,
? (8 $% ! $% ( % (8 &: , 3 ) & , (8 &:% 3 ,
!! !: I! $% & $% & I ( ! , < ( (, :( :& 3 , ( %( $% && (! ( * !, ! "3 ? 3< $% 3 $%)
X
$% < :( :& !) I ( (3, 3
3 I3 ( $% < ! ( $%
3 ,
X
$% < :( :& ) !
! $% I $% A !!& ! &3 3 ,
! ! %! ! 3 ! & 1+
< ,
"
A(x) ^ B(x) ^ C(y) ) add D(x)
A(x) ^ B(y) ^ D(x) ) add E(x)
A(x) ^ B(x) ^ E(y) ) delete A(x)
Arbeitsspeicher(WM): {A(1); A(2); B(2); B(3); B(4); C(5)}
#$%
? 8 ( $% $% ! < , $% 3 $%
3 % 8 & ! 3 &(3 % ,
X
:( @ 3 ! X
! @> 3 ! X
! @> $% c1 3 $% ! 3 < % (
%! :( ! J G3 ,
': ! (I ! # % 8 $% %! $% G J 8 &:, $% 3 $% 8 % ! , %< ( !! (I :( :&8
( ! ! J :& &:, ' 8 3 % $% $%8 J , B % %< 75
(I8 ! O & & ! $% " &A , B ! % 8 J % , % ! (I8 ( !! &:, J 3 $% G3 < ^ ! ! ( 3 ! 8 3 ! , K ! ( $% 3 & $% G 8 , , J 4,, 466, && $% $% ? %! 8 $% $% $% $% ! &:% 3 , (8 I! $% & $% 3 ,
%! , $%& < ! A* ! 72 B !!, G $% ! !
%! 3 ( $%, O $% & )
B
(
>)
[ )
B
)
' $ > )
( > 155\ B
!& $% ,
(
> ! &C ( 3 ? &: 8 !A $% [
(I ,
! B
!! 8 $% 3 B
J B ( (,
B
(I ! 3 A, L % &>M % &:8 & < 3 ! ,
> ! $% !)
A & $ L % &>M % &: & 3 3 !! A , A $% $ % &: 3 ,, C 8 ! ;,
! )
$% " ! !$% ! % ? &: ! && 3 ,
% $% )
72 !& $% ! "? B
71
% A $% ! L( $M % = C
J (I 8 & $% (I &,
B )
>$ )
= ! )
! )
> C =%$ )
3 ? &: !A $%
$% ;!( ) B78 B78 #( $,
3 %A% & ! $ ( ? ( ! 3 ,
! 3 ,
B
$%3 %A% A $ ! $" ! 3 ,
% > C =%$ ! & > C :&,
!A $% ! $ = , (3 $% K $%<& % $ = < :( , ( C$ (I$ 4($% 0,0,7 V7DW68 3$%
B
J & , [ (I & &:% 3 , (I & F 4B
(I [ $%! 6,
77
&' ( 3 ! ( ! (I #, :& (I ! # &:% 3 ,
( &' )*
70
B8 B
J = C8 ! & $% B
(I, (I ( % 4( $% 6 & B
(I ! # ! > & $% ( %, 3 J ( ,
+ $" $%!" )* ,- B J ( > (% J &: $% J ! 8 3 B 8
8 ( 3, J !! ! = C J 4# ! >6 ( O &: !! (I, < (I) J , #
(I ! (I % &: 3 3 )
X
& B
(I 3 % &:, & !A $% $ (I :( 3 $%,
X
3 (3 , # $% & 3 % &:, !
& ( , B K #H A 3 ( ,
B
(I A ! #)
X
% &:4 68
X
! & 4! & 68
72
X
X
4 68
& 4 $6 3 ( C$ (I$ 4[68 3$% J & & 3 3 , J A $% F !!, [ ( [ >! 3$% !A $% ! [ 8 ! #( $ & 3 8 !%, [ 3 ! @ !!% ! ! (I 46 ($% 0,0,2 $% <% < ,
G $%& 3 "" !">! B , & &:% $% ($% ( &3 B ( 3 ' 3 < , # 3 8 & $% 3 $!(,
3 & ! ($% & >, $%& $% ( B A* B ! !!
3$% ! &3 & 3 ,
3.3.3.
ILOG`s
JRules
Business-Rule-Management-System
-
Das
B ! "" !">!46 &: B
!8 3$% ( % ! ! 8 $% (8 ! ? 3 ! ; %!, > ? &: ! $% !
&:% , B !A $% 3 $ ( (I !! !( ! C , ! $ = 8 &:% 3 ! ! , % '<% O & ,
B 155 B " ! ( % >! B
B7" & ! :, B B
(
3 , @! B % (I & ! & [ ( ! % $%&& !! #(" $ 3 , A ["(I ( 3 8 3 ! ! G $% $% $% & $%,
$% && $% B A K ! & >!
!!
3 % ($% , 3 $% C $%<& $%8 3 (
3 ( :% ( (, 3 < :( C &: K & >! ,
7D
. &' /01
"" !">! )
' !3 % $% 3 $!( ! 3 $8 ( 8
3 ? 3 , ' !3 ( % " ( & $%
8 $% $% $% !A $%8 ! ! L $ $ & $M4$ 8 " 3 3 " 3 "( C6 ,
#( ' !3 #( ' !3 !A $% :(
#( 3 , ' #( <% $% ! ,
>
7/
&: $% , > 3 (
( &
, ( $% 3 &:
!& <,
>! ' !3 !& $% !& $% &8 $%
$% $% ( 3 $ &, $% 3 &: & 3 ,
J B, ( ! %! ( ,
>! ' !3 $ ? &:
3 ! $ &: $% & !,
B $% 4(( 0,-, B 6)
X
4 6
X
C$ 4 6
X
$ 4!! 6
7-
2 , 3
(% ! 8 J 8 8 $% $ 46 P( 4 6 [, @! $% ( ! ! ! ! % ( !
& , : $% $% $% > C ( ! ; A, $% $ 46 3 $ 3 , & J % ! 3 ! > C & J , G $% 3 46 :( , $% L M 3 , :( 3 C$ ( $%, #<% P( C$ 3 ! J [ J :( ,
C$ (% > ! $% J 8 G J 8 8 ! ! , B 3 J ! [ 3 , [ J 3 3 ! C B
(I > ! $% 3
! [ $%! ! #( $ $%! !!, % ' [ $% (I > , @! 3 7.
4C$ 6 ! 3 ,
$ %< (I 3 , (I ( (I ( 3 [ (, F A [8 #( $8 B
(I8 ( J !( , [
#( $ > ! $% G B
(I ( ,
4(( 0,., 6 & $% 3 $!( H
B, J ! "J H ! 3 3 ! '% $%4 ( 6,
4 B ' I ( $% $% J ! &: ? 3 $ ) $ I ! 4 68
4 68 4 $% 68 4 6,
I ! # $% % 3< ,
$ % G % ' <% $% 3 3A% $% 3 $% $%<&& , A A$% 3 8 A % &:8 ! & 8 A$% 3 ,
#<% ! 3 ! V05W A&&, ! ( > ! 3 , ; ! (& $% ! ( > (I 46 I8 3$% &: & 3 $% ! 3 %A B
J 8
% 8 [ , 3 ($% 0,0,2 ($% (, ! I (& $% < $% $% 3 ) L= M L M,
B
J ! (I$ & 3 ! J ,
J 8 % 8 4J "6? ( 3 % $% $% , A
! % &: 3 , ( ! 7+
%!, $% A ! & 3 3 J , 'C ( < !A $% ( 8 " ! ; & 4($% 0,0,0 V07W6,
! I 3<% 3 , $ 46 , : $% $% ; !A $% ! $% % !! & % ( ,
5 3 6 ! " C $% 3 A $% , B #(" , B
I
B " 3 , @< $% ( I $%
B , $% B A 3 $ % L$ ! &> & % !,,,M 7D 3 &, #( " B" ( 3 ! :( , ( & 3 " ,
& $% ! (, : $% &: )
X
& $% &: X
,, $% ' $% $% ?
X
$% % :
7D ) ! 05
;
#% ) 77
(
! 3 ! ! ! <% $% ! ! < $% ' ! & 4& 6, # ! & 8 ( 8 ; ! ! 8 $% !% < , A $% K $% & !! 3 ,
@< $% & ! ( 8 A ; & $% &: I & , % & ! 3 :( 8 "N? & ! < , < & $% &: ! 3 , > % & ( A $% & 3 ,
7
1 > ( % ! ! (, % $% J ! ! ; A $% ? &: &:% $% ($% (,
# I % * ! :( $% $% 3 8 (% G 3 $% $%4,, $% ! ( !! ! 3 8 3$%
VW ( !! # ( & 8 $,6, % $% 3$% ! G !A $% & 4F >6 ,
F & $% F > 4F6, F ! F $% J J ( & $% , A < $% ! 3 3 , $ 8 # & VW A$%,
01
! $% 4(( 0,., 6 (& $% ,
>!"G $% $% (: $% , 3 ( I
& $% A&&8 $% $% 3 , ;
! 3 '% ! ( 3 $% :& ,
% &C ( % $% $% ( , ' :(
4 > & 6 3 , 3 ( ! ,
3 A % :8 ( ' ( ' ! & 3 ,
# % A ! ! $% $% & 3 8 ' < $% < 3 , % &: $% G ,
& G ,, >8 ! =>$ ! !A $%, > & ( ( 3$% $% &
3 ! ( ! ! & (
3 !: ! & >! ( 3 ,
3 $% ' B ( , : $% 3<% &:% & ) J 8 ? ( 8 :( ( 8 & 4& 46^6 @ :$ , ( (% !% H8 ! $% $% 3 3 , ! 2
, ! ( &:% 3 $%)
X
8
= :( 4 8 & X
# 8 # X
8 J (I
6 I $ % 8 3 ! = 8 # ! > (I ! # ! >, ! ("= $
& G ! (I 3 # > (I , !A $%
J ( $% $% & $% %<, 8 % &: 3 ,
& !A $% & $% % &: 3 ,
$% 3 3$% & & % 3 &, !
! $% ,, $% & &$, & &:( 8 3
! ! ! , & ( % ) & 8 ' 38 (I " $ (I & , & & (I , 3 !! 3 & @< $%)
X
= X
07
X
$ $
& 3 , % &: 3 , # ! & 3<% 3 & 38 (I " $ & $% , ': I 3 & & ! )
X
% 3 & 3 X
3 & & 3 X
! &: &:% X
$%$% &: # & ! ! ! &:% $% ! B !! 3 , ! $% 3 ( $%, 3 % & $% ( 3 @ !!%< 3 $% ! [ < , * ! 3 $% $ 46 $ 46 ($% (, & & ' !3 4'68 ! O & ! $%
3 $ 8 3 $% <% ,
3.3.4. ILOG's - Business Rule Language
$%8 3 "">! :( $%8 ( < ;! !! < ! $%, $% '
$%<& " !C8 !! $%
& % !! !! 3 , B ( &C (8 ( > C8 ! $% ; %!& $%8 !! ( 8 & < A, ' $%! ! %! < $%
L $%M , B 3 % $% 3 $ $%8 ,
% $% & $% I " > C8 [ ; : $% &: 3 < $% > C $%8 3 , B
! 3 $ ( ! 3 $% ( % % (, ( $%:3A B, !( ! $% & B
& 'C ( <8 I !A $% $%<& $% $% &:% ,
O $% &
B
H & )
: B
:$ 8 B
& $ B
>,
" > C
00
& 3 )
[ )
B B
J )
!A $% J ,
; : [ > C 3 ,
(I" )
)
% $ >!)
!
)
I
" > C
I !A $% J $% (
3 ( G 3 B J ( ,
> ! $% )
: > ! $% $% = $ )
Q !% < &: ,
(I ( !! &: A = $ (I (% 3 ,
? ( 3 $% (I A $%
3 ,
! A 3 3 ,
: (I & ! $%
& 3 $% !% &: ,
3,
$ ? &: ( @ ! ! ; %!& $% % ( A8 ! <$% (I !< 3 , ! $% ( ! !< (( 3 , # $% (I &: $% (A 3 (I & !! 3 , < 3 I !A $%,
B (A B
(I ! & ! , B
J 3 ! (I 46 ,
& 3 $% J %< J [$ 02
(I$ 4[68 3$%
( 3 ,
! ! ! ! ! 3<% $%8 ! ! & ' !3 4'6 3 $ 3 , $% (I $% ( ! (I 46 % , H & ? &:)
X
$ 468 ! : $% $%> C
X
$% $ 468 3$% $% > C
% 3 % <$% $% 3 $ (
X
$% (8 3$% (
X
468 $% 3 3 , % I " > C,
X
3 $ $% ! O & & ' !3 4'6,
" >
H 46
$% ' ! 3 ,
& )--%
G $%"$% 3 ! O & $ 0D
!A $%8 ; %! & & ! , $ I : $% $% ; %! ! 3 , G $%& 3 ! > C 8 ,
&8&9:&9&;
BAL
Wenn
das abzurechnende Medium ist : Abfall
und nicht der Abrechnungsort : Rostock
Dann
Sende diese Nachricht :
"Die Abrechnung von Abfall ist nur in
Rostock gestattet!"
TRL
When
there is a [ ] Abrechnung [ ] [ called ?abrechnung]
[where]
such that Medium equals Abfall
and not Abrechnungsort equals Rostock
Then
modify [ ] ?abrechnung
so that Nachricht =
"Die Abrechnung von Abfall ist nur in
Rostock gestattet!"
IRL
when
{
?abrechnung1: Abrechnung(Medium equals "Abfall" ;
! (Ort equals "Rostock"));
}
then
{
modify ?abrechnung
{
Nachricht = "Die Abrechnung von Abfall ist nur in
Rostock erlaubt!";
}
}
0/
J $% , 3 $% :( (
3 , I (I & 8 (
B
(I (I8 3$% [ ( 3 ,
> C % ! ! 3 , & :( L = $ $% M ! @ && & B % %A % % , $% !% &: 3 $
!! $% <%,
3.3.5. Repository
B > % $% $ ! %A & 3 , (I 3 ! > I8
$ 8 8 $% (8 & 38 '$ 8 ! ( 8 ! ! (I $% , > (I !
(I$ ' $ > 4'6 7/ (I$ !
4 6 7- & !, $% $% > ! B
& $ 4B6 7., > (I
3 ( 8 3 $ &: : & , >
!& & O $% &)
X
$% 8 ? 3 X
$ (%
$% !
? 3 8 O >8 @ &&! !8 $ $%,
X
, " ' ! $% [ ( 4[6 ! $% 4[6 7+
X
3 ( ! ! & > $
(I ' 8
3
@ &&
7/ %)NN333, !, N$% >N $!N& ! N! &,%!
7- %)NN333, !, 7. %)NNI
,,$ !N $NI!
7+ %)NN333, !, N$% >N $!N& ! NC! ,%!
0-
1
> ( !! > (I ! > $% 3 , % & 8 3$% ! & $% 3 , #
A ! & $% & 3 3 , $%& ($% ($% ( ! (I > > $,
(I ( % ! , 3 & (
> $% (, $% ( ( $%
! < $% > C8 (I ,
(I J % ? &: & , J ! B
(I 8 [ $%! #(
$ % , (% A $% ! ! ( J 8 $% $% B
J [ $%! (( 3 8
3 4 $ 6,
! < 3 & 8 % &:
&% & ! %<, ! A 3 ! ! $%
( $% # % < , ! &
$% 3 8 3 $ $%
( , ! ( > ( % ! 8 ? (
! & ,
> !% I ( , I !!
0.
$ ! ( 8 % $% 3 , ! ( > $ $% I & 3 , !A $% ! !
G ! 3 $% $% I, I # ! > $% % &: $% 3 $% ,
$ %< !% !8 & 8 3 ,, $% ( & 3, ! $ A $% $% & 3 , $ A $ % ( ! ! , ! 3 $% ,
& 3 !!8 3$% Q & ( (! A,
& 3 !! <% $% ; & 4;6 !!, & 3 % !% , & ( ! ( 3 ! , & ( 8
' (& 3 , ! &:% & 3 3 # % % & (
:& ! ! $% & ( $% , &: & 3 (( 0,10, & 3 %, ! % $% ! & 3 &:
J >,
0+
< %
3 $% ' $, ( % &: ? 3 (< , ? 3 , !A $% 8 H ! $% ? 3 K :( @ % 3 & , ! ( , 8 A$% $% ( 3 8 3 ( ? ! $% $% < 3 , K ? A I ( 25
3 ,
B8 A $% ! ! ! $% < 3 , $% ( && ! , A $% < % $% $% 8 8 & $% &4 6 A$% ( 3 , !<* ( $% <, @< $% A ( !
3 8 % ' (
3 $% !% ? &: %,
;! ( * ! P( ( $ $% ( (& $4F >
$6 &: >, ( 3 8 "& 8
"N? & ! ! ' , (& ! J 8 J ( % 8 & 8 (& , A $% F > ! 3 &: < G >
( > $% 3 , F 3 ! F > 4F6 & , F 8 ( , # % F : $% $%> C &: ; & 3 ,
3 , O B 8
> O > > O > $ ! ! I ? < & ! ! O > 3 3 ,
? < &:% 8 3 ! $% ,
': % $ ? &:, 3 3 I
$% 3 8 ! I $% ,
# ( $ ' < $% 3
> ( % & , ! ! ! 3 ( ! $%
< 3 , B $ (3, ! 3 8 3
!% 3 ( ,
!A $% ! !
$ 3 3 ! >
3.3.6. Zusammenfassung
B; 3 B
! $% ! $% ? ( ,
A & ( ( (I 3 3 , 3 ! O & B; $ ! & ! B
= !3 , = ! I! J , J 3 LJ CM , !& ( ! ( $% 8 !
( $% (I ( 3 8 8 !A $% &:% ( % %& 8 &:% , B! J C A & % &: 3 , ! > ! $% & # ( !A $%,
$%<& 3 ! > (8 3 $% $%<&& 8 > 3 $ ( & 3 A, > &C ( 3 ( 8 ! $%<& ( & ! 8
3 , , 8
: !
3 & $% 3 21
$%<& "$% ( J & 8 ! 3 3 A, > 8 $%<& & 3 , G
A :( ? !$% ! ! < ? 3 $% & $% 3 8 K ! $%<& ( & $% 3 A, &: ! :( ! 8 ! ! @ &&( $% & & 3 ,
3.4. Mandarax und Oryx
3.4.1. Allgemein
C $ I ; : ( 3, & B
$% ( C ' !3 & 8
? 3 (& # ( , ( & $3 " , 3 A $% F !!8 3 ,, ( 8
B
(I8 B
8 #( $8 $, C ( !& $%
( %
& < ' ! , $ ' !3 ( % & !! & $ , ( $% 8 ' &A & ( 3 8
%
&C ()
; & %!8 =%$ %! !% A & 3 , ; & %! & !! ( % & ! %! ( 05, ( # ( :( [ & , O 3 ' ! ( $% $% 3 $ 3 :, C ! "( ? 5,. 5,.1 < !A $%, 01
>C 3 C , & $% ; & $ ! C # ( 4 3 ( 6, 3 (% 3 , @! L M 3 ! >C , 3 ( $% ( $%, & ! 3 A
O ! 07 3 $ B $% % 3 ,
>C
&
? C8 ( 8 3 ? 1,+, #<% ? & ( ( # 3 $
C 3 , ? C ! @ 4 75506 ? 7,0, 3 $ 3 $% $% & $% ( , # % $% 3 8 % 3 $% !& $% ! !
$ I ? &: , ? % & 3 ! J ! !
3 $ B $%, A* $%& < >C 3 $ % ! B $% &:% C ! L% C M !!,
3.4.2. Mandarax
C I 3 1+++ ( & % ! 3 3 &
$%, C 3 $% !! $% !! < 05 %! ( 01%)NN333,I&7557,N ( $,%!
07 %)NN333,I( $%,
27
B
( 8 ! 3 8 ! 4 >6 $% $% % ! !!$ !! 3 , C 8 B
!! , 3 (I ? $3 4:$3< 6 (8 3$% <% $% %! ,
:$3< $% $% 8 ! ( !
4@ 6 3 $% & $% 3 , !:
& 3 8 & 3:$% $% * , ( & (
:$3< & ! $% %& % ? ( , 3 $% ? L( $3 $% M %8 & ! (& 3 8 A (! (A 3 4 ,
VO %+5W , +2&6
C B
< 8 $% 8 ? 3 ? ( , 3 $%& < , ! & 4($% 0,2,7 V20W6 % $% ! ( >! 3 ! = !
% ! >! % A,
=/
If the value of all transactions of a customer
is more than 100 $ in one year
then he qualifies for a discount of 10%.
&( 3 $% $% ! (% , ! ($% 7,7,0 < 3 , <! J ' 4& $6 3 !
(% < !, < ! ( L ! % M LQ & & M, ! L $ ! M L $ & 15\M, ( $% !)
X
,, L $ & 15\M !,
X
L $ ! M X
L
( !,
& $ & $ ! M !C !,
! < (I! (I < $% % 3 $% !, J ! (I , # ( ( ! $% (I 3 , ! $% 8 ! &: I = ! 3 !:, J !C !
% $% 3 ' , ' L & $ ! $ !M 8 !
3 !4
( !)L
20
$ ! M8 !)L > M6 ( ,
;! ,, C & ! 8 (I! , ! J L= ! M L $ M 3 %A % % , J = ! ,, ! % L 4 ! %6M !! , % & !! :( $% @ ! ,
&: 8 ' ! 3 ! ' $ > , = ! 3 ! & ! = )
( !
( />6 :
LogicFactory factory = LogicFactory.getDefaultFactory();
Term term1 = factory.createVariableTerm("a customer",
Customer.class);
Discount discount = new Discount(5);
Term term2 = factory.createConstantTerm(discount);
Term[] terms = {terms1,term2};
Class[] predicateStructure = {Customer.class,Discount.class};
Predicate predicate = new SimplePredicate("gets discount",
predicateStructure);
Fact fact = factory.createFact(predicate,terms);
! (& $% B
org.mandarax.example.crm C
( , ': ! 3$ ! 8 ( &: $% !&%3 , & $% ; & $ >C4($% 0,2,06
3 3 ,
3 C = "(I4J 3 6 3 , & $ org.mandarax.kernel.KowledgeBase, $% J 3( % (& 3 , & 4F >6 J 3( ! 3 & %,
+ />6 < ?% public Discount getDiscount (Customer customer) {
//Erzeuge Anfrage(Parameter sind die Klassen des Objektmodells)
Class[] parameters = {Customer.class, Discount.class};
Predicate getsDiscount = new SimplePredicate ("get discount",
parameters);
Fact query = factorySupport.fact (getsDiscount, customer,
"a discount");
// Anfrage stellen
InferenceEngine ie = new ResolutionInferenceEngine ();
KnowledgeBase kb = ...; // hier sind die Regeln gespeichert
Result result = ie.query (query, kb);
22
Replacement replaced = result.getReplacements ()[0];
Discount discount4Customer =
(Discount) replaced.replacement.getObject ();
return discount4Customer;
}
F > J 3( ' ! ? ( ( % , 3 4 6 3 ? ( $% (I , %! &: 5 !! , & $ ! $ org.mandarax.kernel.InferenceEngine, & $ 3 F > J 3( :( ( & org.mandarax.kernel.ResultSet :$, & < $% J Derivation8 3$% ( ( !8 &:% % 8 < , ( ( ! 3 ! % getProof();
:$(,
& $ ( % &:& & $ !! , & $ J !!
( $ & $ (, &:
!! 3 , O $% 3 $% !! % ' ,
<! / #
< & $ G
G
G
& $ 7
d
G
G
& $ 0
d
d
G
& $ 2
d
d
d
: =
/>6 <! = ( !! 3 3 8 3 & $ 2 :, = ! ? $% 3 3 , $% !! % 3 3 8 = ( ( !4
6 ($% 8 3 && &:% , &:& & & $ , & $% # J ( !! (, &: : & ( , ( & ( %!)
X
$ $> 3 ( ! <$% @ 4 6 4& & $ $>6
X
; & $ %! 4& ( ; & $ %!6
2D
X
=%$ =%$ $%&:% 6
%! 4& G
=%$ %! " 3 ! '< $% 3 ! & , # (% 8 $% & A8 ? =%$ %! (, %! ! =%$ ! ! %! $% 8 ( % && ! &$ 4 .5N756, @< $% A $% ? 3 9.5+"? ( $% < 3 , 3 ( ! C ! % $% 8 & $ 3 8 ! % , # % ( ( $% $% 3 (( $%,
$% !! 3 ' !! J 4$ 6
( $%, ! ( >! ( = $ J !
< # , C ( J !4$ 6 J , 3 $% C, # ( 3 J !8 3$% J ($% (, ! $% ( % ! 8
$% & C & 8 $%
J !
( 8 3$% & & J 3( J , =% $% &: J ! , ! O & & J ! ! $% J , &: > ! $% ' ( (& , ( %< # ( J !8 ( ! &:% % clauses F"& & ( ,
! & & nextClause(); 00 3 $% &, @ ? $% $%
3 &: ,, ' &: ( ( J $%8 &: ' L% & $ & $ ! > ! % 155]M 3 % , # ! % 8 ! ;! ! ! B % A* 155] 3 8 3 ! $% ' ( , @! % J : $% % % ;! , 3 ' L% & $ & $ !
: > ! % 155]M
( ,
$% F" < F"= , F < ( ( 4 ? 36 4= !6 ( ? 3, F < %< & J ! )
X
Q4 ( %<,
I
C,Q, $6 & ! ? ( X
G !,
X
F" !4Q >6, F > % #O"J , F > % @ 4 ! % >6 ($% (,
X
> , > ($% ( 3 # B
>
(( 3 ,
>
J &#&; &. , # > ( 8 3 $% >
! B= (
(& 4= != G !46 6,
00 $% next(); java.util.Iterator
2/
? $%) $% B= ( 02 : ' e
F < !! J &#&; &<+ , F
= 4 ,! C,Q,F= 6 !%
3 F < 8 3$%
< $% #O"J % , # ( F"' 8 & F"& ( , 8 ! ! 4,, #O"J 6 (I ! 4 36 ( 3 , '% 3 !
3 !% < ! :$ & 3 , F
' J &#&; &<= !! , % ( & J ! )
X
Q 4 % $ " F" < V2/W6
X
G !,
X
F > , F > ( % !% % 4Y6 &: ?
4 % ) F"' V2-W6,
(
': J 3 (I 4 &#&; &*> 6 (, ! ' 3 = ! 3,
. />6 0@&A!
String[] struct = {String.class};
DataSource dataSource = ..;
SQLFunction function = new SQLFunction();
function.setDataSource(dataSource);
function.setQuery(
"SELECT COUNT(*) FROM CUSTOMER_TRANSACTIONS WHERE CUSTOMER=?"
);
function.setObjectRelationalMapping(new OneColumnMapping
(Integer.class)
);
function.setName("number of all transactions of a customer");
function.setStructure(struct);
3 : $% ' C B
% ' ! C 3 3 A, B'$ %! (I4 !6 & (I :$, # ! #*4#6 % &
! L M 3 8 % ' C 3
( ! ) f 8Cg ( :$, & $% C J &#& & &?= !! , B'$ 3 ! B
% , <% $% # A B
% ( 3 ! < 02 ( ,, (! ! ! >F (
,I,!!,!>Q,
,
2-
& # % % :&, # ! % ; 468 3$% >%& &*> !! 8 ( $% $ $% 3 >3& ; 4>@6 3 ' L (I1b (I7M
, & $%)
( J L M ! % A 46 3 L &
[,G !46bh i % [ 3 > ! M, # & J 3( 3 L# (I$ h i > ! YM 3 L[M ! 4 ! ' L M6 $ >3& ; 4>@6 3 ,
# ( L (I1M % + & A 46 $% L (I1M ! L M, & $ $% (I & L M :$,
3 $% ( ! &( # ( J =, ' $ ! = , (A ( 3 < & ! :( ( J 8 ! ' ( , % ,, ( & $ ! % 5# 8 " 18 7
0 :$ & , ! & ' $4 &6 % & 43B#$ 68 3 ( 1 _[ &: &5C.7A" < %, ! % L1M ? ( ! ! > L[M8 & 3 ' )
1_7^1_0 :$, ? 3 ! 3 ? () & 43B#$ 68 3 ' 1_7^1_0 7 _0 :$ & ,
C ( > $ % $%% & ' < , ( % & < &: ( %! &: C !, < ' & J )
X
,! C, (,! %, %! $
X
,! C, (,! %, ( %! $
X
,! C, (,C, %! $
X
,! C, (, , %! $
@! $% # ( C $% ( ? &:,
# ( 3 ! ["' ! ( $% , C % !% $ !
$% , [J" $ , $ ( B
( >, ( > $% BJH, & < $% &#&#&-% & $ ($% (, ( % D( 46
% 8 ! B ! 3 J 3 :$ & ,
@< $% ( [J % %< ! $% ( # ( ! !8 ; , ; : &: 5,.
5,.1 ! $ &#&#& % , J 59. 59.91 , ( A ( $% ' C (( , : ,, ' >e 3 $ B
$% ( ! !! % && < ? ( <& , ; $% 3 $% ( ( 8
5,.,1 ( F :,
2.
3.4.3. Oryx 2 - Knowledge Editor/Repository
3.4.3.1. Allgemein
>C B 7 38 (% 3 O ( , 3 $% $%
O 3 $ ( 3 % (, >C ( ! &&
["( ' ! 3 C [J 1,5 !!,
@! J 3 % $% $% 8 ! C ( 3 , 8 ' 3 $%< # %& ,
&: >C 0D5 ] $ = &: 155 ; 7555 ],
3 $ B $% (& &: -5 ] ( , ': ' $%3$ ( ! 8 &: ( 3 3 ,
> # ( , > %< $% ( < 8 ' 8 ( $%: ! # ( ,
>C ? 7,1 3 J &:% , I "' $% !
/plugins ? $% (& , % $% ! >C & ? &:, 3 ! = 8 % ( !: $% $% ! = %
(& , % ! ' 8 J & < L $ % M
' , ! % G A $% 3 % $ = < , @! ! I "' ! /plugins ? $% A$% 3 , ! & $
com.jbdietrich.oryx.gui.plugin.Plugin !! , & $ & % )
! 0 #8;
& G ! ! 0 8;
& ? ! 0 B&8;
; ! 0 #8;
& G ! ! 0 3!8;
& $% ( 2+
! 08)*! ";
@ 8 ( J ! (3 ,
! 0 "8;
& %
3 3 ! - "80 ";
%
! !0 !-8)*! "; "%
>!
& &: O :$,
C $% & ( ! $%& ( &&:% )
#
"
>C 3 , !"
B
plugins/joi.zip
& % $% ( &<$%
$% 3 4B68 ! $% B,,
$% (I
4 ( $%
6
? 3
plugins/pluginviewer.jar
B,, $%
& $% J ! !
%
,
2B
= & plugins/log4jconfig.jar
B,, $%
& $% J ! J & 4 2I6 ,
' plugins/lfconfig.jar
= & B,, $%
J & '
,
>! plugins/sysinfo.jar
B,, $%
>! $% &
3 ,, BJ
? ,
: )1> 3.4.3.2. Knowledge Editor
J 3 D5
3 O ( >C 7 3, !
A # ( 8 &8 (& > 3 ,
( )1>
?% @! ' % J 3 # ? &:, ! & & $% # !A $% ' # ( &:, A $% ' 3 8 % ! > 4($% 0,2,0,06 & 3 , # ! > Q ( C A $% ' ( ! ! J 3 # # ( & !! 3 , 3 ( ( $% ' $% 8 %A F" !,
(3 % # ( ! 3 3 !! (& 3 3 >C 7 % $ F > 8 ( 3 8 & & # ( (& , ( (& A & J % > 3 ,
;! P( ( $ * # ( $% >C $% , $% ! O &
' , $% <% $% ? 3 ( ,
# J 3( 3 8
ExtendedKnowledgeBase ! %& &, % ' 8 (
:& 3 , ! ( J 3 & !<* ! ! & $
C I, < % $%& $% & ,
# ( A ! C 3 , % $% (
C ? &: $% Q ,
!
3.4.3.3. Repository
3 O ! >C >, J 3 (I
4 < ' 6 & ! % $% & 3 ,
#<% J 3( ! 3 ! ! C 3 8 3 > I! ( !! & % ( F % ,
D1
+ )1>
1
' < A ! > 3 , ' (I (I, ' % ( G ! 8 !
> :$( 3 ($% (, 3 $% > ' :)
X
B
< " & B
& B
% X
C ( > " ! C 4 6
X
( ' " ?
X
% " > & (
( (
>
! > & &: ! 8
! 4LYM6
' 8 $% $% J < % 3 $% (I, < % ( G ! 8 (I( % ($% (, ? $% < "> 3 :)
X
D7
F < " & ! F F >
X
B
X
& $% < " G ! & X
C (
( >,
X
< " & B
> < "
% " & (
4 8 & 6 :$,
! ;
& (
>
< 8 $% $% J < C
( 4F6 < & F F > ! ( ( ! , ! ! ( < ! ( :&, & $% & &: ( < !: & 3 )
X
G ! < X
F $ !
X
$
X
> $ ($% ( 3 ! = $ ( B=
&( , C $% ( 3 , :
8 ( ( = % & 3 % ! ? &:, ! % ( $% ? &:, # ( 3<% 3 ; ! 8 3$% 3 !, > $% $% & &: ( ( A & 3 )
X
G ! $
X
= $ 4;6 ( X
B=" (
X
G ! N 3 X
3 % ( G ! 3 ( I ? ( (& 3 A $% # BG F 4,, 8 8 B8 $6 (,
& !A $% (I 3 8 ' ! : $% $% $% C , ? A* ( 3 % G !
&: <! $% ' < 8 ( $% : $% $% $% <
! >C"J 3 ,
3.5. Fazit
D0
! ? $% ( >! 3 & B ( , 3 $% ! &: 8 B % &C ( & : & 3 3 , # J 3 $% ( &: 8 B ( &: > 3 3 )
X
$%! !
X
( X
(I! X
> C$%$ &: X
!! &3 X
;!& $% !
X
& ! $ 0D
3 ! 4O &
8 #(! 6
J 3 >C $%$% (3, $% !, ! 8 $% % $% C ,
! & ! J 3 ?>E
> ! B & ,
0D %)NN333,! " $% ,$ !NI" j ,
D2
? N!507.5,%!^ % , + % % 5
Kapitel 4. Implementation
4.1. Die Standardapplikation kVASy®
?>E
&3 A
; %!( $%
%! G ! ! ( %!3 & ! >! , ?>E " & $%
)
)
!A $% ? 3 $% ' $)
( $% 3 ' 8 ! ($%% $% $% $%
$%<& $%< ,
$)
(
$%<&& J ! ?>E " ' ! ! ( $%:( &
3 ! ( " "( ( " "$ ! !
; ! <% = " = ! % !,
01C / D!"
&3 ( & ! $ 3 $" ( $% , $/
( # ! & ; %! 3
$%8 && ! 8 !, G( ! 3 $ ' ! 38 ( 8
& !
; %! 3 & $% ( &<$%
DD
!A $%, ' ! #d#d "( &<$% $% !& ! 8 :8 NF" ( % ' !"(I" ( %, :
3 $ ! $% $% ( & A$ & ! , > A & & $% (I $% & < 8
% 3 , (( 2,7, ?>E " J &!< $%
J > $% ' ! ?>E 8 ! ! $ ' ! 3 $ 3 ,
(
01C ?<!" ?
$ ' ! / ( % ! B
! 8 B
! !A $% ' ! 3 $ NF ! @ && & B , B
! * &: 3 $ ! $%& ($% ($% ( >,
4.2. Prototyp
4.2.1. Voraussetzungen
D/
> & $% $ ' !8 $% ' ! LJ &!< $%
J M ! " ?>E %, & $% ' ! & ( !! 3 )
(
1 Wenn das abzurechnende Medium Abwasser ist
und der Abrechnungsort nicht Rostock ist
Dann sende die Nachricht:
"Abwasser kann nur in Rostock abgerechnet werden!"
Wenn der abzurechnende Tarif Abfallentsorgung ist
und der Abrechnungsort nicht Rostock ist
Dann sende die Nachricht:
"Die Abfallentsorgung existiert nur in Rostock!"
3 &3 ?>E !C $ ( 8 $% !% 7555 ( !!, ' ! LJ &!< $% J M ( $ ,
1D5 (, ': > 3 ( O $% & $%8 ? 3 ! $% ( (I ( 3 8 & ,, 3
& , ': > 3 & ( (I ()
X
J!!
X
J !
X
!
X
( $% X
&
3 $ 3 > ! ( $% ! ! (>! # 3 7555,
3 $!( $ ' ! / $% +8 & $ ( . &, ':
B 3 B 3, B $ &:
> 3
:( ! 8
(
&:
A* I 3 $!( !&%3 ,
;! ?>E 3 B 2,D 3, B (A (I ! ! , ': > 3 B ! (8 (I $" ( 8 ?>E 8 , ,,
( (I4($% 2,7,1 VD-W6 3 ! B
(I , ( ( $% $% ( ( (I, @ ? $% $%
(( 2,0, ( $%,I
! ;" !! % $% , D-
F$ (& $% ! % =, + < ( !" *-
': ( $% 3 A $% , @! ! ! & = , ( ( < $%
; $% , & = & P( :& (
( $% ( 3 , # ( & & ( 3 3 , % $% 3 & B ! 8 B
! &: ! ? ( ( 3 3 ,
@< $% !: 46" 46"% ! F" ! 3 3 8 & $% (I ( &, ! " ! J $% & $% , = $% & $% $"' ! !! :& 3 (
( (
3 ,,
3 $ > ( < :&, $% $%"B ( ( & , = 3 :& ( I K $%&:% ,
4.2.2. Clientseitige Integration
# $% 3<% (A ! (I! ! , ! ' J Abrechnung, B ! I ( = % J D.
Abrechnung I $% & , G ! J (I ! , ! & ! ( > I $% $% $ & (I , G ! $% $% $ , ;! ! ! (I , A&& ! = , % ,
L M ! J 3<% 3<% J G ! $%, 3 L (M 4(( 2,2, = " (6
J ( & ,
( ( = > G ! J ( (, L M 3 & 3 ! 3 , L? (M, # O<$% &%8 ! $% ? ( $% 3 , # (( % &% O<$% ( ? (
LG $% $%M8 L M 8 L !M8 L &M, 3 3 &: ' ! (A 8 3 (
% 3 % ( % (8 ! $%
$% , % 3 4(( 2,D, = " 6 L M ! ,
( + = )
D+
L M 3 % ! , @! G $% $% ( % % addInfo(String arg), % 3 ? ( LG $% $%M :( (, % 4compareMedium(BalMedium
arg)8 compareOrt(BalOrt arg)8 compareTarif(BalTarif arg)6 3 :( J , ? J A ! % &: 3 %
! B ! % , (( 2,/, (I$ " ? J % 3 J , J 3 38 ! (
' ! " 3": ? &: 8 & 8 & % , ! 8 ! ! J ! % &:, ! %< $% ! !8 ! " 3":
3 ,
/5
( . )*! / ? G A $ & ! 3 8 3 ($% 2,7,1 VD-W % , ;! $ ' ! 3 $% (A B ? &: , %<
! ! ! C 4' "`C ' "`"`6, /1
B Regelmaschine.java (& $% ! % =, + < , J 3 :( ( # ! > 3 J ( $% :( (, 3 $% % ($8 $% & % ,
public static int processAbrechnung(Abrechnung a)
{
if (handler == null)
{
System.err.println("generateContext aufgerufen" );
handler = new RegelMaschine("Abrechnung.irl");
}
context.insert(a);
int i = context.fireAllRules();
context.retractAll();
return i;
}
(
(1)
(2)
(3)
(4)
% processAbrechnung(Abrechnung a) 3 J ( $%
:( (,
J ! $% 3 :( (,
J ( $% 3 ! # ! > % &:,
! $% 3 3 & ,
G ? &: $ $% &&, B ! O & !
$ ' ! > 3 , ' ! 3 ! $%" 4% , * = &6 8 J & 8 BJ
! ( ( 3 , G $% ! ' ! 3 >& !4(( 2,-, >& !6 ! ( $" ! > " ,
/7
( 2
1<
# ' ! &:% 8 ! ! ! $ A2 $% < $%, A4 3 $% (< ! A 7 A ( $% 3 , ': P( :& 3 J>"= !! " , @
!: J Abrechnung Regelmaschine ! ! B
! 4 !!"`B "J ! ,,,6 ! 3 , 3 NF 0/ !! , 3 $% $ A 7 A, 3 $% J>"= !! " 4($% 2,7,7 V/0W6
(& $% :& (
( $% 3 ,
declare
lv_fire
number;
lv_obj_a ORA_JAVA.JOBJECT;
lv_error ORA_JAVA.JEXCEPTION;
al_id
Alert;
al_button Number;
begin
lv_obj_a:= abrechnung.new(:sweiss_rule.kund_kunden_nr,
:sweiss_rule.kund_name1,
:sweiss_rule.ort_o_name,
:sweiss_rule.abzu_bezeichnung,
:sweiss_rule.prei_bezeichnung);
lv_fire:= REGELMASCHINE.processAbrechnung(lv_obj_a);
message('Fire? :'||lv_fire);
if lv_fire > 0
then
al_id := Find_Alert('Alert');
Set_Alert_Property(al_id,
ALERT_MESSAGE_TEXT ,
abrechnung.getNachricht(lv_obj_a));
al_button := Show_Alert(al_id);
end if;
(1)
(2)
(3)
exception
when ORA_JAVA.EXCEPTION_THROWN then
lv_error:= ORA_JAVA.LAST_EXCEPTION;
ORA_JAVA.CLEAR_EXCEPTION;
when ORA_JAVA.JAVA_ERROR then
message(ORA_JAVA.LAST_ERROR);
end;
O 3 J Abrechnung ! ' ! ,
% processAbrechnung(lv_obj_a) 3 B
(I ( $%
:( (, % :( :& ( 3 :$,
OA% # ( & ( (3, 3 & 3 ,
:$ (3 % processAbrechnung(lv_obj_a) 3 :&8 (
& 3 3 I 8 G $% $% & ! # ! ( 3 , ( 3 :( L M ,
0/V' 1+++W
/0
> &:% 3 , A2 ! $% < # L(3 M ' ! (< $% ! A4, ( %< ! & )
J!!
155557
J !
# 8 J ( $% O !( " !
(3 &
* # N #
:$ ! A 7 3 J>"= !! " ! $% :( ( ( & ,
, 3 Wenn das abzurechnende Medium ist: Abwasser ist
und der Abrechnungsort ist nicht: Rostock
Dann sende die Nachricht:
"Abwasser kann nur in Rostock abgerechnet werden!"
G $% $% 3 # !4(( 2,., # !6 (,
( 4 E # < % &:8 K & J &,
! ( A I 3 ,
4.2.3. Weiterentwicklung
Integration
der
clientseitigen
# $% ?>E ! 3 8 3< ? = 3 $, ?>E ( % ' !, ': I ' !8
3 3: 8 !: ! B , & ( /2
= :( %!, ' ! % C& 8 =%$( C8 ( $,,, A 3 & B > !3 3 )
X
C& X
=%$( C (
X
( ( 8 @ (I 3 X
$,,,
': G ! ? ( ! ! ! ' ! 3, ': J !
! ' ! ! %!, ': I ' ! ! $% 3 J 3 ,
J ? &: ( > ,, J $ ! 3 , $% = :( %!, :&8 ( $% B ! $% $ ' !
! , # $% ! L '*M 3 , G $% ! ! J ! = &: J>"= !! " (& , ! > ! 3 , !: J ! 3 , $% 3 8 3 & ! ,
4.2.4. Serverseitige Integration
': > 4(( 2,+, "
= $ 6
3 3 , ! ( B
(I! , & ! ! 3 ! ; H
0- $%,
0- , B 2,D $! ; " ( B
/D
( 5 3: =!
': > 3 ( L9( M8 ( ( %<8
3<%, J 0. A 3 ( $ ! 3 , & % 3 ! & $% (8 3 ( C ,
when
{
?boe_debitorenv: Boe_debitorenv();
}
then
{
System.out.println(?boe_debitorenv + "gefunden");
}
! $% 8 3 ! (% L3 M4= 6 ( !A$%8 ! (% ( ( &
(& , $% :( !! = J ,
0.J & ! ( ( = % //
Kapitel 5.
Ausblick
Zusammenfassung
und
5.1. Zusammenfassung
@ ( 3 8 3 & $%<& !! , 3 !A $% $% , 3 $%<& 8 & 3 ,
( 3 <$% & ( , 3 &8
> $% ! $% < , $%
3 ! & 8 3 3 A, !
@ !!% $% % 8 ( ( C!"( $% 3 $ $% (! &3 ,
G $%& 3 ! >! ( 3 % !! $ &&, ( B4 !! 6 C4 $6 3 &:% $% ($% (, (
3 &8 C @ $% $% &: @3$8 3 & ( & ! 8 3 , C (& $% ( 3 $, #<% ( % $% C & ? 1,+ ? 0,5
3 $, # $% $ ! % $% ( &<$% >C 3 3 $8 % : !! 3 , @! C $% :,
': ? 3 &: 3 B 3<%, 3 ($% ( 3 ! O & (I! : $%
$% 3 3 A, % > 3 & 3 $% <,
? )
% $% ? " G $% , ' 3 $% X
K !: $% & ! = ( 3 , $% &3 "N= ! "@>,
X
! C & A* G $% )
X
X
% $% $% $% &
& % >! L M & /-
$% ! $%3 3 $% & $% ;!& ! "& I ; %!
< & (3< 8 ! :& #(3 (&<% $% ,
?
% ! ( & $% (( $%<& ">!, 3 % & 'C ( < :(
3 K $% !A $% $% ! 46
( , 0+ ( 15"1D\ L &
!M,
( A ( 3 ! $% ' < 3 8 &: 3 ; $%
& && ' $% <% $%)
X
& %
% Y
$%" ! @> &:% , # X
& ! $ 3 * $% , # $% >! !! ! !% ! ! >!
% Y
X
3 ? $%
&
!
% "" !">! ! ( 8 3 3 $%
, ! @ !!% $% J "G3 > 3 ,
5.2. Ausblick
3 ( ! @ !!% ! ( $%, ;! 3 % $%A& A8 !: ! ( $% 3 , ; % $%
& ; %! 3 3 ,
&: @ $%! ' !3 258 B % , @ $%! ( .5 B % ( 3 $ % , (
3 ; %! % $% $% $% ! ( $%)
X
# ! C ; %! :( % 8 ,%, 3 Y
X
# ! 3 ! ; %! ( 8 ,%, 3 3 $% 8 8
$,Y
X
# 3 $% $%Y
X
# 3 *Y
X
#
3 0+ % V
7550W
25%)NN333, & ,$ !
/.
$%<& < & ( ; %! ! $%<& < &:% 8 ,%, $% 3$% @ 3 < &:% Y 3 %
$% & $% !& $% ' 8 ( , ( ! J6 (3 $ 3 ,
X
< % ( * % ( ; %! 4,
# &: &:% < < Y A $% & ( 3 8 ( $% ( 3 $% ! &:% ! & (,
; %! $% ! , $% 8 !A $% ; %! & & 8 ! $% $% @ & 21
% ! 8 ! & , ? 8 $% ( ($% (
@ & !! ! % 8 J $%<& $%
( &&, ! % $% ( ! ' , $% % # ! & '< 3 38 ! &: ; %! C % , 3 ? 3< J !
>! ! ! ! >!,
27 !! ! J 3 $% ( 4 " " !6, J !( ( $% !A $%
; %! % $%<& ! %A% '<% 8 & < ( $% ,
;! # $% %
%(8 $% !:% ! % $% 20 3 $, $% ; %!8 $% = $% % (8 ! $ & %A 8 $% ! %! % L
& ! M46 $%,
$% (I &% &3 3 $ * ' $% , 3: &3 3 $ 3 ' $% (8 &3 3< $% !% ! C ! 3 & 3 % $% $% , $% K ( 3 ; %!
$% &C ( , G $% %! 3 $ $% <% $% ! O> &3 3 $ 3 (I , $% * ; %! 3 $ & !: 22 % ,
21%)NN333, ,$%N+555N ,%!
27 % V
7550W
20%)NNI$, NNI N Y b+2
22 % V
7550W
/+
-5
Anhang A. RuleML-DTD Version 0.8
<!-- An XML DTD for a Datalog RuleML Sublanguage:
Monolith Version -->
<!-- Last Modification: 2001-07-07 -->
<!-- ELEMENT Declarations -->
<!-- 'rulebase' root element uses 'imp' rules and 'fact'
assertions as top-level elements -->
<!ELEMENT rulebase ((imp | fact)*)>
<!-- 'imp' rules are usable as general implications on the
top-level -->
<!-- 'imp' element uses a conclusion role _head followed by a
premise role _body, or equivalently -->
<!-- (since roles constitute unordered elements), uses a premise
role _body followed by a conclusion role _head -->
<!-- "<imp>_head _body</imp>" stands for "_head is implied
by _body", i.e., "_head is true is implied by _body is true",
or equivalently, -->
<!-- "<imp>_body _head</imp>" stands for "_body implies
_head", i.e., "_body is true implies _head is true" -->
<!ELEMENT imp ((_head, _body) | (_body, _head))>
<!-- 'fact' assertions are usable as degenerate rules on the
top-level -->
<!-- 'fact' element uses just a conclusion role _head -->
<!-- "<fact>_head</fact>" stands for "_head is implied
by true", i.e., "_head is true" -->
<!ELEMENT fact (_head) >
<!-- _head role is usable
assertions -->
<!-- _body role is usable
<!-- _head uses an atomic
<!-- _body uses an atomic
within 'imp' rules and 'fact'
within 'imp' rules -->
formula -->
formula or an 'and' -->
<!ELEMENT _head (atom)>
<!ELEMENT _body (atom | and)>
<!-<!-<!-<!--
an 'and' is usable within _body's -->
'and' uses zero or more atomic formulas -->
"<and>atom</and>" is equivalent to "atom"-->
"<and></and>" is equivalent to "true"-->
<!ELEMENT and (atom*)>
<!-- atomic formulas are usable within _head's,
_body's, and 'and's -->
<!-- atom element uses an: -->
<!-- _opr ("operator of relations") role followed by
a sequence of zero or more arguments, or similarly -->
<!-- (since roles constitute unordered elements, and
-1
the zero-argument case must not cause ambiguity), -->
<!-- a sequence of one or more arguments followed by
an _opr role -->
<!-- the arguments may be ind(ividual)s or var(iable)s -->
<!ELEMENT atom ((_opr, (ind | var)*) | ((ind | var)+, _opr))>
<!-- _opr is usable within atoms -->
<!-- _opr uses rel(ation) symbol -->
<!ELEMENT _opr (rel)>
<!-- there is one kind of fixed argument -->
<!-- individual constant, as in predicate logic -->
<!ELEMENT ind
(#PCDATA)>
<!-- there is one kind of variable argument -->
<!-- logical variable, as in logic programming -->
<!ELEMENT var
(#PCDATA)>
<!-- there are only fixed (first-order) relations -->
<!-- relation or predicate symbol -->
<!ELEMENT rel
-7
(#PCDATA)>
Anhang B. Performancevergleich von
Rules Engine
!
=1
. F
F
.( F
=
G
5,2
1,D
D7
=k7
5,51D
5,0/
7,-D
5,7//
7,.-D
0.,12
7
>!
B /,5
(
5,7
5,.
-,0
B;
5,5+0
5,20-
/,5D
B;"
5,5+0
5,7
5,/2
B
5,12
5,01
1,/2
cc
O >
5,50
5,02
0,2/
;
5,501
5,11
7,-1
: / :
% ! $ , % % 3 % # 3 G 2,5 8 7D/ 8
( 4B8 B B6 3 -D5 O ; =" $ , 3
! BJ 1,0,5,
> 8 % >! 3 3 -D5 O ! 0 $ , % B
1555 3 % .8 1 8
3 % $ , ( % >! %
-0
-2
Anhang C. Prototyp - Quellcode
Abrechnung.java
public class Abrechnung
{
public String KundenNummer;
public String KundenName;
public String Ort;
public String Medium;
public String Tarif;
public String Nachricht = "";
public Abrechnung(String knr, String kn,String o,String m, String t)
{
KundenNummer = knr;
KundenName
= kn;
Ort
= o;
Medium
= m;
Tarif
= t;
}
public void addInfo(String text)
{
this.Nachricht += text+"\n";
}
}
Regelmaschine.java
import
import
import
import
import
import
import
import
import
java.io.*;
java.util.*;
ilog.rules.engine.*;
ilog.rules.tools.*;
ilog.rules.util.logging.*;
ilog.rules.repository.brm.*;
ilog.rules.repository.model.*;
ilog.rules.repository.facility.*;
ilog.rules.util.IlrOperationException;
public class RegelMaschine
{
private static RegelMaschine handler = null;
private static IlrContext context;
public RegelMaschine(String ruleFile)
{
IlrRuleset ruleset = new IlrRuleset();
ruleset.parseFileName( ruleFile );
context = new IlrContext( ruleset );
System.err.println( "Constr. aufgerufen" );
-D
}
public static int processAbrechnung(Abrechnung a) {
if (handler == null) {
System.err.println("generateContext aufgerufen" );
handler = new RegelMaschine("PATH/Abrechnung.irl");
}
context.insert(a);
int i = context.fireAllRules();
context.retractAll();
return i;
}
}
-/
Anhang D. Oracle Form Builder Start.bat
set CLASSPATH=$HOME\jbproject\Abrechnung\classes; \
D:\ILOG\JRules45\lib\jrulesall.jar; \
F:\oracle\orant\FORMS60\java; \
F:\oracle\orant\TOOLS\COMMON60\JAVA\IMPORTER.JAR; \
F:\oracle\orant\jdk\lib\classes.zip; \
D:\ILOG\JRules45\lib\*.jar
set path=C:\j2sdk1.4.1\bin;C:\j2sdk1.4.1\jre\bin\client;%PATH%
set NLS_NUMERIC_CHARACTERS=,.
set NLS_SORT=BINARY
F:\oracle\orant\BIN\ifbld60.EXE '' kvasy/kvasy@local
--
-.
Anhang E. Glossar
E;% )
- ->
- # D( 5 D>
D % J ! % < 4 e6,
< 4 6 J 8 :( <! , ! : 8 3 J <! & 8 : 8 3 $%
' ,
: $% $%8 3 %
& $% ,
? :& ! (8 ( $% # % % 3 % (, 3 $% >!( LlM
,
$% 8 # & J ( % ,
? :& ! (8 I $% 3 % 8 3 ! ( 3 %
, 3 $% >!( L M ,
C $%<&,
? :& ! (8 (
! 3 % 8 3 3 % , 3 $% >!( LmM ,
& ! # ! $% $%
' ! , J 3 ! 3 $% !$% $% C ! = ! ,
? :& ! (8 J I 3 % 8 3 3 % $% ( 3 % ,
3 $% >!( L M ,
$% $%8 <! 3 3 ,
+F
-+
<! ( 8 ! , <! (
& ! :( < ' ! $% (,
<! 8 ( &&
$% $% 3 8 & # % % :( :& 3 !8
! O & <! $%& !A $%,
<
F LF & ?
$% >!( 4': ,,,6 ,
)
2
8 3 (I ! # ! >
&:,
,
(M, 2D 3 4 C ,,,6
3$% 4, , 6 $% (I ( % ! ! ( 3 ( &:% , %
,
2D <!!8 ;3^ = 8 B: ) J: $% ) % " P(($%) :$%8 # ) ' $%($% !
= O ? 75518 ,2+
.5
Literaturverzeichnis
V1W ,, , G .
, ) ! , 1+.2,
V7W #, , D: ) . ? , :$%8# ) 1++5,
5 #
5: , = O V0W , ' , * +H< ! , H >, JA) 1+++,
V2W =% , ' >, G H > ,
) & $ $, 1+, , 1+"0-, 1+.7,
VDW
$% B, , . 5 @00I
$% 8 !) "1+"2-+1, 7550,
V/W (
O , .
1++-,
<, B
, ) ( !! n , O& 15,
V-W , O ! J, % , . 5# ! $ + $
( , "? , 8 O ( 8 G3 d ) 1++5,
V.W O O (, * 8 6, %> $ "? , O ( ) 1++-,
V+W ;3 <!! B: = , D: 7551,
V15W ,
V11W .
48 ), = O ? , :$%8 # )
, , . G 8 $ - $,^7 , 8 $%) 1++-,
G 8 $ - , , 8 $,,
.1