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