You are on page 1of 166

PHT TRIN PHN MM HNG AGENT

BI GING DNH CHO SINH VIN NGNH CNG NGH THNG TIN

TRN NH QU

H ni - 2010

LI NI U
Pht trin phn mm hng agent c xem l cch tip cn tin ha ca pht trin phn mm da trn thnh phn cho cc h phn tn. S khc bit ca agent vi cc thnh phn thng thng l cc tnh t ch, tnh linh hot, tnh x hi c tng cng thm vo trong cc thnh phn phn mm. Cho n nay, cc c trng ny c nghin cu rng ri trong lnh vc tr tu nhn to. Cc kiu kin trc bn trong ca agent cng nh h thng a agent cng cc thut ton cho cc dng tng tc nh thng lng, u gicng ang c nhiu cng ng nghin cu. Agent v h a agent t c nhiu tin b ng k v c ng dng trong cc lnh vc khc nhau c bit trn mi trng mng Internet nh thng mi, dch v y t, gio dcv c a vo ging dy nhiu trng i hc trn th gii. Ti liu ny nhm phc v cho sinh vin nm cui ngnh Cng ngh thng tin. Ti liu c son tho phn ln da trn cun sch Developing Multi-Agent Systems with JADE ca Fabio
Bellifemine et al. v cc ti liu tham kho c lit k cui ti liu nhm h tr cho sinh vin gp kh khn khi c ti liu nguyn bn ting Anh. Ni dung ti liu bao gm:

Cc kin thc c bn v agent, h a agent v cc vn lin quan n pht trin h phn mm phc tp hng agent. Mi trung pht trin h a agent Jade v phng php lun cho phn tch v thit k h a agent.

Ti liu c cu trc nh sau: Chng 1 Gii thiu agent v h a agent Chng ny trc ht gii thiu cc khi nim agent v h a agent cng cc c trng c bn ca agent. Tip theo s trnh by giao tip v phi hp trong agent cng cc cng c v ngn ng lp trnh agent cng nh ng dng h a agent.
Chng 2 Gii thiu Jade

Chng ny tp trung trnh by lch s pht trin ca nn tng Jade, kin trc c bn ca Jade cng nhng c trng ca jade. Chng ny cn hng dn cch chy JADE bng dng lnh v bng giao din ha.
Chng 3 Nhng c im c bn ca Jade

Chng ny s trnh by cch pht trin h a agent vi JADE da vo nhng tnh nng c bn m JADE cung cp nh to cc agent, thc thi nhim v ca agent, to iu kin cho agent giao tip vi nhau, v a ra cc dch v cng nh l tm kim cc dch v trong mc trang vng

Ti liu ny c hnh thnh vi s ng gp trc tip hoc gin tip ca nhiu th h sinh vin Khoa CNTT Hc vin CNBCVT, c bit sinh vin chuyn ngnh Cng ngh phn mm lp D06CNPM cp nht bn tho, b sung cc chng trnh v d.

ii

(yellow page). Bng nhng tnh nng ny ta c th ci t ng dng phn tn vi mt phc tp nht nh. Chng 4 Nhng c im nng cao ca Jade Mc d Chng 3 m t nhng c im c bn ca JADE khi pht trin nhng h a agent phn tn nhng trong thc t vic ci t cc ng dng vi cc c tnh tng i phc tp v ngi pht trin s phi gii quyt rt nhiu vn . Chng ny trnh by nng cao nhng vn lin quan ti vic kim sot cc biu thc ni dung phc tp bng ontology v ngn ng ni dung codes, kh nng xy dng cc hnh vi phc tp t nhng hnh vi n gin, h tr cho vic to ra cc cuc hi thoi c tun theo cc giao thc tng tc c nh ngha bi FIPA. Chng 5 Kh nng di ng ca agent trong Jade Kh nng di ng ca Agent l mt cch tip cn xut pht t 2 ngnh khc nhau l Tr tu nhn to to ra khi nim v agent v Cc h thng phn tn nh ngha khi nim v m di ng. c trng ny cng ngy cng c nhn nhn l quan trng trong h phn tn, c bit cho cc thit b di ng. Chng ny nhm trnh by mt s khi nim lin quan agent di ng v nn tng Jade trong thit k cc agent di ng. Chng 6 Kin trc bn trong ca Jade Cho ti thi im ny ch c nhng tnh nng c h tr bi Jade run-time v API truy cp cc tnh nng c trnh by. Trong phn ny, chng ta s hng vo kin trc ct li bn trong ca Jade bao gm c vic lm th no xc nh v m rng cc hnh vi ca agent. Chng 7 Pht trin h a agent vi phng php lun MaSE v Jade Chng ny bn v vn s dng phng php lun MaSE kt hp vi Jade khi pht trin cc h a agent phn tn. Cho n nay c rt nhiu phng php lun cng nh rt nhiu khung (framework) c pht trin xy dng cc h a agent phc tp. Mt s phng php lun nh Gaia, Tropos, Ingenias, MaSE (Multi-agent Systems Engineering)v mt s khung nh TuCSoN (TUple Centre Spread Over the Network), JADE (Java Agent DEvelopment Framework), Jadex, DESIRE (Design and Specification of Interacting Reasoning components) c gii thiu. Chng ny tp trung trnh by phng php lun MaSE kt hp vi nn tng JADE v mt case study Qun l Hi ngh.

iii

MC LC
Chng 1 GII THIU AGENT V H A AGENT.................................................................................1 1.1 AGENT....................................................................................................................................... 1 1.1.1 Khi nim Agent ................................................................................................................... 1 1.1.2 Cc kiu kin trc ................................................................................................................. 2 1.1.3 Giao tip v phi hp ............................................................................................................ 4 1.1.4 Ngn ng lp trnh v cng c ............................................................................................... 7 1.1.5 ng dng ca cc h thng a agent. ..................................................................................... 9 1.2 C S HNH THNH AGENT VT L V AGENT THNG MINH (FIPA) ......................... 10 1.2.1 Lch s v mc ch ca FIPA ............................................................................................. 11 1.2.2 Cc khi nim ct li ca FIPA ........................................................................................... 13 1.2.3 Mt s c t FIPA chnh .................................................................................................... 18 1.2.4 Lin quan gia FIPA v JADE ............................................................................................ 30 Chng 2 GII THIU JADE ................................................................................................................34 2.1 TM TT LCH S ................................................................................................................. 34 2.2 JADE V M HNH AGENT ................................................................................................... 35 2.3 KIN TRC JADE ................................................................................................................... 38 2.4 BIN DCH V CHY CHNG TRNH ............................................................................... 40 2.5 CC GI CA JADE ............................................................................................................... 43 2.6 DCH V VN CHUYN THNG IP ................................................................................. 46 2.6.1 Cc giao thc vn chuyn thng ip ................................................................................... 46 2.6.2 Giao thc truyn thng ip ni b (IMTP).......................................................................... 48 2.7 CC CNG C QUN TR V G LI ................................................................................. 49 2.7.1 Ca s qun tr JADE.......................................................................................................... 51 2.7.2 Dummy agent ..................................................................................................................... 52 2.7.3 Sniffer Agent ...................................................................................................................... 54 2.7.4 Introspector agent................................................................................................................ 55 2.7.5 Log Manager Agent ............................................................................................................ 56 2.7.6 Dch v thng bo s kin (event notification service) v m hnh cng c JADE ................. 58 Chng 3 NHNG C IM C BN CA JADE.........................................................................65 3.1 TO AGENT ............................................................................................................................ 65 3.1.1 nh danh agent .................................................................................................................. 66 3.1.2 Khi to Agent ................................................................................................................... 67 iv

3.1.3 Kt thc agent..................................................................................................................... 67 3.1.4 Truyn tham s cho agent.................................................................................................... 68 3.1.5 Ci t d n Book-Trading................................................................................................. 69 3.2 CI T NHIM V CHO AGENT ........................................................................................ 72 3.2.1 Lp lch v thc thi Behaviour. ........................................................................................... 72 3.2.2 One-shot behaviour, cyclic behavior v generic behaviour .................................................... 73 3.2.3 B sung thm v hnh vi ca agent ...................................................................................... 75 3.2.4 Lp lch cho cc hnh vi ca agent....................................................................................... 75 3.2.5 Cc hnh vi trong v d bookTrading ................................................................................... 76 3.3 TRUYN THNG GIA CC AGENT ................................................................................... 78 3.3.1 Gi thng ip .................................................................................................................... 79 3.3.2 Nhn thng ip.................................................................................................................. 80 3.3.3 Kha hnh vi i thng ip................................................................................................ 80 3.3.4 La chn thng ip t hng i.......................................................................................... 82 3.3.5 Cc cuc hi thoi phc tp................................................................................................. 82 3.3.6 Nhn thng ip ti node ang kha .................................................................................... 85 3.4 KHM PH AGENT DCH V TRANG VNG ................................................................... 85 3.4.1 DF agent............................................................................................................................. 85 3.4.2 Tng tc vi DF agent....................................................................................................... 86 3.4.3 Tm kim dch v ................................................................................................................ 87 3.5 AGENT VI GIAO DIN HA ......................................................................................... 88 3.5.1 Thc hnh lp trnh tt vi b lng nghe s kin AWT ......................................................... 88 3.5.2 Thc hnh lp trnh tt bng cch sa i giao din ha trong lung thc thi ca Agent.... 89 Chng 4 NHNG C IM NNG CAO CA JADE...................................................................96 4.1 ONTOLOGY V NGN NG NI DUNG.............................................................................. 96 4.1.1 Cc thnh phn chnh .......................................................................................................... 97 4.1.2 M hnh tham chiu ni dung .............................................................................................. 97 4.1.3 S dng Ontology v ngn ng ni dung ............................................................................. 98 4.1.4 S dng Protg v BeanGenerator add-on to Ontology cho JADE .............................. 107 4.2 HP CC HNH VI XY DNG CC TC V PHC TP ......................................... 108 4.2.1 Lp SequentialBehaviour .................................................................................................. 109 4.2.2 Lp FsmBehaviour........................................................................................................... 110 4.2.3 Lp ParallelBehaviour....................................................................................................... 112 4.2.4 Chia s d liu gia cc hnh vi con: DATASTORE .......................................................... 112 4.2.5 B sung v hnh vi gp ..................................................................................................... 114 v

4.3 HNH VI LUNG.................................................................................................................. 115 4.4 CC GIAO THC TNG TC ........................................................................................... 116 4.4.1 Gi jade.proto ................................................................................................................... 117 4.4.2 S dng cc lp giao thc ................................................................................................. 118 4.4.3 Lng giao thc.................................................................................................................. 120 4.5 KHI NG JADE T MT NG DNG JAVA BN NGOI............................................ 121 4.5.1 Giao tip gia Object v Agent.......................................................................................... 123 Chng 5 KH NNG DI NG CA AGENT TRONG JADE.....................................................129 5.1 TH NO L TNH DI NG CA AGENT ........................................................................ 129 5.1.1 Mt s u im v nhc im ca agent di ng .............................................................. 130 5.1.2 Di chuyn mnh v di chuyn yu...................................................................................... 131 5.1.3 K hoch di chuyn........................................................................................................... 131 5.2 DI CHUYN TRONG CNG PLATFORM............................................................................. 131 5.2.1 Cc phng thc truy cp ti kh nng di ng ca Agent.................................................. 131 5.2.2 Agent serialization ............................................................................................................ 132 5.2.3 Lp ti (classloader) ca agent di ng .............................................................................. 132 5.2.4 Nhn bn Agent ................................................................................................................ 133 5.2.5 Tuyn b kh nng di ng gin tip.................................................................................. 133 5.3 DCH V DI NG LIN PLATFORM................................................................................. 133 5.3.1 Qu trnh di c .................................................................................................................. 134 5.3.2 Tch hp cc dch v di ng ............................................................................................. 135 5.3.3 Nhm code ca cc Agent vi nhau ................................................................................... 135 5.3.4 Ontology di ng ca JADE .............................................................................................. 136 5.4. S DNG CC DCH V DI CHUYN CA JADE ............................................................ 136 5.4.1. Dch v di chuyn ni platform......................................................................................... 136 5.4.2 Dch v di chuyn lin platform......................................................................................... 138 5.4.3 Xem xt vn bo mt ca IPMS .................................................................................... 138 5.4.4 Lp trnh agent di ng...................................................................................................... 138 5.4.5 Truy cp vo AMS bng kh nng di ng ca agent.......................................................... 141 5.4.6 V d v tnh di ng ca agent.......................................................................................... 144 Chng 6 KIN TRC BN TRONG CA JADE.............................................................................147 6.1 GII THIU CC B LC CNG TC PHN TN ............................................................ 147 6.1.1 tng v ng c thc y ............................................................................................. 147 6.1.2 Cc thnh phn chnh ........................................................................................................ 148 6.1.3 Cc thnh phn dch v ..................................................................................................... 148 vi

6.1.4 La chn cc dch v c kch hot ................................................................................. 151 6.2 TO MT DCH V LI TRONG JADE............................................................................... 152 6.2.1 Ci t lp ca dch v ...................................................................................................... 152 6.2.2 Khi ng dch v............................................................................................................. 153 6.2.3 S dng b lc chn cc lnh dc.................................................................................. 154 6.2.4 Ci t mt dch v phn tn trong JADE........................................................................... 156 6.2.5 Tng tc gia Agent v dch v ....................................................................................... 159 Chng 7 PHT TRIN H A AGENT VI PHNG PHP LUN MaSE V JADE ..........163 7.1 GII THIU .......................................................................................................................................163 7.2 GII THIU NN TNG JADE ............................................................................................. 164 7.2.1 Mt s nn tng h tr pht trin h a agent ..................................................................... 164 7.2.2 Mt s c im ni bt ca JADE .................................................................................... 165 7.3 PHNG PHP LUN MaSE ............................................................................................... 167 7.3.1 Tng quan v cc pha trong MaSE..................................................................................... 167 7.3.2 Phn tch v thit k vi MaSE .......................................................................................... 168 7.4 PHT TRIN H THNG PAPERMANAGEMENT .............................................................. 171 7.4.1 Miu t h thng ............................................................................................................... 171 7.4.2 Phn tch........................................................................................................................... 172 7.4.3 Thit k ............................................................................................................................ 173 7.5 CI T H THNG ........................................................................................................... 175

TI LIU THAM KHO

vii

CHNG 1 GII THIU AGENT V H A AGENT

Chng ny trc ht gii thiu cc khi nim v agent, tng quan cc cng ngh agent, kin trc agent, cc ngn ng lp trnh v cc cng c pht trin. Tip theo s m t cc c t ca FIPA tp cc tiu chun ph bin nht v c chp nhn rng ri cho pht trin cc nn tng v ng dng a agent. JADE l mt nn tng tun theo cc c t FIPA v hn na n cn m rng m hnh FIPA trong mt s lnh vc nh agent cho thit b di ng, agent cho dch v web. 1.1 AGENT V H A AGENT 1.1.1 Khi nim Agent Thut ng agent, hay agent phn mm, c s dng rng ri v xut hin trong nhiu lnh vc nghin cu nh tr tu nhn to, c s d liu, cc ti liu v h iu hnh v mng my tnh. Mc d cho n nay vn cha c mt nh ngha thng nht v agent (Genesereth v Ketchpel (1994), Wooldridge v Jennings (1995), Russel v Norvig (2003)) nhng tt c cc nh ngha u c chung mt im rng mt agent, v bn cht, l mt phn mm my tnh c bit c th t ch v cung cp mt interface c kh nng tng thch vi mt h thng bt k v/hoc c x nh l mt agent con ngi hay i din cho mt s client thc thi cc ch cho ring mnh. Mc d mt h agent c th ch cn da trn mt agent n l lm vic trong mt mi trng v tng tc vi ngi dng ca n khi cn thit, tuy nhin cc h agent thng bao gm nhiu agent. Nhng h thng a agent (MAS: Multiagent System) c th s dng m hnh ha cc h thng phc tp bao gm cc agent vi cc mc tiu chung hoc ring. Nhng agent c th tng tc vi nhau mt cch gin tip (qua tc ng ln mi trng) hoc trc tip (thng qua giao tip v thng lng). Cc agent c th quyt nh hp tc cng c li hoc c th cnh tranh phc v cho mc tiu ca mnh. Nh vy, agent c tnh t ch, v n hot ng m khng c s can thip trc tip ca con ngi hoc cc h thng khc v c kh nng kim sot c hnh ng v trng thi bn trong ca mnh. Agent c tnh x hi, v n tng tc vi con ngi hoc cc agent khc hon thnh nhim v ca mnh. Agent c tnh phn ng, bi v n nhn thc c mi trng v p ng mt cch kp thi vi nhng thay i xy ra trong mi trng. Agent c tnh hng ch, v n khng ch n gin l hot ng phn ng vi mi trng ca n m cn c kh nng th hin hot ng hng ch mt cch ch ng. Agent c th c tnh di ng, vi kh nng di chuyn gia cc node trong mt mng my tnh. N c th c tnh trung thc ngha l lun cung cp s tht. N c th tt bng, lun c gng thc hin nhng g c yu cu. N c th sng
Gii thiu Agent v h a agent 1

sut, lun hot ng nhm n t c mc tiu v khng bao gi ngn cn vic t c mc tiu ca mnh. 1.1.2 Cc kiu kin trc Kin trc agent l c ch nm bn di cc thnh phn t ch nhm h tr hnh vi ca agent trong th gii thc, mi trng ng v mi trng m. Trong thc t, nhng n lc ban u trong lnh vc tnh ton da trn agent tp trung vo s pht trin ca cc kin trc agent thng minh v a ra kh nhiu kiu kin trc. Kin trc kiu phn ng (hoc hnh vi) hot ng theo mt kiu kch thch-p ng n gin, v d nhng kin trc da trn kin trc gp ca Brooks (1991) Kin trc c th l gii cc hnh ng ca chng, v d nh nhng loi da trn m hnh BDI (beliefs, desires, intentions) (Rao v Georgeff, 1995). Kin trc da trn s kt hp ca c hai kin trc trn, hay cn c gi l cc kin trc phn lp, tn dng nhng u im tt nht ca mi loi.

Cc kin trc agent c th c chia thnh 4 nhm chnh: da trn logic, c tnh phn ng, BDI v phn lp. Nhng kin trc da trn logic (logic-based) ly nn tng t k thut da trn tri thc truyn thng trong mt mi trng c th hin v hot ng bng cch s dng cc c ch lp lun. u im ca cch tip cn ny l tri thc ca con ngi c biu din bi cc k hiu v v th m vic m ha tr nn d dng hn v cng lm cho con ngi hiu logic hot ng ca n d dng hn. Nhc im l rt kh bin dch th gii thc thnh nhng m t hnh tng mt cch chnh xc v y . Hn na vic biu din v x l di dng cc k hiu c th mt nhiu thi gian c c kt qu v thng l c a ra qu mun, khng cn c ch na. Nhng kin trc c tnh phn ng (reactive) thc thi qu trnh a ra quyt nh khi nh x trc tip tnh hung sang hnh ng v c da trn mt c ch kch thch - phn ng c to ra bi d liu ca thit b cm bin. Khng ging nh nhng kin trc da trn logic, chng khng c bt k m hnh biu din tri thc v v th, khng tn dng c cc kiu lp lun phc tp no. Kin trc c tnh phn ng ni ting nht l kin trc gp ca Brooks (Brooks, 1991). Nhng tng chnh m da trn Brooks tm ra kin trc ny l: Mt cch ng x thng minh c th c to ra m khng cn biu din r rng v lp lun c cung cp bi cc k thut ca tr tu nhn to. Thng minh l mt tnh cht ring bit ca nhng h thng phc tp.

Kin trc gp xc nh cc tng ca cc my hu hn trng thi cc my c kt ni vi thit b cm bin cc thit b truyn thng tin theo thi gian thc (mt v d ca kin trc gp c th hin trong hnh 1.1). Cc tng ny to thnh s phn cp cc hnh vi ca agent

Gii thiu Agent v h a agent

Hnh 1.1: Kin trc gp

trong , mc thp nht c iu khin t hn so vi mc cao hn trong ngn xp, v th, vic ra quyt nh c a ra thng qua nhng hnh vi hng ch. Nhng agent c thit k gp hiu c iu kin v hnh ng, nhng khng a ra c k hoch. im mnh ca phng php tip cn ny l n c th thc thi tt hn trong nhng mi trng ng, cng nh chng thng c thit k n gin hn so vi nhng agent da trn logic. Tuy nhin, nhc im l nhng agent c kh nng phn ng khng p dng c khi nhng m hnh l kt qu tc ng ca mi trng ca chng. Do , cc d liu ca sensor c th khng xc nh mt hnh ng thch hp v thiu cc trng thi ca agent khin cho hu nh khng th thit k cc agent c th hc hi t kinh nghim. Hn na, nhng hnh ng ca agent da trn c s ca s tng tc gia cc hnh vi khc nhau khin cho cc k s rt kh c th thit k cc agent c kh nng phn ng thi hnh nhng tc v c bit khi nhng agent phi c nhn ra thng qua rt nhiu hnh vi. Cc kin trc BDI (Belief, desire, intention) l nhng kin trc agent ph bin nht (Rao v Georgeff, 1995). Chng c ngun gc trit hc v da trn l thuyt logic. L thuyt ny da trn nhng quan im v tinh thn ca nim tin, mong mun v d nh bng cch s dng logic hnh thc. Mt trong nhng kin trc BDI ni ting nht l h thng lp lun theo th tc (PRS Procedural Reasoning System) (Georgeff v Lansky, 1987). Kin trc ny da trn 4 kiu d liu chnh: Lng tin (beliefs), tc v (desires), nh (intentions) v k hoch (plans) v mt b phn phin dch (xem hnh 2.2). Trong h thng PRS, lng tin biu din nhng thng tin m agent c v mi trng ca n, c th khng y hoc khng chnh xc. Tc v biu din nhng tc v c phn cng cho agent v tng ng l nhng mc tiu, hoc l mc ch m n s hon thnh. nh th hin nhng mong mun m agent cn phi t c. Cui cng, k hoch ch r mt vi qu trnh ca hnh ng m agent s phi lm t c mc ch. Bn cu trc d liu ny c qun l bi b phn phin dch agent chu trch nhim cp nht lng tin t nhng quan st t mi trng, sinh ra nhng tc v mi da trn c s ca cc lng tin mi, v la chn trong tp nhng tc v hin ti mt vi tp con hot ng, chng c gi l nh. Cui
Gii thiu Agent v h a agent 3

cng, b phn phin dch phi la chn mt hnh ng thc thi da trn c s ca nhng nh hin ti ca agent v tri trc v mt th tc. Kin trc phn tng (layered architecture) cho php hnh vi ca agent va mang tnh phn x va c tnh k hoch. c c s linh hot ny, cc h thng con c sp xp thnh cc tng ca mt h thng phn cp nhm thch ng vi c hai loi hnh vi ca agent. C hai loi lung iu khin trong mt kin trc phn lp: phn lp ngang (Ferguson, 1991) v phn lp dc (Muller et al, 1995). Trong phn lp nm ngang, cc lp kt ni mt cch trc tip vi u vo ca sensor v u ra ca hnh ng (xem hnh 2.3); v c bn l c mi tng hot ng ging nh mt agent. im mnh chnh ca cch phn lp ny l s d dng trong thit k bi v nu agent cn n loi hnh vi khc nhau, th kin trc ch yu cu n tng. Tuy nhin, bi v mi tng u b nh hng bi agent, nn khng cn c mt chc nng trung gian ha gii kim sot cc hnh ng. S phc tp khc l mt lng ln cc tng tc c th xy ra gia nhng tng ngang - mn (vi m l s lng hnh ng ti mi tng).

Hnh 1.2: Kin trc PRS Mt kin trc phn lp dc loi tr mt s vn trn v u vo ca sensor v u ra ca hnh ng c gii quyt phn ln ti mi tng. Kin trc phn lp dc c th c chia nh thnh nhng kin trc iu khin mt chiu v hai chiu. Trong kin trc mt chiu, lung iu khin i t tng u, tng nhn d liu t cc sensor, xung n tng cui, tng sinh ra u ra ca hnh ng (xem Hnh 1.2). Trong kin trc hai chiu, lung d liu i ln xuyn qua cc tng v iu khin, tip li c lung d liu tr v theo th t ngc li (xem hnh 1.3). im mnh ch yu ca kin trc phn lp dc l s tng tc gia cc tng c lm gim ng k cn m2(n-1). Nhc im l kin trc ny ph thuc vo tt c cc tng v khng chp nhn li, v th nu mt tng li, ton b h thng s li. 1.1.3 Giao tip v phi hp Mt trong nhng thnh phn chnh ca nhng h thng a agent l giao tip. Trong thc t, cc agent cn c kh nng giao tip vi ngi dng, vi ti nguyn h thng, v vi agent khc nu chng cn hp tc, cng tc, m phnC th, cc agent tng tc vi agent khc bng cch s dng mt vi ngn ng giao tip c bit, c gi l nhng ngn ng giao tip agent, da trn
Gii thiu Agent v h a agent 4

l thuyt li ni hnh ng (Searle, 1969) v em li s phn bit gia hnh ng giao tip v ngn ng ni dung.

Hnh 1.3: Lung d liu v lung iu khin trong kin trc phn lp Ngn ng giao tip agent u tin l KQML (Mayfield et al, 1996). KQML c pht trin vo u nhng nm 1990 l mt phn ca d n ARPA ca chnh ph M. N l mt ngn ng v giao thc trao i thng tin v tri thc, xc nh nhiu ng t biu hin v cho php ni dung thng ip c th hin trong mt ngn ng ging logic u tin c gi l KIF (Genesereth v Ketchpel, 1994). Hin nay, ngn ng giao tip agent c nghin cu v s dng nhiu nht l FIPA ACL (xem phn 1.2.2), n kt hp nhiu kha cnh ca KQML. c im chnh ca FIPA ACL l kh nng s dng nhng ngn ng ni dung khc nhau v s qun l cc cuc hi thoi thng quan cc giao thc tng tc c xc nh trc. Phi hp l mt tin trnh m trong , cc agent tham gia nhm m bo rng mt cng ng cc agent n l hnh ng mt cch cht ch (Nwana et al, 1996). C kh nhiu l do l gii ti sao nhiu agent cn phi hp vi nhau: (1) (2) (3) (4) Cc mc ch ca cc agent c th gy ra s xung t gia cc hnh ng ca agent Cc mc ch ca cc agent c th ph thuc ln nhau Cc agent c th c nhng kh nng v tri thc khc nhau Cc mc ch ca cc agent c th nhanh chng t c nu c s cng tc gia cc agent khc nhau.

S phi hp gia cc agent c th c iu khin vi nhiu phng php tip cn khc nhau bao gm c cu t chc (Organizational structuring), lp hp ng (contracting), lp k hoch v m phn. C cu t chc cung cp mt nn tng hot ng v tng tc thng qua vic nh ngha cc vai tr, ng truyn thng v cc mi quan h v quyn hn (Dufee, 1999). Cch n gin nht m bo hnh vi r rng v gii quyt xung t l kt hp mt nhm vi mt agent c mt quan im rng v h thng, qua to thnh mt c cu t chc hoc cu trc phn cp. y l k thut phi hp n gin nht v to ra mt kin trc ch/t (master/slave) hoc
Gii thiu Agent v h a agent 5

client/server c in dng cho vic phn b nhim v v phn b ti nguyn gia cc agent t. B iu khin ca agent ch c th thu thp thng tin t cc agent trong nhm, lp k hoch v giao cc cng vic cho tng agent m bo tnh cht ch trong ton b h thng. Tuy nhin, y l mt cch tip cn khng thc t trong cc ng dng bi v rt kh to ra mt b iu khin trung tm, v trong bt k trng hp no, b iu khin trung tm, nh trong k thut ch/t, l ngc li vi bn cht phn tn ca nhng h thng a agent. Mt k thut phi hp quan trng dng cho vic phn b nhim v v phn b ti nguyn gia cc agent v xc nh c cu t chc l giao thc mng hp ng (contract net protocol) (Smith and Davis, 1980). Phng php tip cn ny da trn mt c cu th trng phn quyn, m trong , cc agent c th m nhim 2 vai tr, qun l v u thu. Nhng tin c bn ca th thc phi hp ny l nu mt agent khng th gii quyt mt vn c giao khi ch s dng ngun lc hoc chuyn mn ca mnh, n s phn r vn thnh cc vn con v c gng tm cc agent sn sng khc vi ngun lc/chuyn mn cn thit gii quyt nhng vn con ny. Ni ton giao vn con c gii quyt bng c ch lp hp ng bao gm: (1) Agent qun l thng bo hp ng (2) Giao h s d thu cho agent lp hp ng p ng li thng bo (3) Nh thu nh gi cc cho gi c gi n, trao mt hp ng ph cho nh thu (mt hoc nhiu) vi gi thch hp nht (xem Hnh 2.4). Mt phng php tip cn khc l coi vn phi hp cc agent l vn lp k hoch. ngn chn nhng hnh ng hoc tng tc xung t hay khng ph hp, cc agent c th xy dng mt k hoch chi tit ha ton b nhng hnh ng v tng tc trong tng lai t c mc ch v b sung thm cc k hoch hoc lp li k hoch. Lp k hoch a agent c th tp trung, hoc l phn tn. Trong lp k hoch a agent tp trung, thng c mt agent t chc, nhn c mt phn hoc tt c cc k hoch t agent n l, phn tch chng xc nh nhng tng tc khng ph hp hoc xung t c th xy ra (nh xung t gia cc agent vt qu gii hn ti nguyn). Tip theo agent t chc c gng chnh sa cc k hoch thnh phn v kt hp chng thnh mt k hoch a agent loi b nhng tng tc xung t (Georgeff, 1983). Trong lp k hoch a agent phn tn, tng l cung cp cho mi agent mt m hnh ca k hoch ca cc agent khc. Cc agent giao tip xy dng v cp nht vo k hoch c nhn v cp nht m hnh ca mnh trong cc agent khc cho n khi tt c nhng xung t c loi b (Georgeff, 1984). Lp k hoch b phn - ton cc tch hp nhng th mnh ca cc cch tip cn v mt t chc, quy hoch, v lp hp ng bng cch thng nht chng thnh mt phng php duy nht (Durfee and Victor, 1987). Mc ch ca phng php tip cn ny l t c nhng li ch ca vic lp k hoch a agent v s phi hp c chi tit ha, trong tnh hnh c th trong khi trnh tnh ton qu nhiu v chi ph giao tip ln.
Gii thiu Agent v h a agent 6

Hnh 1.4: Cc pha ca giao thc mng hp ng iu ny c th xy ra bi v nhng c cu t chc c coi l c hiu qu l nhng c cu gim bt c khng gian m k hoch kh thi chim gi. Ngoi ra, k hoch b phn - ton cc coi hp ng l k hoch phi hp t chc vi ch r nhng trao i v nhim v v kt qu trong tng tc gia cc agent. V th, trong k hoch b phn - ton cc, s phi hp bao gm c vic chia s cng vic v chia s kt qu; c hai u tun theo nhng vai tr di hn v mt t chc v lp k hoch phn ng li t c cc mc tiu ngn hn. m phn c th l mt k thut ng tin cy nht phi hp cc agent. C th, m phn l qu trnh giao tip ca mt nhm cc agent t c mt tha thun chp nhn ln nhau v mt vn no (Bussmann and Muller, 1992). m phn c th mang tnh cnh tranh hoc hp tc tu thuc vo hnh vi ca cc agent c lin quan. m phn cnh tranh c dng trong trng hp khi c s tng tc gia cc agent c nhng mc ch c lp vi nhau; chng khng phi l mt s hp tc c u tin, chia s thng tin hay sn sng gim yu cu c li ch ln hn. m phn hp tc c dng trong trng hp cc agent cn t c mt mc ch chung hoc thc thi mt tc v n. Trong trng hp ny, h thng a agent c thit k tp trung theo ui mt mc ch thng nht cho ton h thng. 1.1.4 Ngn ng lp trnh v cng c Ngn ng lp trnh, nn tng v cc cng c pht trin ca h thng a agent l thnh phn quan trng m c nh hng n vic ng dng rng ri cc cng ngh agent. Trong thc t, s thnh cng ca h thng a agent phn ln l ph thuc vo s sn c ca cng ngh (tc l ngn ng lp trnh, th vin phn mm v cc cng c pht trin) cho php thc thi cc khi nim v cc k thut hnh thnh c s cho h thng a agent. H thng agent c th c ci t bng cch s dng mt loi ngn ng lp trnh no . C th, ngn ng hng i tng c coi l mt phng tin ph hp, v khi nim v agent khng khc nhiu so vi t khi nim i tng. Trong thc t, cc agent chia s nhiu tnh cht vi cc i tng nh ng gi (encapsulation), v i khi c c k tha (inheritance) v truyn thng ip (message passing). Tuy nhin, cc agent cng khc vi cc i tng mt s im chnh: tnh t ch (autonomous) (ngha l chng c th t quyt thc hin hay khng thc hin
Gii thiu Agent v h a agent 7

mt hnh ng theo yu cu t cc agent khc); chng c th c hnh vi linh hot; v mi agent ca mt h thng c th iu khin lung ca ring mnh. Ngn ng lp trnh hng agent l mt loi ngn ng lp trnh mi. N tp trung vo nhng c im chnh ca h thng a agent. Ti thiu, mt ngn ng lp trnh hng agent phi bao gm mt vi cu trc tng ng vi mt agent, nhng nhiu ngn ng lp trnh cng cung cp cc c ch h tr cc thuc tnh b sung ca agent nh nim tin (beliefs), mc ch (goals), k hoch (plans), vai tr (roles) v quy tc (norms). Ngy nay, mt s ngn ng hng agent xut hin (Bordini et al, 2006). Mt s c thit k t u, trc tip m ha mt s l thuyt v agent, trong khi mt s khc m rng ngn ng c ph hp vi tnh cht ring bit ca agent. Ngoi ra, mt s ngn ng mang quan im lp trnh hon ton c tnh cht khai bo hoc c tnh cht bt buc. V d in hnh l FLUX (Thielscher, 2005) v ngn ng Jack Agent (Winikoff, 2005). Nn tng l phng tin chnh cho php pht trin cc h thng a agent. Hu ht chng cung cp mt phng tin trin khai nhiu h thng agent trn cc phn cng v h iu hnh khc nhau, thng l cung cp mt chng trnh trung gian (midleware) h tr thc thi v cc hot ng cn thit ca chng nh giao tip (communication) v phi hp (coordination). Mt s nn tng c mc ch chung l cung cp cc chc nng theo cc chun FIPA h tr cng tc gia nhiu h thng agent khc nhau. Ngoi ra, mt s nn tng cng c mc tiu h tr cc loi phn cng, mng truyn thng v kin trc agent, v d nh JADE (Bellifemine et al, 2001) v mt s h tr cc loi agent c bit, v d nh cc agent in thoi di ng (Lange v Oshima, 1998). Mt c im quan trng m cc h thng a agent nn cung cp l kh nng h tr s tng tc gia cc h thng phn mm k tha t cc h thng trc. Do , s sn sng tch hp cc cng c phn mm vi cc cng ngh khc c th l cha kha dn n thnh cng ca chng. Internet l mt trong cc lnh vc ng dng quan trng nht v l phng tin truyn thng quan trng nht m nhiu h thng a agent c th s dng cung cp kh nng tng tc gia cc h thng phn mm k tha. Do vy, rt nhiu cng trnh nghin cu v pht trin hin nay hng n vic cung cp cc k thut v cng c phn mm thch hp cho vic tch hp cc h thng a agent vi cc cng ngh web nh Web Service v Semantic Web. Dch v web (Web Service) l mt cng ngh lm thay i Internet mt cch nhanh chng thng qua vic cung cp mt m hnh lp trnh trung tnh vi ngn ng v mi trng (language-neurtral, environment-neutral) nhm s dng Web tch hp cc ng dng c trong v ngoi doanh nghip (Tsalgatidou v Pilioura, 2002; Weikum, 2001). Nhiu cng trnh quan trng khc xut vic tch hp gia cc cng ngh agent v cc cng ngh Web Service thnh mt phng tin l tng h tr kh nng tng tc ca c hai v cung cp nhiu dch v phc tp hn. c bit, cc agent c chng minh rt hu ch khi hnh ng trc tip nh
Gii thiu Agent v h a agent 8

l mt Web Service, cung cp cc dch v da trn agent cho cc Web Service s dng, v phi hp mt cch ch ng vic thc thi ca mt tp cc Web Service bng cch cung cp cc dch v mi l gp ca cc dch v khc (Buhler v Vidal, 2005; Greenwood et al, 2005.; Negri et al, 2006). Web ng ngha (Semantic Web) l mt phn m rng ca Web hin ti, trong thng tin bao gm ng ngha r rng cho php phi hp gia cc my tnh cng nh vi con ngi tt hn. c bit, Semantic Web cung cp mt c s h tng v mt tp cc cng ngh cho php khng ch cc trang Web, m cn c s d liu, dch v, chng trnh, cm bin, thit b c nhnva ly d liu va to ra d liu trn Web (Hendler et al, 2002). 1.1.5 ng dng ca cc h thng a agent Cc h thng a agent ang ngy cng c s dng rng ri trong rt nhiu ng dng, t cc h thng tng i nh h tr c nhn n cc h thng m, phc tp, v c bit quan trng dnh cho cc ng dng cng nghip. ng dng cng nghip l nhng ng dng rt quan trng cho cc h thng a agent bi v chng l ni m cng ngh a agent u tin c th nghim v chng minh tim nng ban u ca n. Cc v d v vic p dng cc h thng a agent trong lnh vc cng nghip bao gm kim sot tin trnh (Jenning, 1994), chn on h thng (Albert, 2003), sn xut (Parunak, 1987), dch v vn ti (Neagu, 2006), v qun l mng (Greenwood, 2006). Mt trong nhng lnh vc ng dng quan trng na ca h thng a agent l qun l thng tin. Tht ra, Internet chng t l mt min l tng cho cc h thng a agent nh bn cht phn tn t nhin ca n v khi lng thng tin sn c ang ngy cng tng ln mnh m. V d, cc agent c th c s dng tm kim v lc thng tin. Internet thc y vic s dng cng ngh agent trong lnh vc qun l tin trnh nghip v v thng mi in t. Trong thc t, trc s gia tng ca thng mi in t, vic qun l tin trnh nghip v gn nh c iu khin bi cc tng tc ca con ngi: con ngi quyt nh khi no mua hng ha, h c kh nng chi tr bao nhiu...Gi y thng mi in t v tin trnh nghip v c t ng ha ang ngy cng ng vai tr then cht trong nhiu t chc bi v chng cung cp nhng c hi ci thin ng k cch thc m cc thc th khc nhau tham gia vo tng tc ca tin trnh nghip v. Trong kch bn ny cc h thng a agent chng t n va ph hp cho vic m hnh ha v thit k cc h thng qun l tin trnh nghip v, va l cc thnh phn quan trng cho t ng ha ca mt s hoc tt c cc bc ca cc tin trnh ny. Giao thng v vn ti cng l mt lnh vc quan trng, ni m bn cht phn tn ca cc tin trnh giao thng v vn ti v s c lp mnh m gia cc thc th c lin quan trong cc tin trnh lm cho cc h thng a agent tr thnh mt cng c c gi tr cho vic thc hin cc gii php thng mi thc s c hiu qu (Neagu et al, 2006). Mt s lnh vc c gii quyt nh OASIS cung cp bng chng mnh m rng nhiu h thng a agent l phng tin l
Gii thiu Agent v h a agent 9

tng cho cc h thng m, phc tp v c bit quan trng. OASIS l mt h thng iu khin khng lu phc tp d trn m hnh agent BDI, c trin khai v c s dng thnh cng ti sn bay Sydney Australia. Cc h thng vin thng l mt lnh vc ng dng s dng thnh cng cc h a agent. Trong thc t, cc h thng vin thng l cc mng li ln v phn tn gm cc thnh phn c kt ni vi nhau. Nhng thnh phn cn phi c theo di v qun l trong thi gian thc. Cc h thng vin thng cng hnh thnh nn c s ca mt th trng cnh tranh, ni cc cng ty vin thng v cc nh cung cp dch v nhm n phn bit chnh h vi i th cnh tranh ca h bng cch cung cp cc dch v tt hn, nhanh hn hoc ng tin cy hn. V vy, cc h a agent c s dng c trong vic qun l cc mng li phn tn ln cho vic ci t cc dch v vin thng tin tin (Fricke et al., 2001; Hayzelden and Bourne, 2001; Greenwood et al., 2006). Nhiu h thng a robot cng s dng cc k thut lp k hoch phn tn v a agent phi hp cc robot khc nhau. FIRE phi hp cc hnh ng ca nhiu robot nhiu mc tru tng ha. Tng lp k hoch trn cng s dng mt chin lc da trn th trng phn phi cc cng vic gia cc robot, trong thi gian robot di chuyn l thc o chnh tnh chi ph. MISUS phi hp cc k thut t vic lp k hoch v lp lch vi hc my thc hin vic thm d c tnh khoa hc mt cch t ch (Estlin et al., 2005). K thut lp k hoch v lp lch phn tn c s dng to ra cc k hoch cng tc nhiu ln, vic thc thi k hoch gim st c hiu qu v thc hin lm li k hoch khi cn thit. Cc thnh phn thuc v hc my c s dng suy din cc quan h gia nhng d liu thu thp c v la chn cc hot ng khoa hc mi. Hn na, nhng h thng ny c th suy lun v nhng mc ch ph thuc ln nhau thc hin ti u ha k hoch v tng gi tr ca d liu thu thp c. Mt s ng dng a agent ng quan tm khc c th c tm thy trong h thng chm sc sc khe (Moreno v Nealon, 2003). Trong thc t, cc h thng a agent c xut gii quyt nhiu loi vn khc nhau trong lnh vc chm sc sc khe, bao gm lp k hoch v qun l bnh nhn, chm sc sc khe ngi cao tui v cng ng, truy cp v qun l thng tin y t v h tr quyt nh. Mt vi ng dng ci t cho thy rng h thng a agent c th l gii php ng n cho vic xy dng cc h thng h tr quyt nh y hc (Hudson v Cohen, 2002) v ci thin s phi hp gia cc chuyn gia khc nhau tham gia vo qu trnh chm sc sc khe (Lanzola v Boley, 2002). 1.2 C S HNH THNH AGENT VT L V AGENT THNG MINH (FIPA) Tp cc c t hon chnh ca FIPA c sn trn website ca FIPA (FIPA). Phn ny s cung cp lch s v phm vi ca FIPA v nu ra mt vi c t c th c lin quan n JADE. V JADE l mt nn tng ci t phn ln cc c t FIPA nn n ph thuc rt nhiu vo cc tng pht sinh trong qu trnh c t v c trnh by trong cc ti liu FIPA. JADE m rng m hnh
Gii thiu Agent v h a agent 10

FIPA trong mt s lnh vc, nn cc c t s khng th bao ph c ton b. Tuy nhin, cc kha cnh c lin quan n kh nng tng tc, mc tiu ct li ca FIPA, JADE u tun th. 1.2.1 Lch s v mc ch ca FIPA FIPA c thnh lp nm 1996 vi t cch l mt t chc quc t phi li nhun nhm pht trin mt tp cc chun lin quan n cng ngh agent. Cc thnh vin ban u gm mt nhm cc t chc nghin cu v cng nghip xy dng mt b lut hng dn xy dng cc c t chun, hp php cho cc cng ngh agent. Vo lc , cc phn mm agent c bit n rng ri trong cng ng nghin cu nhng ch thu ht c s quan tm hn ch t cc t chc doanh nghip. FIPA quyt nh to ra cc chun nhm lm nn tng cho mt ngnh cng nghip mi bng cch xem xt rt nhiu ng dng. Ct li ca FIPA tun theo cc nguyn l sau: (1) Cc cng ngh agent cung cp mt cch tip cn mi gii quyt cc vn c v mi. (2) Mt s cng ngh agent t ti trnh tng trng ng k. (3) s dng c mt s cng ngh agent i hi phi chun ha. (4) Vic chun ha cc cng ngh chung phi c cng nhn l kh thi v em li hiu qu s dng bi cc hi ng chun ha khc. (5) Vic chun ha cc c ch bn trong ca agent khng phi l vn trng tm, m ng hn l c s h tng v ngn ng cn thit cho s tng tc m. FIPA ban u c thnh lp vi k hn 5 nm c t cc kha cnh chn lc ca cc h a agent, k hn ny c m rng vo nm 2001. n cui nm 2005, FIPA c qun l bi mt Hi ng lnh o gm cc thnh vin c bu, hi ng ny chu trch nhim a ra cc ch dn c tnh chin lc v qun l cc cng vic mang tnh hnh thc. Cc quyt nh lin quan n vic thnh lp cc nhm k thut xy dng cc c t v d on vng i ca cc c t ang pht trin c qun l bi Hi ng Kin trc FIPA (FAB). Cc thnh vin ca FAB c b nhim bi Hi ng lnh o. Cc cng vic k thut hng n vic xy dng cc c t c xy dng trong Cng ng K thut (TCs), c thnh lp khi c mt xut cng vic mi c chp nhn v gii tn khi cng vic c hon thnh hoc b hy b. Ngoi ra, cc Nhm lm vic (WGs) c thnh lp nh mt din n tho lun cc vn k thut v hnh thnh c s cn thit trc khi thnh lp. Cui cng, cc Nhm quan tm c bit (SIGs) c thnh lp tng thi k tho lun cc cng vic lin quan n FIPA m khng c d nh to ra cc c t k thut. Vo thi k nh cao, FIPA c ti hn 60 thnh vin t hn 20 quc gia khc nhau trn khp th gii, v qua nhiu ln lp li trong nhiu nm cho ra i mt tp cc c t thng qua ba vng r sot: FIPA'97, FIPA'98 v FIPA2000. Km theo ln lp cui cng l Kin trc tru tng FIPA (FIPA Abstract Architecture). Kin trc ny tru tng ha vic ci t cc nguyn l ca thuyt khng th bit (agnostic) c trnh by trong c t FIPA2000 nhm to ra mt
Gii thiu Agent v h a agent 11

c t nh ngha mi thnh phn kin trc li v quan h gia chng. iu ny c tho lun trong phn 2.2.3. Lch s vn tt ca FIPA qua cc thi k:
1996: FIPA a ra xut u tin nhm tm kim cc lnh vc ng dng khc nhau c hi ng quan tm v t hnh thnh nn tng ca tp c t FIPA'97. Trong s 12 phn hi nhn c, c 4 phn hi c hon ton nht tr la chn: tr l c nhn, tr l vic di chuyn ca c nhn, qung b gii tr nghe-nhn, cui cng l qun l v d tr mng. Tp cc cng ngh agent cn thit xy dng ng dng trn cng c xc nh. 1997: FIPA'97, tp c t u tin, c xc nh vi 7 phn. 3 phn u l cc cng ngh li, chun v c th v qun l agent, giao tip agent, v tng tc agent-phn mm. 4 phn cn li l cc ng dng thng tin bao gm tr l c nhn, tr l c nhn di chuyn, qung b gii tr nghe-nhn, cui cng l qun l v d tr mng. T quan im truyn thng, FIPA quyt nh chp nhn ARCOL (Sadek, 1991) t France Telecom lm nn tng cho ngn ng truyn thng agent, ngay sau ARCOL c bit n vi ci tn FIPA-ACL, hay gi tt l ACL. Quyt nh chp nhn ARCOL xut pht t mt cuc tranh lun gay gt v cht lng gia ARCOL v KQML (Labrou et al., 1999). Tht khng may, ARCOL ginh chin thng v n c cng c bi nhng ng ngha mang tnh hnh thc (formal semantic). Tip , FIPA cng quyt nh chp nhn ngn ng SL lm tiu chun biu din ni dung cc thng ip v mt vi giao thc cng tc, cng c cung cp bi France Telecom. V kha cnh qun l agent, FIPA97 nh ngha FIPA Agent Management Ontology u tin bao gm khi nim nn tng agent (agent platform) bao gm Knh truyn thng agent (ACC: Agent Communication Channel), H thng qun l agent (AMS: Agent Management System) v Tin ch th mc (DF: Directory Facilitator). IIOP (1999) c chn l giao thc c s. 9/1998: Cc c t ct li c duyt li v b sung thm vo c ch qun l agent c s kh nng qun l di ng, v b sung vo c ch truyn thng cc giao thc tng tc v tng tc gia con ngi vi agent. Cc c ch mi ny c kim sot trn h qun l bo mt agent (agent security management) v dch v t vng (ontology service) nhm tip nhn v phc v t vng trong min xc nh. Cc k hoch cui nm 1998 c to ra nhm kim th kh nng kt ni cc phn mm agent tun theo FIPA cho giai on u nm 1999. Ngoi JADE cn c mt s platform c gii thiu nh FIPA-OS (Buckle et al., 2002) v Contec Agent Platform (Suguri, 1998). u nm 1999, b c t FIPA98 b tr hon c a ra vi nhiu ci tin, v phn loi nhiu hn b FIPA97. Hai TC mi c thit lp, mt cho pht trin kin trc tru tng FIPA (FIPA Abstract Architecture) v mt pht trin c t cho cc tr gip ng dng thng xuyn di chuyn. 2/2002: FIPA a ra mt tuyn b mi: y mnh cc cng ngh v cc c t v kh nng lin kt to iu kin thun tin cho s lin kt cc h thng agent thng minh trong lnh vc thng mi v cng nghip. iu ny c thc hin bng cch tp trung i mi cc truyn thng, lin kt da trn ng ngha mc cao gia cc agent, cc tha thun v tng tc gia cc agent. Qu trnh pht trin ban u ca kin trc tru tng FIPA b dng li khi m hnh kin trc tng th FIPA mi xut hin. Kin trc c cc mc tru tng c nh ngha tt m khng b ph v khi cng ngh thay i. N c s nh x ti cc cng ngh thng c s dng (nh CORBA, JINI) v h tr cc c ch khc nh: vn chuyn thng ip, m ha ni dung v nh ngha r rng v cc thut ng agent Mt m hnh vng i mi dnh cho cc chun cng c chp nhn bao gm 3 pha chnh: khi to, th nghim v chun ha. Giai on th nghim ngha l bn c t phi tri qua qu trnh kim chng da trn ci t. Hai TC mi c thit lp. TC u tin dng gii quyt vn gateway, h tr cho thit b di ng v vn tp hp cc giao thc tng tc to thnh mt nh dng th vin mi. TC th 2 dng pht trin 1 framework ng ngha gii quyt mi lin h gia cc tn hiu bn ngoi v trng thi bn trong v lit k cc hnh ng giao tip (communicative act), giao thc tng tc, hp ng, chnh sch, m hnh phc v v t vng.

Gii thiu Agent v h a agent

12

Trong sut nm 2000 v u nm 2001, mt s c t c xc tin chuyn sang trng thi thc nghim v c xut bn trong tp cc c t FIPA2000. Vic ci t platform da trn nhng ti liu ny tri qua cc cuc th nghim v kh nng tng tc (hay cn gi l bake-off) nh: JADE, FIPA-OS, Zeus. Nm 2002, mt TC c bit, c gi l X2S, c y nhim phi hp tt c cc c t thc nghim c y mnh thnh mt chun. Cui 2002, 25 c t ca FIPA cui cng c thc y sang trng thi chun, chim 56% ca ton b bn c t. 4/2004: S h tr v cng nghip cho vic chun ha cc c t ct li b gim dn, nn FIPA tp trung vo mng giao tip ad hoc, ng ngha, bo mt, dch v, m hnh ha v cc phng php lun. Kt qu ca nhng n lc ny l xy dng c AUML (Agent Unified Modelling Language) v pht trin c mt th vin phn on v tng ng l c s phng php (method base). Cui 2004, t chc FIPA b gin on v thiu kinh ph h tr. T 2005 ti nay: Gia 2005, FIPA c st nhp vi chun IEEE, v gi l FIPA-IEEE. Nhiu nhm lm vic c thit lp tp trung nghin cu cc lnh vc v kh nng lin kt agent v Web service, giao tip agent vi con ngi, agent di ng v agent thng xuyn di chuyn trong mng ngang hng.

Mt s thnh tu ca FIPA: Tp chun c t h tr qu trnh giao tip gia cc agent v cc dch v chnh tng trung gian Mt kin trc tru tng cung cp ci nhn hon thin thng qua cc chun FIPA 2000. Mt ngn ng giao tip agent r rng v c s dng nhiu (FIPA-ACL), km theo mt tp cc ngn ng ni dung (v d nh FIPA-SL) v mt tp cc giao thc chnh p dng t qu trnh trao i thng ip n gin cho n cc qu trnh giao dch phc tp Mt s cng c agent thng mi v ngun m, nh JADE, ngy nay c coi l cng ngh m ngun m tun theo FIPA c s dng rng ri. Ngoi FIPA, c nhiu d n hon thnh nh d n Agentcities to mt mng li cc platform tun theo FIPA v cc dch v ng dng agent Mt m rng ca UML chuyn v agent l AUML c xut

1.2.2 Cc khi nim ct li ca FIPA Trong qu trnh pht trin ca FIPA, nhiu tng lin quan ti agent c xut. Mt s tng tr thnh chun, mt s khc c pht trin nhng cha hon thnh, s cn li b tht bi bi nhiu nguyn nhn no . Cc tng ny u xoay quanh mt s kha cnh chnh l giao tip gia agent, qun l agent, v kin trc agent. Mc ny s tho lun cc khi nim chnh lin quan ti cc kha cnh . 1.2.2.1 Giao tip gia cc agent Cc agent v c bn l mt dng ca cc tin trnh lp trnh phn tn v v vy tun theo khi nim c in ca m hnh tnh ton phn tn bao gm 2 phn: thnh phn (component) v kt ni (connector). Thnh phn l ngi tiu dng, ngi sn xut v ngi trung gian truyn cc thng ip c trao i thng qua kt ni. Cc chun nh ISO v IETF mang cch tip cn hng mng (network-oriented) trong vic pht trin cc ngn xp giao thc c phn lp (layered
Gii thiu Agent v h a agent 13

protocol stack) chim a s trong cc giao tip my tnh (computer communication) chng ta bit ngy nay nh M hnh tham chiu OSI v m hnh TCP/IP. C 2 u c s dng thng qua cc interface ca cc dch v phn mm ci t cc giao thc. Trong sut nhng nm 1990, cc m hnh hng mng c b sung vo cc t chc s dng m hnh hng dch v nh OMG, DCE, WC3, GGF v FIPA. Mt m hnh hng dch v c bn l mt ngn xp giao thc giao tip (communication protocol stack) vi nhiu giao thc ng dng lp con (sub-layer) thay v giao thc ng dng mt lp. M hnh FIPA s c m t mt cch ngn gn nhng u tin chng ta a ra mt s ng cnh b sung. FIPA ACL da trn l thit li ni hnh ng (speech act theory). L thuyt ny ch ra rng cc thng ip biu din cc hnh ng, hoc cc hnh ng giao tip cng c bit n nh l cc hnh ng li ni (speech act) hoc biu hin (performative). Mt v d n gin l cu Tn ti l Ngc khi c ni ra, n s cho bn nhn bit c mt thng tin. Tp 22 biu hin giao tip hnh ng ca FIPA-ACL da trn xut ARCOL ca France Telecom trong mi hnh ng c m t bng cch s dng c dng tng thut ln ng ngha hnh thc da trn logic hnh thc gi l modal logic (Garson, 1984). Logic hnh thc ch r tc ng ca vic gi thng ip ln thi v mt tnh thn ca agent gi v agent nhn. Dng logic ny ph hp vi m hnh BDI hay cn gi l m hnh suy din Belief, Desire, Intention (Rao v Georgeff 1995). Mt s hot ng c s dng chung nht l cho bit (inform), yu cu (request), ng (agree), khng hiu (not understood) v t chi (refuse). Chng ghi li nhng dng thng gp nht trong giao tip c bn v s c miu t trong phn 2.2.3. N c xc nh trong cc chun FIPA c tun theo mt cch y khi agent nhn bt k thng ip giao tip hnh ng FIPA ACL no v t nht l p ng bng mt thng ip not-understood nu thng ip nhn c khng th x l c. Da vo cc kiu giao tip hnh ng ny, FIPA nh ngha mt tp cc giao thc tng tc, mi ci bao gm mt chui cc giao tip hnh ng kt hp cc hnh ng a thng ip, nh mng hp ng (contract net) dnh cho vic thit lp cc tho thun v cc kiu u gi. Mt la chn ca cc giao thc ny c ch r phn 1.2.3 Bn trong cu trc ca mi thng ip, FIPA ACL khng u thc vic s dng mt ngn ng c th no biu din ni dung, mc du nhiu c t dnh cho mt s kiu biu din ni dung nh FIPA SL, FIPA KIF v FIPA RDF c xut. 1.2.2.2 Cc lp con ca FIPA Nh cp trc, ngn xp giao tip FIPA c th c phn chia thnh mt s lp con trong lp ng dng ngn xp OSI hoc TCP/IP. Chng c trnh by chi tit nh di y:

Gii thiu Agent v h a agent

14

Sub-layer 1 (Transport): trong m hnh giao thc phn lp FIPA ACL, giao thc lp con thp nht l giao thc vn chuyn. FIPA nh ngha cc giao thc vn chuyn thng ip (message transport protocol) nh IIOP (IIOP, 1999), WAP (WAP) v HTTP (HTTP) Sub-layer 2 (Encoding): Ngoi vic gi cc thng ip c m ho theo tng byte, FIPA cn nh ngha mt vi cch biu din thng ip s dng cho cc cu trc d liu mc cao bao gm XML, String v Bit Efficient. Bit Efficient d kin s s dng khi giao tip qua cc kt ni bng thng thp. Sub-layer 3 (Messaging): Trong FIPA, cu trc thng ip c xc nh c lp vi vic m ho khuyn khch s linh hot. Kha cnh quan trng mc ny l cc tham s chnh cn thm vo payload hoc ni dng c trao i, v d ngi gi v ngi nhn, kiu thng ip, thi gian p ng. Mt v d ca cu trc thng ip FIPA ACL c a ra trong phn 2.2.3 Sub-layer 4 (Ontology): thut ng ny cha trong payload hoc ni dung ca mt thng ip FIPA c th c tham chiu mt cch r rng sang m hnh khi nim chuyn v mt ng dng c th (application-specific) hoc bn th (ontology). Mc d v bn cht FIPA cho php s dng cc ontology khi biu din ni dung thng ip, nhng n khng ch ra bt k cch biu din no cho cc ontology hoc cung cp cc ontology cho mt lnh vc c th no. N c th tham chiu n cc ontology da trn web nu c yu cu. Sub-layer 5 (Content expression): D liu tht ca cc thng ip FIPA c th c mt dng no , nhng FIPA nh ngha cc hng dn s dng cc cng thc v v t logic chung, v cc php tnh i s kt hp v la chn cc khi nim. Ngn ng thng c s dng nht cho vic biu din ni dung l FIPA SL, v d ca cc cng thc logic bao gm: not, or, implies (ko theo), equiv v v d ca cc ton t i s nh any v all. Sub-layer 6 (Communicative act): vic phn loi thng ip n gin l chia chng thnh cc loi: action hay performative. V d: inform, request v agree. Sub-layer 7 (Interaction protocol or IP): cc thng ip him khi c trao i mt cch ring bit m thng c hnh thnh mt s chui tng tc. FIPA nh ngha mt s giao thc tng tc ch ra cc chui trao i thng ip in hnh nh request (c miu t trong phn 2.2.3), n miu t mt nhm thng ip tham gia vo vic to mt yu cu ti cc agent khc v phn hi l agree hoc refuse.

1.2.2.3 Qun l agent Ngoi giao tip, kha cnh c bn th 2 ca cc h thng agent c cp trong cc c t FIPA ban u l qun l agent: mt nn tng chun trong cc agent tun theo FIPA c th tn ti, hot ng v c qun l. N thit lp m hnh tham chiu logic cho vic to, ng k, nh v,
Gii thiu Agent v h a agent 15

giao tip, di tr v hot ng ca cc agent. M hnh tham chiu qun l agent bao gm cc thnh phn c m t trong Hnh 1.5

Hnh 1.5: Minh ha m hnh tham chiu qun l agent Agent Platform (AP): cung cp c s h tng vt l trong agent c trin khai. AP bao gm cc c ch, cc h iu hnh, cc thnh phn FIPA qun l agent, cc agent v phn mm h tr. Thit k c th bn trong ca AP khng c miu t y. Mt AP n c th tri rng trn nhiu my tnh, cc agent c tr trn cng khng phi t trn cng mt host. Agent: mt agent l mt tin trnh c s dng my tnh. N nm trong AP v thng cung cp mt hoc nhiu dch v c s dng my tnh. Nhng dch v ny c th c xut bn di mt bn miu t dch v. Bn thit k c th ca nhng dch v ny, ngoi vic c bit n nh l kh nng ca agent v khng phi l vn quan tm ca FIPA, ch a ra cu trc v cch m ha cc thng ip a s dng trao i thng tin gia cc agent. Mt agent phi c t nht mt i tng s hu n v phi h tr t nht mt khi nim xc nh ci no c th c miu t bi FIPA Agent Identifier (AID). AID l ci dng gn nhn cho mt agent n c th c phn bit mt cch r rng. Mt agent c th c ng k mt s a ch vn chuyn c th lin h. Directory Facilitator (DF): DF l mt thnh phn ty chn ca AP. N cung cp cc dch v ca cc trang vng cho cc agent khc. N duy tr mt danh sch cc agent ng n, hon chnh v hp thi v phi cung cp cc thng tin ph bin nht v agent trong th mc ca n trn c s khng c s phn bit i x gia tt c cc agent c chng thc. AP c th h tr nhiu DF m nhng DF ny c th ng k cng vi nhau hnh thnh mt lin on. Mi agent mun cng khai cc dch v ca n vi cc agent khc nn tm mt DF thch hp v yu cu ng k bng bn miu t ca agent . Vic ng k khng bao gm cam kt hoc trch nhim ca agent trong tng lai. Cc agent c th yu cu hy ng k bn miu t. Khi , khng cn s cam kt trong hnh vi ca DF i vi nhng thng tin lin quan n agent na. D bt k thi im no vi bt k l do no, mt agent c th yu cu DF sa i bn miu t ca agent . Ngoi ra, agent c th pht i yu cu tm kim ti DF tm bn miu t tha mn iu kin tm kim . DF khng m bo gi tr ca thng tin trong thng ip phn hi yu cu tm kim ca agent. Tuy nhin, DF c th hn ch cc truy cp ti thng tin trong th mc ca n v s xc minh mi quyn truy cp ca nhng agent ang l lc truyn cho n nhng thay i trng thi ca agent . Agent Management System (AMS): AMS l mt thnh phn bt buc ca AP v chu trch nhim qun l cc thao tc ca AP, nh to mi v xa agent, v d on vic n v i ca agent. Mi agent phi ng k vi mt AMS c c AID, ci m sau c gi li lm th mc cho mi agent v trng thi hin ti ca chng (nh active, suspended hay waiting) trong AP. Cc miu t ca Gii thiu Agent v h a agent 16

agent sau c th c sa i bi AMS trong gii hn cho php. Sau khi hy ng k, AID c th b xa v c th dng phc v cc agent khc ang yu cu n. Cc miu t agent cng c th c tm kim trong phm vi ca AMS, v AMS cng l ngi canh gi bn miu t ca AP ci m c th ly c bi yu cu get-description. AMS c th yu cu mt agent thc hin mt chc nng qun l c th nh kt thc qu trnh thc thi ca n, v c quyn lm cho thao tc c hiu lc nu yu cu b b qua. Ch mt AMS n mi c th tn ti trong mi AP v nu AP tri rng trn nhiu my, AMS cng c quyn trn tt c cc my . Message Transport Service (MTS): l mt dch v c cung cp bi AP vn chuyn cc thng ip FIPA-ACL gia cc agent trong mt AP v gia cc agent trong cc AP khc nhau. Cc thng ip cung cp mt tem vn chuyn cha tp cc tham s chi tit nh ngi nhnCu trc chung ca thng ip nh sau:

Hnh 1.6: Cu trc thng ip FIPA 1.2.2.4 Kin trc tru tng Ngoi vic giao tip v qun l agent, gia nm 2000 v 2002 mt kin trc agent tru tng c to ra v chun ha lm phng tin trnh s nh hng ca nn tng ci t ln c t ct li. iu ny c c bng cch tru tng ha cc kha cnh chnh ca cc c ch quan trng nht nh vn chuyn thng ip v cc dch v trong th mc thnh mt c t thng nht. Mc tiu chnh ca cch ny l cho php vic to ra cc h thng c tch hp mt cch nhun nhuyn trong mi trng tnh ton ca chng trong khi vn tng tc vi cc h thng agent ang c tr trong cc mi trng ring bit. Cc h agent c xy dng theo cc c t ban u ca FIPA 97 v FIPA 98 c th tng tc vi cc h agent khc c xy dng theo kin trc tru tng thng qua cc cng (gateway) vn chuyn vi mt s hn ch. Kin trc FIPA2000 l mt nh x gn gi hn v cho php tng tc mt cch y thng quang cc gateway. V kin trc tru tng cho php to nhiu th hin r rng, nn n cng cung cp cc c ch cho php cc th hin c th tng tc vi nhau nh chuyn i gateway cho c vic vn chuyn v m ha. Kin trc ny c t cu trc thng ip ACL, vn chuyn thng ip, cc dch v trong th mc ca agent v cc dch v trong th mc ca dch v nh bt buc (mandatory).

Gii thiu Agent v h a agent

17

1.2.3 Mt s c t FIPA chnh FIPA c 25 c t chun, vi hn 14 c t thuc giai on th nghim, 3 c t thuc giai on s khai. Trong phn ny chng ta s lm sng t mt s c t chnh chun theo th t logic ch khng theo th t nh s. 1.2.3.1 c t kin trc tru tng (SC00001) Nh tho lun t trc, kin trc tru tng FIPA cung cp nhng im tham chiu chung v khng thay i dnh cho vic ci t theo FIPA sao cho gi c nhng c tnh ct yu v ni bt ca h agent trong khi vn cung cp mt s s c lp t nhng thay i nh lp i lp li m c th tc ng ln tp c t c bn ca FIPA2000. Kin trc c nh ngha mt mc tru tng sao cho cc agent c th tn ti v giao tip vi nhau bng cch t ng k v trao i thng ip. Cc Agent giao tip bng cch trao i cc thng ip biu din cc li ni hnh ng (speed act) v c m ha bng ngn ng giao tip ca cc agent. Cc dch v cung cp dich v h tr (support service) cho agent v bao gm cc dch v chun (standard service) ca dch v ch dn (directory service), dch v vn chuyn thng ip (message transport service) v dch v ch dn dch v (service directory service). Kin trc nu r cc dch v uc biu din nh th no bng cch ch ra rng chng c th c ci t nh cc agent hoc nh phn mm (c truy nhp thng qua li gi hm bng cch lp trnh). Agent cung cp dch v b rng buc trong cc hnh vi ca n nhiu hn so vi cc agent mang nhim v chung. c bit, nhng agent ny c yu cu duy tr ng ngha ca cc dch v. iu ny ngha l nhng agent ny khng mc t ch thng thng ca agent. Chng khng th ty t chi cung cp dch v. Mt vi iu quan trng nht c ch ra trong kin trc tru tng FIPA l: Thng ip agent l khun dng truyn thng nn tng gia cc agent. Cu trc ca mt thng ip l mt tp cc gi tr kha c vit trong FIPA-ACL. Ni dung ca thng ip c din t trong ngn ng ni dung, nh FIPA-SL hoc FIPA-KIF, v din t ni dung c th c nhm bi ontologies tham chiu n. Thng ip c th cha cc thng ip khc mt cch quy bn trong ni dung ca chng v phi c m ha thnh mt payload v mt phong b thng ip vn chuyn s dng mt giao thc c th no . Mt dch v vn chuyn thng ip c nh ngha l cc phng tin gi v nhn thng ip vn chuyn gia cc agent. N c coi l khng th thiu ca cc h agent tun theo FIPA Mt dch v ch dn agent c nh ngha l mt kho thng tin chia s m cc agent c th a ra cc bn ghi (entry) trong th mc ca n v cng l ni m chng c th tm kim cc entry trong th mc nu mun. y c l thnh phn quan trng ca cc h agent tun theo FIPA.
18

Gii thiu Agent v h a agent

Mt dch v th mc cc dch v uc nh ngha l mt kho chia s m cc agent v cc dch v c th tm kim cc dch v. Cc dch v bao gm: cc dch v vn chuyn thng ip, dch v th mc agent, dch v gateway v b m lu tm thng ip. Mt dch v th mc dch v c th c s dng cha miu t dch v ca c dch v hng ng dng, nh cc dch v thng mi v hng nghip v. y c coi l thnh phn khng th thiu ca cc h agent tun theo FIPA.

1.2.3.2 FIPA-ACL - c t kin trc thng ip (SC00061) Mt thng ip FIPA-ACL cha mt tp mt hoc nhiu tham s ca thng ip. Nhng tham s cn thit cho truyn thng agent hiu qu s khc nhau ty theo tng tnh hung; tham s duy nht khng th thiu trong tt c thng ip ALC l performative, mc d ngi ta mong i rng hu ht thng ip ACL cng s cha cc tham s: sender, receiver v content. Cc tham s ca thng ip FIPA-ACL c a ra bng 2.1 m khng cp ti cc kiu m ha c th. FIPA nh ngha ba kiu m ha c th: String (k hiu EBNF), XML v Bit-Eficient. Cc tham s thng ip m ngi dng nh ngha cng c th c a vo bng cch thm vo ng trc tham s chui X- Bng 1.1: Cc tham s ca thng ip ACL Tham s Performative Sender Receiver Reply-to Content Language Encoding Ontology Gii thiu Kiu hot ng truyn thng ca thng ip Ch ra ngi gi thng ip Ch ra ngi nhn mong mun ca thng ip Agent no s c chuyn thng ip ti ngay sau trong lung hi thoi Ni dung ca thng ip Ngn ng m tham s ni dung c biu din M ha ca ni dung thng ip Tham chiu n mt ontology a ra ngha cc k t trong ni dung thng ip Giao thc tng tc c s dng xy dng nn cuc hi thoi nh danh duy nht ca lung hi thoi

Protocol Conversaton-id

Gii thiu Agent v h a agent

19

Reply-with In-reply-to Reply-by

Mt cch din t c s dng bi agent phn ng ch ra thng ip Tham chiu n hnh ng trc m thng ip p li n Thi gian/ngy xc nh thi im m thng ip phn hi s nhn c

y l v d n gin ca mt thng ip FIPA-ACL biu din yu cu: (request :sender (agent-identifier :name alice@mydomain.com) :receiver (agent-identifier :name bob@yourdomain.com) :ontology travel-assistant :language FIPA-SL :protocol fipa-request :content ""((action (agent-identifier :name bob@yourdomain.com) (book-hotel :arrival 15/10/2006 :departure 05/07/2002 ... ) ))"" ) 1.2.3.3 c t th vin communicative act ca thng ip FIPA-ACL (SC00037) FIPA-ACL nh ngha truyn thng mc chc nng hoc hnh ng, c gi l hnh vi truyn thng (communicative act: CA), c thc hin bi hnh ng giao tip. Chun ny cung cp th vin cc CA c xc nh bi FIPA. Tp CA c chun ha bi FIPA c lit k bng 1.2. Nhn chung CA c da trn l thuyt hnh ng li ni (Searle, 1969). L thuyt ny nh ngha chc nng ca cc hnh ng n gin. Nhng chc nng ny c chi tit ha trong c t th vin CA ca FIPA (FIPA37) v d nh: interrogatives ngha l truy vn thng tin, exercitives ngha l yu cu hnh ng c thc hin, referentials ngha l chia s nhng nhn nh v mi trng, phatics ngha l thit lp, gia hn hoc ngt qu trnh truyn thng, paralinguistics ngha l lin kt mt thng ip vi nhiu thng ip khc, v expressives ngha l din t thi , d nh v nim tin. Mt thng ip c th c thc hin mt vi chc nng cng mt thi im. V d Agree c miu t l hnh ng chp nhn thc hin mt s hnh ng trong tng lai. Vic ny c tnh cht phatics theo ngha ng tin hnh v c tnh cht paralinguistics theo ngha cp n mt CA FIPA khc; Agree ch yu c coi l mt chc nng c tnh cht phatics. Tt c cc CAs ca FIPA vn h tr cc chc nng din t nh l mt chc nng ph v chng c nh ngha di mt dng phng thc logic hnh thc biu din thi , d nh v nim tin. Ngoi ra, mi CA ca FIPA c th tham chiu n cc khi nim c nh ngha bi mt ontology.
Gii thiu Agent v h a agent 20

Bng 1.2: Cc kiu hnh ng giao tip ca FIPA Communicative act Accept proposal M t Hnh ng ca s chp nhn xut c trnh trc thc hin mt hnh ng Hnh ng chp nhn thc hin hnh ng no , c th trong tng lai. Hnh ng ca mt agent thng bo vi agent khc rng agent u tin khng c nh agent th hai thc hin hnh ng na. Hnh ng yu cu cc xut thc hin mt hnh ng cho trc. Bn gi thng bo cho bn nhn rng mt mnh cho trc l ng, ci m bn nhn bit c l khng chc chn v n. Bn gi thng bo cho bn nhn rng mt mnh cho trc l sai, ci m bn nhn khng tin, hoc tin rng n ng. Hnh ng bo agent khc rng mt hnh ng c c gng thc hin nhng b tht bi Bn gi thng bo cho bn nhn rng mt xut cho trc l ng. Mt hnh ng ln cho hnh ng ca agent thng bo cho ngi nhn l xut cho trc c ng hay khng. Mt hnh ng ln cho php bn gi thng bo cho bn nhn mt i tng no tin tng vo bn gi tng ng vi mt m t c th, v d nh mt tn Bn gi ca hnh ng i thng bo cho bn nhn j l n cm nhn thy rng j thc hin mt vi hnh ng, nhng rng i khng hiu j lm nhng g. Mt trng hp ph bin l i ni vi j rng i khng hiu thng ip j gi cho i. Bn gi d nh rng bn nhn i x vi thng ip c nhng vo khi c gi trc tip ti bn nhn, v mun bn nhn nhn ra cc agent biu hin bng bi mt miu t cho trc v gi thng ip progagate
21

Agree

Cancel

Call for proposal Confirm

Disconfirm

Failure

Inform Inform If

Inform Ref

Not Understood

Propagate

Gii thiu Agent v h a agent

nhn c cho h. Propose Hnh ng trnh mt xut thc hin mt hnh ng no vi mt s tin iu kin no . Bn gi mun bn nhn chn cc agent ch c biu th bng mt s m t c sn v gi mt thng ip nhng vo chng. Hnh ng hi agent khc xem xut c a ra c ng hay khng Hnh ng hi agent khc v i tng c tham chiu n bi mt biu thc tham chiu. Hnh ng t chi vic thc hin mt hnh ng cho trc, v gii thch l do t chi. Hnh ng bc b mt xut thc hin mt s hnh ng trong qu trnh thng lng Bn gi yu cu bn nhn thc hin mt s hnh ng Bn gi mun bn nhn thc hin mt s hnh ng khi mt xut no c a ra trc tr nn ng Bn gi mun bn nhn thc hin mt s hnh ng ngay sau khi mt s xut tr nn ng v sau mi khi xut li tr nn ng Hnh ng yu cu mt d nh lu di thng bo cho bn gi v gi tr ca vic tham chiu, v thng bo li bt c khi no i tng c xc nh bi nhng thay i lin quan.

Proxy

Query If Query Ref

Refuse

Reject Proposal

Request Request When

Request Whenever

Subscribe

1.2.3.4 c t ngn ng ni dung FIPA -SL (SC00008) Ngn ng ng ngha ca FIPA (SL: FIPA Semantic Language) c s dng nh ngha ng ngha cho FIPA CAs nh logic v thi v hnh ng, c hnh thc ha thnh ngn ng logic v t. SL c nh ngha l mt ng php din t bng chui (string expression grammar), c xc nh l ng php con ca c php s-expression (s-expression syntax) chung. Cc cch biu din ni dung l action expressions hoc propositions. Chng c biu din thnh cc cng thc well-formed formulas (wff) gm cc thut ng (constant, set, sequence, functional term, action expression) v cc hng s (numerical constants, string, datetime). Mt well-formed formulas c xy dng t mt cng thc nguyn t bng cch p dng cc ton t modal hoc cc ton t lin kt logic. V d: php ph nh, php hi, php tuyn, php ko theo,
Gii thiu Agent v h a agent 22

php tng ng, php lng t ha tng t, lng tin, d nh, hon thnh, lng rt b (iota), any v all. FIPA xc nh 3 tp hp con ca SL (SL0, SL1 v SL2), mi tp con cung cp mt tp cc ton t khc nhau. FIPA SL1 m rng hn FIPA SL0 bng vic thm vo i s Boolean biu din cc mnh , nh not, and, or. FIPA SL2 m rng SL1 bng vic thm vo ton t logic hnh thc v ton t hnh ng. SL2 cho php logic v t v logic hnh thc nhng b hn ch bi vic chc rng n phi c kh nng quyt nh. Cc CA khc nhau yu cu s dng cc tp con SL khc nhau, v d queries yu cu s dng ca mt ton t hnh ng done c xc nh trong SL0. Mt cch biu din ni dung FIPA -SL c th c s dng nh ni dung ca 1 thng ip ACL. C 3 trng hp sau: (1) Mt mnh , trong c th c gn mt gi tr chn l trong ng cnh cho trc. Mt mnh c s dng trong thng ip CA inform v CAs khc c dn xut t n. (2) Mt hnh ng c th c thc hin. Mt hnh ng c th l mt hnh ng ring l hoc mt hnh ng gp c xy dng bi cc ton t chui v ton t thay th. Mt hnh ng c s dng nh l mt biu thc ni dung khi hnh ng l request v cc CAs khc dn xut t n. (3) Mt biu thc tham chiu (reference expression) c xc nh l mt i tng trong min. y l ton t tham chiu v c s dng trong hnh ng inform-ref v cc CAs dn xut t n. Mt v d n gin sau s miu t mt s tng tc gia agent A v B s dng ton t iota, trong agent A c c s tri thc sau KB = {P(A),Q(1,A),Q(1,B)}. Ton t iota gii thiu mt phm vi cho biu thc cho trc, trong xc nh mt nh danh (identifier). Biu thc (iota x (Px)) c th c l cc x sao cho P x ng. Ton t iota xy dng cho cc thut ng biu din cc i tng trong mt min. (query-ref :sender (agent-identifier :name B) :receiver (set (agent-identifier :name A)) :content "((iota ?x (p ?x)))" :language fipa-sl :reply-with query1) (inform :sender (agent-identifier :name A) :receiver (set (agent-identifier :name B) :content " ((= (iota ?x (p ?x)) alpha)) " :language fipa-sl :in-reply-to query1)

Gii thiu Agent v h a agent

23

i tng duy nht tha mn mnh P(x) l alpha, do vy, thng ip query-ref c phn hi bng thng ip inform nh trn. 1.2.3.5 c t giao thc yu cu tng tc (SC00026) Trong biu trnh t trong Hnh 1.7, giao thc yu cu tng tc (IP) cho php mt agent Initiator (agent khi to) yu cu agent khc (Participant) thc hin mt hnh ng. Participant x l cc yu cu v a ra mt quyt nh chp nhn (accept) hay l t chi (refuse) yu cu.

Hnh 1.7: Giao thc yu cu tng tc

Nu iu kin ch ra rng mt tha thun r rng l cn thit (ngha l, notification necessary c gi tr true), khi Participant a ra mt thng ip agree. Tha thun ny l ty chn, n ph thuc vo tng trng hp, v d, nu hnh ng c yu cu rt nhanh v c th xy ra trc thi gian xc nh trong tham s reply-by. Mt khi yu cu c ng , Participant phi phn hi bng mt trong cc trng hp sau: failure nu n lc thc hin yu cu b tht bi inform-done nu n thc hin thnh cng yu cu v mun ch ra rng n hon thnh inform-result nu n mun ch ra rng n hon thnh v thng bo kt qu cho Initator.

Bt k tng tc no s dng giao thc tng tc ny u c xc nh l duy nht, tham s conversation-id khng null, c gn bi Initiator v c thit lp trong cu trc thng ip ACL. Cc agent lin quan n s tng tc phi gn th nh danh cuc hi thoi vo tt c cc gi tin. iu ny cho php mi agent qun l cc chin lc v cc hot ng truyn thng ca n; v d, n cho php mt agent xc nh cc hi thoi c nhn v suy lun thng qua cc ghi chp lch s v cc hi thoi.
Gii thiu Agent v h a agent 24

Ti bt k im no trong IP (interaction protocol), bn nhn c th cho bn gi bit rng n khng hiu ci g c truyn thng. iu ny c thc hin bng cch gi tr v gi tin not-understood. Hnh 1.7 khng miu t giao tip not-understood v n c th xy ra ti bt k im no trong IP. Truyn thng ip not-understood trong mt giao thc tng tc c th chm dt ton b IP v vic chm dt tng tc m ch rng bt k cam kt no to ra trong sut qu trnh tng tc u l null v void. Ngoi ra, ti bt k im no trong IP, Initiator c th hy b tng tc bng cch khi to giao thc Cancel Meta-Protocol nh trong Hnh 1.8. Tham s conversation-id ca tng tc cancel chnh l tham s conversation-id ca tng tc m Initiator d nh hy b. Ng ngha ca vic hy b c hiu mt cch i khi l Initiator khng cn quan tm n vic tip tc tng tc v n nn c kt thc theo mt cch thc chp nhn c cho c Initiator v Participant. Participant thng bo cho Initiator rng tng tc c thc hin bng cch s dng thng ip inform-done hoc ch ra vic hy b b tht bi bng cch s dng thng ip failure.

Hnh 1.8: giao thc Cancel Meta

1.2.3.6 Giao thc tng tc mng hp ng (FIFA Contract Net Interaction Protocol) (SC00026) Mt v d v mt giao thc tng tc phc tp hn, FIPA Contract Net Interaction Protocol (IP) m t trng hp mt agent (Initiator) mun c mt s tc v c thc hin bi mt hay nhiu agent khc (Paticipants) v hn na mun ti u ha mt chc nng m t nhim v . i vi mt cng vic nht nh, bt k mt Participant no cng c th p ng li li ngh; cc Participant cn li phi t chi. Sau cc cuc m phn li tip tc vi cc Participant c xut. Giao thc IP c m t trong Hnh 1.9.

Gii thiu Agent v h a agent

25

Hnh 1.9: Giao thc mng tng tc hp ng Initiator mi cho m li ngh n cc agent khc bng cch pht hnh mt li gi xut (call for proposals CFP) c t nhim v v cc iu kin m Initiator t vo khi thc hin nhim v. Cc Participant tip nhn cfp c coi l cc nh thu tim nng v c kh nng to ra n p ng. Trong s ny, j l cc xut thc hin nhim v, c xc nh l propose CAs. xut ca Participant bao gm cc tin iu kin m Participant ang thit lp cho tc v, c th l chi ph, thi gian khi cng vic s c thc hin Ngoi ra, c i = n - j Participant c th t chi xut. Mt khi deadline tri qua, Initiator nh gi j li xut nhn c v chn cc agent thc hin nhim v; c th c mt agent, mt s agent hoc khng c agent c chn. l agent ca cc xut c chn s c gi mt accept-proposal CA v k agent cn li s nhn c mt reject-proposal CA. Cc xut phi rng buc vo Participant, khi Initiator chp nhn ngh, Participant phi cam kt thc hin nhim v. Mt khi hon thnh nhim v, Participant s gi mt thng bo hon thnh di dng inform-done hoc inform-result cho Initiator. Tuy nhin, nu Participant khng hon thnh nhim v, mt thng ip failure c gi i. Giao thc IP ny yu cu Initiator bit khi no n nhn c mi phn hi. Trong trng hp Participant tht bi khi phn hi thng ip propose hoc refuse, Initiator c kh nng ch i mi mi. chng li iu ny, CFP CA bao gm mt deadline xc nh trong bao lu Initiator s nhn c phn hi. Cc xut nhn c sau thi hn deadline s a ra l do xut n. Deadline c c t bi tham s reply-by trong thng ip ACL.

Gii thiu Agent v h a agent

26

1.2.3.7 c t dch v vn chuyn thng ip (FIFA Message Transport Service) (SC00067) Dch v FIFA Message Transport Service (MTS) cung cp c ch vn chuyn cc thng ip FIPA-ACL gia cc agent s dng giao thc Message Transport Protocol (MTP). Cc agent c lin quan c th nm trong mt AP n hoc trn cc AP khc nhau. Trn mt AP cho trc bt k, dch v MTS c cung cp bi mt knh truyn thng agent (Agent Communication Channel ACC). Mt thng ip c to thnh bi hai phn: mt phong b th (envelope) th hin thng tin vn chuyn v trng ti (payload) bao gm thng ip ACL c m ha ca phin truyn thng agent. Bt k MTP no cng c th s dng mt cch biu din bn trong khc m t mt phong b thng ip, nhng phi th hin cc thut ng ging nhau, biu din cng mt ng ngha v thc hin cc hnh ng tng ng. Mt phong b thng ip bao gm mt tp cc tham s, mi tham s trong s l mt cp tn/gi tr vi cc trng bt buc to, from, date v acl-representation. ACC cung cp mt MTS v chu trch nhim gi v nhn thng ip trn mt AP. ACC phi truyn cc thng ip m n nhn c theo cc hng dn vn chuyn cha trong phong b thng ip v ch c yu cu c phong b thng ip; n khng c yu cu chuyn i payload. Trong vic thc hin nhim v chuyn thng ip, ACC c th c yu cu c c thng tin t AMS hoc DF trn AP ca ring mnh. Mt s ci t ACC c th cung cp mt s dng kh nng b m (buffering capability) gip cc agent qun l thng ip ca chng. Mi ACC ang x l mt thng ip c th thm cc thng tin mi vo phong b thng ip, nhng n khng bao gi c th ghi ln cc thng tin tn ti. Cc ACC cng c th thm cc thng s mi vo mt phong b thng ip c th ghi ln cc tham s c cng tn tham s; c ch lm cho r rng cc entry trong phong b thng ip c c t bi mi c php phong b thng ip c th. Thng ip chuyn tip hnh vi ca mt ACC c xc nh bi nhng hng dn phn phi thng ip c th hin trong phong b thng ip, cc thng s c m t trong Bng 1.3. Ngi nhn thng ip c xc nh trong tham s to ca phong b th v theo mu ca cc AID. Tu thuc vo s hin din ca tham s intended-receiver, ACC chuyn tip thng ip i theo mt trong nhng cch sau: Nu ACC nhn c mt phong b th m khng c mt tham s intended-receiver no, th n t to ra mt tham s intended-receiver mi t tham s to (c th cha nhiu AID). N cng c th to ra nhiu bn sao ca thng ip vi cc tham s intended-receiver khc nhau nu c nhiu bn nhn c ch nh. Trong mi trng hp, ACC c yu cu x l tt c cc entry trong trng tham s to v khng thm v khng bt bt c AID no c cha trong thng ip gc. Cc tham s intended-receiver to thnh mt ng chuyn giao ch ra tuyn ng m mt thng ip s i qua.
27

Gii thiu Agent v h a agent

Nu ACC nhn c mt phong b th vi mt bin intended-receiver, n c s dng cho vic chuyn giao ca th hin ca thng ip v tham s to c b qua.

Bng 1.3: Cc tham s trong phn envelope ca thng ip FIPA


STT 1 2 3 4 5 6 7 8 9 10 To From Comments Acl-representation Payload-length Payload-encoding Date Intended-receiver Received Transport-behaviour Tham s Miu t Tn agent nhn u tin ca thng ip Tn agent gi thng ip Cc ghi ch vn bn Biu din c php ca phn payload ca thng ip Chiu di (s byte) ca phn payload Ngn ng m ha phn payload ca thng ip Ngy thng v thi gian to envelope Tn ca cc agent m thng ip c chuyn ti Tem xc nh agent nhn thng ip theo ACC Cc yu cu vn chuyn thng ip

Nu ACC nhn c thng ip c nhiu tham s intended-reveiver th tham s gn nht c s dng.

Trc khi chuyn tip thng ip, ACC thm tham s received vo phn envelope ca thng ip. Mt khi ACC chuyn tip thng ip, n khng cn phi lu gi bt k ghi chp no v s tn ti ca thng ip na. AID c trong tham s to hoc intended-receiver c th cha nhiu a ch vn chuyn ca mt agent nhn. ACC s dng cc cch sau phn phi thng ip: Th phn phi thng ip n a ch vn chuyn u tin trong tham s addresses; vic a ch u tin c chn th hin rng danh sch cc a ch vn chuyn trong AID c sp xp theo thch. Nu tht bi, do agent hoc AP khng sn sng hoc do ACC khng h tr giao thc vn chuyn thng ip thch hp, th ACC to mt tham s intended-receiver mi cha AID v xa i a ch vn chuyn gy tht bi trn. Sau , ACC c gng gi thng ip n a ch vn chuyn tip theo trong AID trong danh sch bn nhn d nh. Nu vic phn phi vn khng thnh cng khi tt c cc a ch vn chuyn c th (hoc AID khng cn a ch vn chuyn no), ACC c th th quyt nh AID bng cch s dng cc dch v quyt nh tn (name resolution services) c lit k trong tham s resolvers ca AID. Tm li, cc dch v quyt nh tn nn c th theo th t xut hin ca chng.

Gii thiu Agent v h a agent

28

Cui cng, nu tt c cc thng ip c phn phi tht bi th cc thng ip bo li tng ng cho ln tht bi cui cng s c gi tr li agent gi thng ip i. ACC s dng cc quy tc sau trong vic phn phi cc thng ip ti nhiu agent nhn d kin: Nu ACC nhn c thng ip khng c tham s intended-receiver v mt tham s cha nhiu AID, n c th hoc khng tch chng ra to thnh cc thng ip ring. Mi thng ip s cha mt tp con cc agent c tn trong tham s to v intended-receiver. Nu ACC nhn c thng ip c mt tham s intended-receiver cha nhiu AID, n c th hoc khng tch chng ra to thnh cc thng ip ring. Nu ACC tch mt thng ip nh miu t trn th n khng c thm hay bt bt k AID cha no trong thng ip ban u.

Cc thng ip kt qu c x l nh trong trng hp c mt agent nhn. Mt agent c ba la chn khi gi mt thng ip ti agent khc trn AP t xa: Agent A gi thng ip ti ACC cc b ca n s dng mt giao din chun hoc c quyn. Sau ACC tm cch gi thng ip ti ng ACC xa s dng MTP thch hp. Agent A gi thng ip trc tip ti ACC trn AP xa m agent B c tr trn . Sau ACC xa ny s phn phi thng ip ti B. S dng cch ny, agent A phi h tr vic truy cp ti mt trong cc giao din MTP ca ACC. Agent A gi thng ip trc tip ti agent B bng cch s dng c ch truyn thng trc tip. Vic truyn, nh a ch, lu tm thng ip v cc thng ip li phi c x l bi agent gi v agent nhn. Ch truyn thng ny khng c miu t bi FIPA.

Cui cng, vic miu t qu trnh vn chuyn l mt phn ca AP v c biu din trong fipas10. Miu t qu trnh vn chuyn sau y l dnh cho AP, ci m h tr vn chuyn da trn IIOP v HTTP. (ap-description :name myAPDescription :ap-services (set (ap-service :name myIIOPMTP :type fipa.mts.mtp.iiop.std :addresses (sequence corbaloc:iiop:agents.fipa.org:10100/acc IOR:00000000002233 corbaname::agents.fipa.org:10000/nameserver#a cc) ) (ap-service :name myHTTPMTP :type fipa.mts.mtp.http.std :addresses (sequence
Gii thiu Agent v h a agent 29

http://agents.fipa.org:8080/acc) ) ) ) 1.2.4 Lin quan gia FIPA v JADE Nh rng FIPA da trn nguyn l l ch c t cc hnh vi bn ngoi ca cc thnh phn trong h thng, b qua kin trc v chi tit ci t bn trong. iu ny m bo s kt ni lin mch gia cc nn tng bin dch y . JADE tun theo quan im ny ch n m bo tnh tng thch trn vn vi c t FIPA2000 (truyn thng, qun l v kin trc) c t ny cung cp mt framework chun trong cc agent c th tn ti, vn hnh v giao tip trong khi vn chp nhn mt kin trc bn trong thng nht v c quyn v chp nhn ci t cc dch v v cc agent chnh. JADE tt nhin ch l mt trong cc nn tng ng dng v d n c tnh cng tc v agent tun theo cc chun ca FIPA. Vic tun theo ny c kim tra thng qua mt s s kin: cuc kim tra tnh tng kt ca FIPA nm 1999 v 2001, d n Agentcities. V mt bao ph ca cc chun ca FIPA, JADE ci t hon chnh c t qun l agent bao gm cc dch v: AMS, DF, MTS v ACC. Thng qua vic s dng v th nghim, cc dch v ny c m rng vi vic b sung cc tnh nng, nhng ct li vn tun th theo FIPA. JADE cng ci t hon chnh ngn xp giao tip agent nh FIPA-ACL dnh cho cu trc thng ip, FIPA-SL dnh cho din t ni dung thng ip, ngoi ra cn h tr nhiu giao thc vn chuyn v tng tc ca FIPA. Mt v d chng t JADE vn tip tc cc chun ca FIPA l c ch vn chuyn ca JADE. C ch ny h tr tt c cc thao tc c th, c kh nng thch nghi vi mt kiu kt ni bng cc chn giao thc sn c tt nht tng ng vi tnh hung s dng c th. Mt s kha cnh b sung vo cc chun ca FIPA nh mt s giao thc tng tc c bit hn v cc cng vic khng c chun ha nh dch v ontology c pht trin cho JADE thm ch cc lp trnh vin c th tm thy mi cng c v tru tng ha cn thit ci t chng. Tuy nhin, c nhiu thnh phn ca JADE vt qu cc c t ca FIPA. V d, JADE cung cp kin trc b cha phn tn, kin trc dch v ni b, phn phi thng ip lu di, framework ng ngha, cc c ch bo mt, h tr tnh di ng ca agent, tng tc web-service, giao din haRt nhiu trong s chng c miu t trong cun sch ny v chng l nhng kha cnh rt quan trng trong cc h hng agent m FIPA cha cp n. Do vic h tr m ngun m t cng ng ngi dng v t nn cng nghip m ngy nay JADE c coi l framework v agent m ngun m hng u tun theo FIPA.

Gii thiu Agent v h a agent

30

CHNG 2 GII THIU JADE


Chng ny cung cp mt ci nhn tng quan v nn tng JADE v cc thnh phn chnh to thnh kin trc ca n. Ngoi ra, chng ny cn hng dn cch chy JADE bng dng lnh v bng giao din ha. 2.1 TM TT LCH S CA JADE Nhng phn mm pht trin u tin, cui cng tr thnh nn tng JADE, c bt u xy dng bi Telecom Italia (vit tt l CSELT) cui nm 1998, do cn sm c s xc nhn cc c t k thut FIPA. Ban u nhm pht trin khng hon ton mong i t c mc tiu pht trin mt nn tng song nh c s h tr ti chnh ca y ban Chu u v s nhit tnh cng nh nng lc ca i (vo thi gian c Fabio Bellifemine, Agostino Poggi v Giovanni Rimassa), nn quyt nh n gin ha vic xc minh cc c t ca FIPA pht trin mt nn tng chung y . Vi quan im l cung cp cc dch v cho ngi pht trin ng dng v d dng s dng c v truy cp c cho c nhng ngi pht trin lu nm v ngi mi c t hoc khng c cht kin thc no v nhng c t ca FIPA. JADE c bit nhn mnh vo s n gin v tin dng ca cc phn mm API. JADE tr thnh m ngun m t nm 2000 v c phn phi bi Telecom Italia theo giy php LGPL. Giy php ny m bo tt c cc quyn c bn to thun li cho vic s dng phn mm c trong cc sn phm thng mi: quyn lm bn sao ca phn mm v phn phi cc bn sao, quyn c truy cp m ngun, v quyn c thay i m v thc hin cc ci tin ca n. Khng ging nh GPL, giy php LGPL khng t bt k hn ch s dng phn mm JADE, n cho php c quyn s hu phn mm kt hp vi phn mm bn quyn bi LGPL. Mt khc, giy php cng i hi rng bt k cng vic dn sut t JADE, hoc bt k cng vic no da vo n, s c tr li cng ng vi cng mt loi giy php. JADE c mt website, http://jade.tilab.com, t cc phn mm, ti liu, m ngun v d, v rt nhiu thng tin v cch s dng ca JADE u c sn. D n hoan nghnh s tham gia ca cng ng m ngun m vi nhiu cch thc tham gia v ng gp cho d n, chng u c chi tit ha trn trang web, v d:

Gii thiu JADE

34

Gi email jade-contrib@avalon.tilab.com vi mt m t cng khai cc trng hp s dng ca bn cho JADE, cc d n nghin cu hoc cc kha hc s dng JADE, hoc bt k hi tho hoc s kin cng khai c th c ch cho cng ng JADE. Tham gia vo cc cuc tho lun trong JADE mailing lists bng cch tr li v a ra h tr cho ngi dng t kinh nghim hn. Hm th: jade-develop@avalon.tilab.com tho lun v cc vn v tng lin quan n vic s dng v pht trin ca JADE, v jadenews@avalon.tilab.com c s dng bi cc qun tr vin d n thng bo cho cng ng v nhng bn phn mm mi pht hnh v cc s kin lin quan n JADE. Cung cp cc bo co li v khi no c th sa li. ng gp nhng add-on mi v cc module phn mm s dng bi cng ng.

to iu kin tham gia tt hn, thng 5 nm 2003 Telecom Italia Lab v Motorola Inc, a ra mt tha thun hp tc v thnh lp y Ban Qun L JADE, mt t chc phi li nhun ca cc cng ty quan tm ng gp cho s pht trin ca JADE. y ban c thnh lp nh l mt tp hp ca cc tha thun vi cc quy nh qun l tt cc quyn v ngha v nhm mc ch to ra IPR. T chc l m vi cc thnh vin c th tham gia v ri khi ty theo nhu cu ca h. Hin thi Telecom Italia, Motorola, France Telecom R&D, Whitestein Technologies AG v Profactor GmbH tr thnh thnh vin ca y ban. Khi JADE ln u tin c cng b bi Telecom Italia, n c s dng hu nh ch bi cng ng FIPA nhng khi tch hp cc chc nng li vt xa cc chi tit k thut FIPA. Do n c s dng bi mt cng ng cc nh pht trin c phn phi trn ton cu. JADE gp phn ph bin rng ri cc chi tit k thut bi vic cung cp mt tp tru tng ha phn mm v cc cng c n cc c trng ca chng; nhng ngi lp trnh c th thc thi ty theo cc chi tit k thut m khng cn phi nghin cu chng. Chng ta xem y l mt trong nhng im mnh ca chnh JADE i vi FIPA. Mt trong nhng phn m rng ca li JADE c cung cp bi LEAP, mt d n ti tr mt phn bi y ban chu u gp phn ng k t nm 2000 v 2002 nhm hng JADE ti Java Micro Edition v mi trng mng khng dy. Cng vic ny c dn dt bi Giovanni Caire. Ngy nay, n c dng nh mt JADE run-time cho cc nn tng J2ME-CLDC v J2ME-CDC, v n c s dng gii quyt cc vn v thch thc t ra trong vin thng di ng, y c coi l mt trong nhng tnh nng hng u ca JADE. 2.2 JADE V M HNH AGENT JADE l mt nn tng phn mm cung cp chc nng c bn cho tng gia, c lp vi cc ng dng c th v n gin ha vic thc hin ca cc ng dng phn tn nhng ng dng khai thc s tru tng ca cc agent phn mm. Mt c im y ngha ca JADE l n thc thi

Gii thiu JADE

35

s tru tng ny trn ngn ng hng i tng, Java, cung cp mt API n gin v thn thin. Nhng la chn thit k n gin u b nh hng bi s tru tng ca agent. Mt agent c tnh t ch v hng ch: mt agent khng th cung cp cc call-back hoc tham chiu i tng ca chnh n ti cc agent khc lm gim i c hi iu khin ca cc thc th ln cc dch v ca n. Mt agent phi c lung thc thi ca chnh n, s dng n iu khin vng i ca n v t ch quyt nh khi no thc thi cc hnh ng. Cc agent c th ni khng, v chng c gn kt lng lo: Vic giao tip khng ng b da trn thng ip l hnh thc giao tip c bn gia cc agent trong JADE; mt agent mun giao tip phi gi thng ip n mt im c xc nh (hoc thit lp cc im n). Vic ny khng ph thuc vo thi gian gia ngi gi v ngi nhn: mt ngi nhn c th khng c mt khi ngi gi gi thng ip n. Cng khng cn phi ly tham chiu i tng ca agent nhn m cn c cc nh danh tn h vn chuyn thng ip c th da vo chuyn thng ip n ng a ch. Thm ch bn gi c th khng cn bit v nh danh ca bn gi, n c th nh ngha mt danh sch bn nhn s dng intentional grouping (nhm ngi nhn d kin) hoc s dng mt proxy agent trung gian. Hn na, dng thc giao tip ny cho php bn nhn c quyn la chn thng ip s x l hay loi b, cng nh c quyn xc nh cc mc u tin x l ca chnh n (VD: c tt c thng ip n t min book.it u tin). Cch truyn thng ny cn cho php bn gi c th iu khin lung thc thi ca n v nh vy khng b kha cho n khi bn nhn x l thng ip. Cui cng, cch truyn thng ny cn c mt u im ng ch khi ci t truyn thng qung b (multi-cast) nh mt hnh ng nguyn t ch khng gi N phng thc lin tip nhau (VD: mt hnh ng gi vi mt danh sch gm nhiu bn nhn thng ip thay v mt li gi phng thc ti mi i tng xa m bn mun giao tip vi n). H thng c kiu Peer-to-Peer: mi agent c xc nh bi mt tn ton cc duy nht. N c th tham gia vo v ri khi mt nn tng my ch bt k thi im no v c th nhn ra cc agent khc thng qua c 2 dch v white-page v yellow-page cung cp trong JADE bi AMS v DF m c nh ngha bi FIPA. Mt agent c th l ch th khi to s giao tip ti bt k agent khc trong bt k thi gian no n mong mun v tng t n c th l i tng cc agent khc khi to giao tip n bt k thi im no. Trn c s nhng la chn thit k ny, JADE c ci t cung cp cho cc nh lp trnh cc chc nng ct li sn sng s dng v d dng ty bin sau y: Mt h thng hon ton phn tn m cc agent c tr trn , mi agent hot ng nh l mt lung ring bit, v c kh nng giao tip mt cch trong sut vi agent khc. V d, nn tng cung cp mt API c lp v v tr duy nht m c th tru tng ha c s h tng giao tip bn di.

Gii thiu JADE

36

Tun th y cc c t ca FIPA. Nn tng tham gia thnh cng vo tt c cc s kin phi hp hot ng ca FIPA v c s dng nh l tng gia ca nhiu nn tng trong mng li Agentcities. iu ny to nn s ng gp ln lao ca i JADE vo qu trnh chun ha ca FIPA. Phng tin vn chuyn hiu qu ca cc thng ip khng ng b thng qua mt API trong sut v v tr. Nn tng la chn cc phng tin sn c tt nht ca truyn thng v khi c th, trnh s sp xp theo th t hoc khng theo th t cc i tng Java. Khi i qua ranh gii nn tng, cc thng ip t ng c bin i t cch biu din bng Java bn trong ca JADE sang cc c php tun theo FIPA, cch gii m v cc giao thc vn chuyn. Thc thi c 2 dch v white-page v yellow-page. H thng c th c ci t biu din cc min v cc min con nh mt th cc th mc. Qun l vng i agent n gin nhng hiu qu. Khi cc agent c t ng gn mt nh danh ton cc duy nht v mt a ch vn chuyn c s dng ng k vi dch v white-page ca nn tng. Cc API n gin v cc cng c ha cng c cung cp qun l vng i agent va t xa v va cc b, nh to, nh ch, phc hi, ng bng, tan bng, di chuyn, lp li v xa. Cung cp tnh di ng ca agent. C m v trng thi ca agent u c th di chuyn gia cc tin trnh v cc my. S di chuyn ca c to ra cc agent giao tip mt cch trong sut m c th tip tc tng tc thm ch l trong sut qu trnh di chuyn. Mt c ch t trc (subscription) cho mi agent, v thm ch l c cc ng dng bn ngoi, m mun ng k vi mt nn tng c thng bo v tt c cc s kin ca platform, bao gm cc s kin c lin quan n vng i v cc s kin trao i thng ip. Mt tp cc cng c ha h tr ngi lp trnh khi debug v monitor. Chng c bit quan trng v phc tp trong cc h thng a lung, nhiu tin trnh, nhiu my v d nh mt ng dng JADE in hnh. H tr cc Ontology v cc ngn ng ni dung. Vic kim tra ontology v vic m ha ni dung c thc hin t ng bi nn tng, cc nh lp trnh c th la chn cc ngn ng ni dung v ontologies yu thch. Nhng ngi lp trnh cn c th ci t nhng ngn ng mi thc hin cc yu cu ng dng c th. Mt th vin ca cc giao thc tng tc: m hnh cc mu c trng ca truyn thng nhm t c mt hoc nhiu mc ch. Cc skeleton c lp vi ng dng l mt tp cc lp Java c sn v c th ty chn. Cc giao thc tng tc cng c th c th hin v c ci t nh mt tp cc my trng thi ng thi.
37

Gii thiu JADE

S tch hp vi cc cng ngh khc nhau da trn Web bao gm cc cng ngh JSP, Servlet, applet v Web Service. Nn tng cng c th c cu hnh mt cch d dng xuyn qua tng la. H tr nn tng J2ME v mi trng khng dy. JADE run-time c th dng cho cc nn tng J2ME CDC v J2ME-LCDC thng qua mt tp khng i ca cc API che ph c 2 mi trng J2ME v J2SE. Mt giao din tin trnh bn trong (in-process) cho vic khi chy v vic iu khin mt platform v cc thnh phn phn tn ca n t mt ng dng bn ngoi. Mt nhn c th m rng c thit k cho php nhng ngi lp trnh m rng cc chc nng ca nn tng thng qua vic b sung cc dch v phn tn mc nhn. C ch ny xut pht t phng php lp trnh hng giao din trong cc giao din thnh phn khc nhau c th kt hp vo trong m ng dng v c sp xp mc nhn. duy tr kh nng tng thch vi mi trng J2ME ni m khng h tr lp trnh hng kha cnh (aspect-oriented), JADE s dng mt cch tip cn lc gp c bit (composition filter) c miu t trong chng sau.

2.3 KIN TRC JADE Hnh 2.1 ch ra cc thnh phn kin trc chnh ca JADE platform. Mt JADE platform bao gm cc khung cha agent (agent containers), c th c phn tn trn mng. Cc agent sng trong khung cha l cc tin trnh Java, cung cp JADE run-time v tt c cc dch v cn cho vic lu tr v thc thi cc agent. C mt khung cha c bit, c gi l khung cha chnh (main container), th hin nt ni bt ca platform: N l khung cha u tin c khi chy v tt c cc khung cha khc phi ng k gia nhp vo khung cha chnh. Biu UML trong hnh 2.2 miu t quan h gia cc thnh phn kin trc chnh trong JADE. Ngi lp trnh s dng tn logic xc nh cc khung cha; mc nh, khung cha chnh c gi l Main Container trong khi cc khung cha khc c tn ln lt l Container1, Container-2,Cc dng lnh khc nhau sn c thay i cc tn mc nh . Main container c nhng nhim v c bit sau: Qun l bng khung cha (container table - CT), ni ng k cc tham chiu ca i tng v cc a ch giao dch ca tt cc khung cha c trong platform; Qun l bng miu t agent cc b (Global agent descriptor table -GADT), l ni ng k ca tt c cc agent trong platform, bao gm c trng thi hin ti v v tr ca chng Hosting AMS v DF, hai agent c bit cung cp vic qun l agent (agent management) v dch v trang trng (white page service), v dch v trang vng mc nh ca platform (default yellow page service).

Gii thiu JADE

38

Hnh 2.1: Cc thnh phn kin trc chnh

Hnh 2.2: quan h gia cc thnh phn kin trc chnh Mt cu hi thng gp l liu khung cha chnh c phi l nt tht c chai (bottleneck) ca h thng khng. Cu tr li l khng, v JADE cung cp mt b nh cho GADT mi container qun l cc b. Thng thng, cc hot ng ca platform, khng lin quan ti khung cha chnh, m ch lin quan ti b nh cc b v hai khung cha lu tr cc agent - l ch th v i tng ca hot ng (v d, ngi gi v ngi nhn thng ip). Khi mt khung cha mun tm ra ni m agent nhn thng ip c ng, u tin n tm kim trong LADT ca n (Local agent descriptor table), nu vic tm kim khng a li kt qu, th khung cha chnh c lin h ly tham chiu t xa ph hp, sau tham chiu ny c lu vo LADT s dng sau ny. V h thng l ng (cc agent c th c ng, chm dt, hay agent mi c th xut hin), nn i khi chng c th s dng mt gi tr nh x c c t mt a ch v gi tr. Trong trng hp ny, khung cha nhn mt ngoi l v buc phi lm mi li b nh chng li khung cha chnh. Chnh sch thay th ca b nh l LRU (least recently use), c thit k ti u cc cuc m thoi di, khch quan hn l cho cc cuc m thoi trao i thng ip n, ri rc trong cc ng dng a agent.
Gii thiu JADE 39

Tuy nhin, mc d khung cha chnh khng phi l nt tht c chai, nhng n c mt im gy ra li trong platform. qun l iu ny, Jade cung cp dch v Main Replication Service m bo JADE platform vn hot ng mt cch y ngay c trong trng hp main container tht bi. Vi dch v ny, b phn qun tr c th iu khin mc chu ng li ca platform, mc co gin ca platform v mc phn tn ca platform. Mt tng iu khin bao gm mt s th hin phn tn ca khung cha chnh, c th c cu hnh ci t mt h thng phn tn v mt h thng iu khin phn tn. Trong trng hp cc oan, mi khung cha c th c to ra gia nhp Main Replication Server v hot ng nh mt phn ca tng iu khin. nh danh ca agent c cha trong Agent Identifier (AID), gm mt tp cc khe tun th cu trc v ng ngha c a ra bi FIPA. Cc thnh phn c bn nht ca AID l tn agent v a ch ca n. Tn ca agent l nh danh ton cc duy nht m JADE xy dng bng cch kt hp nickname c nh ngha bi ngi dng (c bit nh tn cc b s dng trong giao tip intra-platform) vi tn ca platform. a ch ca agent l a ch giao dch c k tha t platform, mi a ch platform tng ng vi mt im cui MTP (Message Transport Protocol), ni cc thng ip theo chun FIPA c th c gi v nhn. Ngi lp trnh agent cng c php thm cc a ch giao vn ring vo AID, khi h mun t ci t MTP. Khi khung cha chnh c khi chy, hai agent c bit c t ng khi to v c bt u bi JADE, vai tr ca chng c nh ngha bi chun qun l agent ca FIPA (FIPA Agent Management standard): H thng qun l agent (Agent Management System -AMS) l agent qun l ton b platform. N l im kt ni cho tt c cc agent mun tng tc truy cp trang trng ca platform cng nh qun l chu trnh sng ca chng. Mi agent phi ng k vi AMS (c thc hin mt cch t ng bi JADE lc agent khi to) c mt AID hp l. Thng tin chi tit v AMS c trnh by sau ny. Directory Facilitator (DF) l agent trin khai dch v trang vng, c s dng bi cc agent khi chng mun ng k cc dch v ca chng hoc tm kim cc dch v c sn khc. JADE DF cng chp nhn cc c t t cc agent vi mong mun nhn thng bo bt c khi no c mt dch v c ng k hay sa i. Nhiu DF c th c bt u ng thi phn tn dch v trang vng ti nhiu min khc nhau. Cc DF ny c th c hp nht thnh lin on nu cn thit, bng cch thit lp cc ng k (crossregistration) vi mt DF khc (l DF cho php truyn b cc yu cu ca agent ti ton b lin on .

2.4 BIN DCH V CHY CHNG TRNH Tt c cc phn mm lin quan ti JADE c th c download t trang web ca JADE: http://jade.tilab.com. Phn mm lin quan ti JADE c chia thnh hai mc: phn tn chnh
Gii thiu JADE 40

(main distribution) v tch hp (add ons). C th, phn tch hp (add ons) bao gm cc modun t cha, ci t cc c trng m rng c t. Trong nhiu trng hp, chng khng c pht trin bi i pht trin ca JADE m c pht trin bi cc thnh vin trong cng ng m ngun m. S phn tn chnh (main distribution) bao gm 5 file archive chnh vi cc ni dung sau: jadeBin.zip cha cc file archive tin bin dch ca JADE java sn sng trong trng thi s dng c jadeDoc.zip cha cc ti liu bao gm cc ti liu hng dn cho lp trnh vin hoc ngi qun tr. Ti liu ny cng c trc tuyn trn trang web. jadeExamples.zip cha cc m ngun ca cc v d khc nhau jadeSrc.zip cha tt c cc m ngun ca JADE jadeAll.zip cha tt c 4 file trn.

Nu cc file zip trn c download v gii nn, cu trc th mc s ging nh Hnh 2.3 (ch nhng file v th mc quan trng nht c ch ra). Cc file/th mc quan trng nh: Giy ng k (license), giy ng k m ngun m, quy nh cch s dng ca phn mm. File jade/doc/index.html l im bt u tt nht cho nhng ngi bt u lm quen vi jade, bao gm cc lin kt (link) ti cc chuyn (thematic tutorial), ti liu hng dn cho lp trnh vin v ngi qun tr, ti liu javadoc ca tt c cc m ngun m, cng vi nhiu ti liu h tr khc. Th mc jade/lib cha tt c cc file .jar cha trong CLASSPATH ca java c th thc thi jade. N bao gm th mc con lib/commons- codec, cha cc m 64bit c trong CLASSPATH ca java

Hnh 2.3: Cu trc th mc JADE Th mc jade/src chc 4 th mc con. Th mc Demo cha m ngun ca cc v d n gin. Th mc Examples cha m ngun ca nhiu v d hu ch theo cc phn on khc
41

Gii thiu JADE

nhau v agent. Th mc FIPA cha m ngun ca mt m un c nh ngha bi FIPA. Th mc Jade cha tt c cc m ngun ca chnh n. M ngun ca jade c th c bin dch bng cch s dng cng c ANT. Cc mc tiu ANT quan trng nht l: Jade bin dch cc m ngun v to cc file .class trong th mc con classes. Lib to cc file archive ca java trong th mc con lib Doc to cc file ti liu javadoc trong th mc con doc. Example bin dch tt c cc v d.

Nhng ngi c kinh nghim c th tm thy nhiu hu ch khi truy cp trc tip vo kho m ngun ca cng ng jade tm hiu khi cn thit. N c duy tr v ci thin bi ngi qun tr; cc hng dn v cch truy nhp vo kho m ngun cng c trn website ca JADE. Th mc lib cha 5 file archive, trong cc file c cha lp m JADE cn: jade.jar cha tt c cc gi jade ngoi tr add ons, MTP v cc cng c ha. jadeTool.jar cha tt c cc cng c ha. http.jar cha MTP da trn HTTP, n l MTP mc nh khi platform c khi to. iiop.jar cha MTP da trn IIOP. MTP ny khng c s dng thng xuyn, nhng l i tng nghin cu ca cc v d sau ny v n ci t cc c t MTP IIOP FIPA. commons-codec/commons-codec-1.3.jar cha cc m 64 bit c s dng bi JADE

Th mc classes cha cc file class ca cc v d. Lu , gim kch thc ca cc file phn tn, cc v d c phn tn nh m ngun v do , phi c bin dch trc khi s dng cc cu lnh ant examples. Sau khi download JADE v gii nn vo C, ta to file runjade.bat C vi ni dung sau: java -classpath .;C:\jade\lib\jade.jar;C:\jade\lib\jadeTools.jar;C:\jade\lib\iiop .jar;C:\jade\lib\http.jar;C:\jade\lib\commons-codec\commonscodec-1.3.jar jade.Boot -gui Sau khi chy file runjade.bat ta c kt qu nh Hnh 2.4 Phn u tin hin th thng tin v JADE mi ln n chy. Sau , cc dch v chun ca JADE c khi to. Thng tin chi tit v n c nghin cu tip chng sau. Khi , khung cha chnh, v mt HTTP MTP c khi to mc nh v a ch cc b ca n c hin th. Cui cng l dng thng bo khung cha chnh sn sng hot ng, JADE sn sng s dng.

Gii thiu JADE

42

Hnh 2.4: Kt qu ca vic khi chy JADE Tham s gui c tc ng n vic khi chy giao din ha ca JADE nh hnh 2.5. GUI ny c cung cp bi mt agent h thng ca JADE gi l Remote Monitoring Agent (RMA) v cho php ngi qun tr platform thao tc v qun l platform lc ang chy.

Hnh 2.5: Giao din ca JADE RMA Lu , vic s dng RMA GUI v tt c cc cng c ha khc, c th gy nh hng tiu cc ti hiu nng hot ng ca h thng. y l nguyn nhn ti sao ty chn gui c a ra. Nu hiu nng hot ng l yu, th khng nn s dng RMA GUI lc trin khai. 2.5 CC GI CA JADE Cc gi chnh l: jade.core ci t li ca JADE, mi trng thi gian chy phn tn h tr ton b platform v cc cng c ca n. N cha lp gc jade.core.Agent cng nh cc lp run43

Gii thiu JADE

time c bn cn thc thi cc container agent. N cn cha 1 tp cc gi con, mi gi thc thi 1 sc nng c bit mc li. l: jade.core.event ci t dch v thng bo cc s kin phn tn. N gip cho ngi dng thy c cc s kin pht sinh bi cc thnh phn phn tn khc nhau trong 1 platform; jade.core.management ci t dch v qun l vng i agent phn tn; jade.core.messaging ci t dch v phn tn thng ip; jade.core.mobility ci t dch v nhn bn v di chuyn agent, bao gm vic truyn c tng thi v m ngun ca 1 agent; jade.core.nodeMonitoring cho php cc container qun l ln nhau v pht hin cc container khng qun l c hoc cht; jade.core.replication cho php ti to 1 main container mi nu c li nghim trng trong main container ban u. jade.core.behaviors l 1 gi con ca jade.core cha 1 h thng cc hnh vi li c lp vi ng dng. Mt hnh vi JADE biu din 1 tc v m 1 agent thc hin, c m t trong Phn 4.2.

jade.content v cc gi con ca n cha 1 tp cc lp h tr lp trnh vin to v thao tc vi cc biu thc ni dung phc tp theo 1 ngn ng ni dung cho trc v ontology. N cha tt c cc cu trc c m ha t ng chuyn i gia cch biu din ni trong JADE v nh dng truyn ni dung thng ip theo FIPA. Phn 5.1 m t chi tit cc chc nng c ci t trong gi ny. jade.domain cha phn ci t ca cc agent AMS v DF, theo nh chun FIPA, cng vi cc m rng c t JADE ca chng s c ni n sau. Mi gi con cha cc lp biu din cc thc th khc nhau ca 1 ontology JADE. Cc ontology ny c lit k trong Bng 2.1.

Bng 2.1: cc ontology nh ngha sn trong JADE


Ontology FIPA-AgentManagement Gi Jade.domain.FIPAAgentManagement Miu t Cc thc thm cc ngoi l v cc hnh ng cn thit tng tc vi AMS v DF theo cc c t ca FIPA M rng ca JADE i vi ontology FIPA-AgentManagement

JADE-AgentManagement

Jade.domain.JADEAgentManagement

Gii thiu JADE

44

JADEIntrospection JADE-Mobility JADEPersistence DEAppletManagement

Jade.domain.introspection

M rng ca JADE lin quan n vic gim st cc s kin ca platform M rng ca JADE lin quan n tnh di ng ca agent M rng ca JADE lin quan n vic lu tr agent lu di Ontology s dng bi DF GUI tng tc vi DF. N cho php nhiu giao din ha ca cng mt DF, k c cc giao din ci t applet

Jade.domain.mobility Jade.domain.persistence Jade.domain.DFGUIManagement

jade.gui cha 1 vi thnh phn Java chung v cc icon dng xy dng cc giao din GUI da trn Swing dng cho cc agent JADE. Gi ny cung cp cc thnh phn ha sn dng biu din cc khi nim tru tng JADE in hnh, nh AID, ACLMesssage, v AgentDesctiption. jade.imtp cha cc ci t JADE IMTP (Giao thc truyn thong didepj bn trong). V nguyn tc, gi con jade.imtp.rmi l IMTP mc nh ca JADE da trn Java RMI. jade.lang.acl cha ch tr cho FIPA ACL (Ngn ng giao tip agent) cha lp ACLMessage, chng trnh phn tch, m ha, v 1 lp h tr cc mu biu din ca cc thng ip ACL. jade.mtp cha 1 tp cc giao din Java nn c ci t bi JADE MTP. N cn cha 2 gi con vi 1 gi ci t da trn giao thc HTTP (l ci t mc nh) v 1 gi da trn giao thc IIOP. jade.proto cha cc ci t ca 1 vi giao thc tng tc chung, trong 1 s c c t bi FIPA. Phn 5.4 cung cp m t v 1 s giao thc tng tc. jade.tools cha ci t ca tt c cc cng c ha JADE, c m t trong Phn 2.7. jade.util cha 1 s lp hu dng khc. jade.wrapper cng vi cc lp jade.core.Profile v jade.core.Runtime cung cp h tr giao din ang chy JADE cho php cc ng dng Java bn ngoi s dng JADE nh 1 th vin, c m t trong Phn 5.6. FIPA l 1 gi cha module IDL (Ngn ng nh ngha giao din) c t bi FIPA dng cho MTP da trn IIOP.

Gii thiu JADE

45

2.6 DCH V VN CHUYN THNG IP Theo cc c t FIPA, mt Dch v vn chuyn thng ip (MTS) l 1 trong 3 dch v quan trng m mi nn tng agent phi cung cp (2 dch v khc l Dch v qun l MS v Xc tin th mc DS). Mt MTS qun l tt c cc thng ip trao i bn trong v gia cc platform. 2.6.1 Cc giao thc truyn thng ip h tr tng tc gia cc platform khc nhau (v d, vi platform khng phi ca JADE), JADE ci t tt c cc chun Giao thc vn chuyn thng ip (MTP) nh ngha bi FIPA, ni mi MTP bao gm 1 nh ngha giao thc vn chuyn v 1 chun m ha ca phong b cha thng ip. Nh trong Hnh 2.4, mt trong cc thng ip c a ra u ra chun khi chy main container c dng tng t nh sau: INFO: MTP addresses: http://anduril:7778/acc Mc nh, JADE lun lun khi ng bng 1 MTP da trn HTTP c khi to trong main container, khng MTP no c hot ng trong cc container thng. N to ra mt server socket trn host main container v lng nghe cc kt ni vi qua HTTP ti URL c t trong dng lnh th 2 pha trn. Khi 1 kt ni ti c xc nh v thng ip hp l c nhn t kt ni, MTP s gi thng ip n ch cui cng, thng l 1 agent nm trong platform phn tn. Pha trong, platform s dng 1 giao thc vn chuyn tn l IMTP (Giao thc truyn thng ip bn trong) s c m t trong phn tip theo. JADE thc hin vic truyn thng ip cho c cc thng ip n v i s dng 1 bng n bc yu cu IP trc tip gia cc container. S dng cc lnh ty chn, v s MTP c th hot ng trong mi JADE container, bao gm c cc MTP ci t cc giao thc truyn khc nhau. MTP cn th c 'nhng' v khi to ti thi gian chy nh s dng RMA GUI. N cho php ngi qun l platform t do thao tc vi topo bng cch, chng hn, cch ly 1 host vi 1 kt ni m ti 1 mng bn ngoi nhm tng cng bo mt. Khi 1 MTP hot ng trong 1 platform, JADE platform s nhn c 1 a ch truyn mi, 1 u mt ni cc thng ip c th nhn. a ch ny cn c thm vo trong cu trc d liu sau: Thng tin platform, c th c t AMS nh lnh get-description. Ton b cc i tng ams-agent-description cha trong kho cha AMS, c th c nh 1 lnh tm kim. nh danh agent (AID) cc b ca bt k agent trong bt k container no c th c nh phng thc getAID( ) ca lp Agent.

Giao din public Java jade.mtp.MTP cho php ht trin MTP ty chn cho cc yu cu ng dng v mi trng mng c th. Giao din MTP m hnh 1 knh song hng c th va gi v nhn cc thng ip ACL bng cch k tha giao din jade.mtp.OutChannel v jade.mtp.InChannel l
Gii thiu JADE 46

cc knh 1 hng. Giao din jade.mtp.TrasnportAddress ch n gin biu din 1 URL cung cp truy nhp n cc trng nh giao thc, host, cng v tp. Khi cc MTP c lit k trong Bng 2.2 c trong public domain, mi MTP c trin khai di dng cc tp jar ring l. Bng 2.2: Cc giao thc truyn trong JADE hin nay
Giao thc truyn HTTP v HTTPS IIOP (bn ci t ca Sun) IIOP (bn ORBacus) JMS Jabber XMPP ci t M ha thng ip XML CORBA IDL ca CORBA IDL Cu trc d liu Java Cu trc d liu Java Nh pht trin i hc Autonoma Barcelona, Ty Ban Nha (UAB) Nhm JADE Giovanni Rimassa, i hc Parma, Italia Edward Curry, i hc Galway i hc Politecnica Valencia, Ty Ban Nha

Trong khi HTTP v IIPO MTP c nh km trong bn phn phi chnh JADE, cc giao thc cn li u phi download di dng bn add-on ti trang ch JADE. HTTP l MTP mc nh chy vi main container. HTTP c chn lm MTP mc nh v bn ci t cung cp bi UAB c nhng u im sau y: S cng cc b ca cc kt ni n v i c th c chn cho cu hnh firewall s dng cc bin jade_mtp_http_port v jade_mtp_http_outPort. Proxy c th c cu hnh thng qua cc kt ni bt bin: thay v thc hin bt tay TCP vi mi thng ip, cc kt ni c th c lu li v s dng li khi cc thng ip c trao i thng xuyn gia 2 platform khc nhau. iu ny c iu khin vi cc bin jade_mtp_http_numKeepAll v jade_mtp_http_timeout. HTTPS c th c s dng thit lp bo mt v cc knh chng thc gia cc platform. s dng HTTPS, 1 a ch truyn i phi n gin bt u bng https. Tt nhin phi lu rng, mc d HTTPS tng cng bo mt, n vn gp phi 1 s khuyt im khi thc hin; c tnh s lc cho thy rng HTTPS MTP chm hn 15% so vi HTTP MTP chun.

JADE RMA cho php qun l MTP linh hot bng vic cho php kch hot hoc tt chng trong khi platform ang chy. Nhn chut phi vo 1 nt cy container agent trong bng bn tri ca RMA GUI s hin ra 1 menu trong c 2 mc l Install a new MTP (Ci t MTP mi) v Unistall an MTP (G b MTP). La chn u s to ra 1 ca s ngi dng chn MTP mi ci t, tn y ca lp ci t giao thc, v (nu giao thc c chn h tr) a ch truyn lng nghe c u tin. Nu chn Unistall an MTP, 1 ca s s xut hin ngi dng c th chn MTP trong danh sch ang hot ng g n ra khi platform.
Gii thiu JADE 47

Mt vi ng dng c th khng cn ti cc giao tip bn ngoi platform cc b. Trong trng hp , lnh ty chn nompt s to ra 1 HTTP MTP mc nh trong main container. Tt nhin n s cch ly platform khi mi giao tip vi cc platform t xa. Lu rng 1 container t xa ch l 1 container m khng nm chung host vi main container, nhng vn nm chung platform; ni cch khc, 1 container t xa khng c l 1 phn ca 1 platform t xa. Cc container trong cng platform lun giao tip bng JADE IMTP. 2.6.2 Giao thc truyn thng ip ni b (IMTP) JADE IMTP (Giao thc truyn thng ip ni b) chuyn dng trao i thng ip gia cc agent sng trong cc container khc nhau trong cng 1 platform. N tng i khc vi cc MTP ngoi platform, nh HTML. Th nht, v n ch c dng cho vic giao tip bn trong platform, nn khng cn phi tng thch vi cc chun FIPA; n c th thuc v do c thit k h tr vic vn hnh platform. Thc t JADE IMTP khng ch c dng truyn thng ip m cn truyn cc lnh bn trong cn thit qun l platform phn tn, cng nh gim st trng thi ca cc container t xa. V d, n c s dng truyn lnh tt 1 container, cng nh gim st vic 1 container b tt hoc nm ngoi kim sot. JADE c thit k cho php la chn IMTP trong thi gian platform chy. Hin ti, c 2 cc ci t ITMP chnh. Mt cch da trn Java RMI v l ty chn mc nh. Cch th hai da trn 1 giao thc s dng TCP socket gip loi b i s thiu st h tr Java RMI trong mi trng J2ME; n c khi ng mc nh khi chy platform JADE LEAP v s c m t trong Chng 8. C 2 cch ci t ny u cung cp cc la chn cu hnh cho php iu chnh IMTP theo mng v cc thit b nht nh. 2.6.2.1 Giao thc truyn thng ip ni b theo chun RMI (RMI-IMTP) RMI-IMTP c ci t bi gi jade.imtp.rmi. Khi main container khi ng, n s tm 1 ng k RMI trong host cc b v gi n cc i tng tham chiu; nu khng tm thy, n s to ra 1 ng k mi. Khi 1 container thng khi ng, n s xc nh ng k RMI trn host c t main container v tm i tng tham chiu ca main container. Sau n s gi phng thc t xa addNode ( ) ca main container tham gia platform v ng k tham chiu ca n vi main container. Cc thng ip agent v thng tin iu khin h thng c trao i gia cc container c ci t thng qua 1 mu lnh khi nt yu cu (v d, 1 container) to ra 1 i tng Command v truyn i i tng ny, vi 1 yu cu thc thi, n nt thc thi. Hai bin dng lnh sau c sn trong RMI-IMTP: -host <hostName>

Gii thiu JADE

48

s c t host amg cjauk main container ng k vi n; gi tr mc nh l localhost. La chn ny cng c s dng khi chy main container override gi tr ca localhost, v d c ton b tn min ca host vi host anduril.cselt.it khi localhost ch tr v l 'anduril'. - port <portNumber> s c t s cng m ng k RMI c to ra bi main container nhn cc yu cu tm kim. Gi tr mc nh l 1099. 2.7 CC CNG C QUN TR V G LI Cc ng dng a agent thng kh phc tp. Chng thng c phn tn qua mt s host. Chng c to thnh t hng trm tin trnh a lung (v d cc container vi mt s agent, mi agent c mt lung ca n); chng l ng ngha l cc agent c th xut hin, bin mt v di tr. Cc kha cnh ny dn n nhng kh khn trong vic qun l v c bit trong vic g li. gim i nhng kh khn ny, JADE c mt dch v thng bo s kin c to thnh t c s ca JADE RMA management console v mt tp cc cng c ho n c cung cp gip trong pha qun l v g li. Tt c cc cng c ny c ng gi trong jadeTools.jar. Trong phn ny miu t mt s cng c c cung cp vi JADE distribution, Event Notification Service (ENS) v m hnh cc cng c JADE. Cc thng tin b sung c cung cp gip ngi s dng vi to ra cc cng c ca chnh h. gii thch cc cng c nn tng, on code sau minh ho mt HelloWorldAgent n gin thc thi cyclic behaviour: mi ln mt thng ip c nhn, n in thng ip ra output chun v hi m cho ngi gi vi thng ip Hello!.
import jade.core.Agent; import jade.core.behaviours.CyclicBehaviour; import jade.lang.acl.ACLMessage; public class HelloWorldAgent extends Agent { public void setup() { System.out.println("Hello. My name is "+getLocalName()); addBehaviour(new CyclicBehaviour() { public void action() { ACLMessage msgRx = receive(); if (msgRx != null) { System.out.println(msgRx); ACLMessage msgTx = msgRx.createReply(); msgTx.setContent("Hello!"); send(msgTx); } else { block(); } } }); } }

Bin dch agent


Gii thiu JADE 49

To file compilejade.bat lu C vi ni dung sau: javac -classpath C:\jade\lib\jade.jar;C:\jade\lib\jadeTools.jar;C:\jade\lib\iiop.jar;C:\jade\lib\http.jar;C:\jade\lib\co mmons-codec\commons-codec-1.3.jar;. %1 %2 %3 %4 %5 %6 %7 %8 %9 Lu file HelloWorldAgent.java vi ni dung nh trn C Bin dch file HelloWorldAgent.java bng cch g lnh sau: compilejade C:\HelloWorldAgent.java

To file runHelloWorld.bat vi ni dung sau: java -classpath .;C:\jade\lib\jade.jar;C:\jade\lib\jadeTools.jar;C:\jade\lib\iiop.jar;C:\jade\lib\http.jar;C:\jade\lib\co mmons-codec\commons-codec-1.3.jar jade.Boot hello:HelloWorldAgent Chy file runHelloWorld.bat ta c kt qu sau:

Gii thiu JADE

50

2.7.1 Ca s qun tr JADE JADE RMA (Remote Monitoring Agent) l mt cng c h thng thc thi mt giao din qun l nn tng ha. Cng c c thc thi bi lp jade.tools.rma.rma nhng n thng c bt u trc tip t dng lnh s dng tu chn gui. N cung cp mt giao din ho gim st v qun l nn tng JADE phn tn c to thnh t mt hoc mt s host v cc nt container. N bao gm mt menu Tools qua cc cng c khc c th c khi hot. Mt s RMA c th c khi hot trong cng mt nn tng nu mt tn agent khc c ng k cho mi th hin. Ti lc khi ng RMA agent ng k vi AMS c thng bo tt c cc s kin cp nn tng; Hnh 2.5 hin th giao din s dng ho ca n. Panel tri cung cp ci nhn ca topo nn tng c biu din nh mt cy ca cc container cc l l cc agent. Panel ny c thc thi bi lp jade.gui.AgentTree v c s dng li bi tt c cc cng c khc. Ni c th, c 3 kiu ca nt: agent platform, container v agent. Vi mi nt, chu k sng ca thc th c biu din c iu khin thng qua menu s xung xut hin bng vic click chut phi vo nt . Nu mt agent c chn, menu s xung cho php agent c treo (suspend), hi phc li (resume), git (kill), to bn sao (clone), lu (saved), ng bng (frozen) hoc di ch n mt container khc. N cng cho php cu hnh v gi mt thng ip tu chnh, c bit Nu mt container c chn, menu s xung cho php to mt agent mi, ti mt agent ang tn ti, ci t hoc xo b mt MTP, lu/ti container bao gm tt c cc agent ca n v kt thc container. S dng RMA khi hot nh v d trong phn trc, chng ta c th c gng to mt HelloWouldAgent mi, gi Bill nh hin th trong Hnh 3.6 Nu mt plaform c chn, menu pop-up cho php platform profile c hin th, v d nh cu trc d liu, c gi l AP (Agent Platform), n miu t mt FIPA compliant platform v lit k tn nn tng v cc dch v ca n. Menu cng cho php qun l platform MTP, v d nh ci t v xo cc MTP trong/t cc container c ch ra. Ch rng gc ca cy c gi l Agent Platforms trong s nhiu. N biu th s tht rng RMA c th c s dng iu khin mt tp platform c cung cp chng l tt c FIPA compliant. Tt nhin, mc ca iu khin c gii hn khi vic tng tc vi mt platform xa khi ch vic qun l cc thng ip v action c nh ngha trong FIPA c th c s dng, thay v thng qua JADE IMTP trong bt k JADE platform no. V d, c th xem AP Description ca mt platform xa v danh sch cc agent active ca n. Tuy nhin, khi s tr tng container khng c ch ra bi FIPA, tree view ca platform t xa khng th trnh by mt cch trc tip. giao tip vi mt platform xa, nhn dng ca AMS ca n phi c cung cp (v d: AMS AID), n phi bao gm tn v t nht 1 a ch truyn (transport address) hp l. iu ny hin th trong Hnh 2.7, bng vic chn RMA agent v vic yu cu n giao tip vi AMS cc b ca bn nh nu n l mt platform xa: sau khi pop up menu, khi c yu
Gii thiu JADE 51

cu chn AID ca AMS, kiu ams v kim tra hp ch ra rng n khng l mt GUID. Mt platform th 2 nn xut hin trong cy platform, mt cch ngu nhin, c AP Description v danh sch cc agent tng t nh platform ca bn.

Hnh 2.6: Giao din chy agent mi

Hnh 2.7: Giao tip vi platform t xa 2.7.2 Dummy agent Dummy agent l mt cng c rt n gin hu dng cho vic gi cc tc nhn kch thch theo dng cc ACL thng ip tu chnh kim tra hnh vi ca cc agent khc. N c thc thi bi lp jade.tools.DummyAgent.DummyAgent. Kh nng ca n l gi v nhn cc thng ip tu chnh c th c to ra s dng mt GUI n gin v c ti/lu t/vo mt file. Khi mt ng dng agent c khi hot, mt Dummy Agent c th c s dng gi v n bng vic gi cc thng ip c ngi dng ch ra v vic phn tch cc phn ng ca n trong thi hn cc thng ip c nhn. N l mt cng c n gin nhng hiu qu c s dng rng ri trong
Gii thiu JADE 52

sut qu trnh pht trin ng dng. Hnh 2.8 hin th Dummy Agent GUI vi panel bn phi dnh hin th danh sch cc thng ip gi v nhn. Panel bn tri s dng to ra cc thng ip tu chnh. C 2 panel v cc thnh phn khc c s dng li v c cung cp nh l cc lp ring bit; c th l jade.gui.AclGui v jade.gui.AIDGui l cc lp hu ch cho vic to/hnh dung mt ACL thng ip v mt AID. Chy DummyAgent t dng lnh: To file runDummyAgent.bat lu C vi ni dung: java -classpath .;C:\jade\lib\jade.jar;C:\jade\lib\jadeTools.jar;C:\jade\lib\iiop.jar;C:\jade\lib\http.jar;C:\jade\lib\co mmons-codec\commons-codec-1.3.jar jade.Boot myDummy:jade.tools.DummyAgent.DummyAgent Chy file runDummyAgent.bat ta c kt qu sau:

Hnh 2.8: Kt qu chy DummyAgent t dng lnh Chy DummyAgent t giao din qun tr platform:

Gii thiu JADE

53

Hnh 2.9: Kt qu chy DummyAgent t giao din qun tr platform 2.7.3 Sniffer Agent Trong khi tt c cc cng c khc phn ln c s dng cho vic g li mt agent n, cng c ny c s dng rng ri cho vic g li, hoc n gin l vit cc cuc ni chuyn gia cc agent. N c thc thi bi lp jade.tools.sniffer.Sniffer. sniffer ng k vi platform AMS c thng bo tt c cc s kin ca platform v tt c cc s trao i thng ip gia mt tp cc agent xc nh. Hnh 2.10 hin th GUI ca Sniffer Agent. Panel tri l trnh dut tng t nh RMA, nhng c s dng cho vic duyt agent platform v vic chn cc agent c sniff. Phn bn phi cung cp biu din h ca cc thng ip c trao i gia cc agent c sniff, ni mi mi tn biu din mt thng ip v mi mu xc nh mt cuc ni chuyn. Khi ngi s dng quyt nh sniff mt agent hoc mt nhm cc agent, mi thng ip gi i hoc n, agent/nhm c lu vt v c hin th trong sniffer GUI. Ngi s dng c th chn v xem chi tit ca mi thng ip, lu thng ip vo a nh mt file vn bn hoc serialize mt cuc ni chuyn nh mt file nh phn Chy SnifferAgent t dng lnh: To file runSnifferAgent.bat lu C vi ni dung: java -classpath .;C:\jade\lib\jade.jar;C:\jade\lib\jadeTools.jar;C:\jade\lib\iiop.jar;C:\jade\lib\http.jar;C:\jade\lib\co mmons-codec\commons-codec-1.3.jar jade.Boot mySniffer:jade.tools.sniffer.Sniffer Chy file ny ta c kt qu:

Gii thiu JADE

54

Hnh 2.10: Giao din ca SnifferAgent chy bng dng lnh Chy SnifferAgent t giao din qun tr platform:

Hnh 2.11: Chy SnifferAgent t giao din qun tr platform

Hnh 2.12: Giao din SnifferAgent ca v d bookTrading 2.7.4 Introspector agent Trong khi Sniffer Agent c ch trong vic nh hi, gim st v debug cc cuc hi thoi gia cc agent, th Introspector Agent c dng debug hnh vi ca mt agent. Cng c ny cho
Gii thiu JADE 55

php gim st v iu khin vng i agent, hng i thng ip gi i v nhn c ca agent. N cng cho php gim st hng i cc hnh vi c lp lch sn bao gm kh nng thc thi cc hnh vi tng bc mt. Ch mt bc ca hnh vi l mt ln thc thi phng thc action () ca lp Behaviour v khng c lin kt mt cch trc tip vi vic thc thi m Java. Tm li, cng c ny cho php gim st vic thc thi ca agent, c th l nhng hnh vi no c thc thi, nhng hnh vi no c a vo hng i, v cho php gim st nhng phn ng ca chng i vi kch thch bn trong, c th l cc thng ip sp nhn c. Hnh 2.13 biu din giao din ca Introspector Agent khi ang gim st agent DF. 2.7.5 Log Manager Agent Log Manager Agent l cng c n gin ha vic qun l ng v phn tn kh nng logging (logging facility) bng cch cung cp mt giao din ngi dng cho php cc mc logging ca mi thnh phn trong JADE platform c thay i ng lc, ngha l bao gm mi thnh phn ang c x l ti cc node xa, gm c cc thng ip logging ca mt ng dng c th. B qun l log khai thc kh nng ngm ca th vin java.util.logging m JADE logging da trn . Mi lp s dng mt th hin ca lp Logger. Mi i tng Logger c th c cu hnh mt mc logging v c mt tp cc Handler. Vic cu hnh ny l tnh bng cch xc nh file cu hnh java.util.logging ti thi im np hoc ng bng cch s dng Log Manager Agent.

Hnh 2.13: Giao din ca Introspector Agent khi ang gim st agent DF. V d, lnh sau y khi ng mt container trong JADE v xc nh mt file cu hnh khi to h thng logging ca JVM: u tin ta chy file runjade.bat vi ni dung sau:

Gii thiu JADE

56

java -classpath .;C:\jade\lib\jade.jar;C:\jade\lib\jadeTools.jar;C:\jade\lib\iiop.jar;C:\jade\lib\http.jar;C:\jade\lib\co mmons-codec\commons-codec-1.3.jar jade.Boot gui Sau , ta to file logging.properties vi ni dung sau: handlers = java.util.logging.ConsoleHandler .level = OFF jade.core.messaging.level = FINEST y l file cu hnh tun theo nh dng chun java.util.Properties. Xem ti liu javadoc v lp java.util.logging.LogManager bit thng tin chi tit v file cu hnh v nh dng ca n. Container c to trong JADE s ch ghi li cc thng ip log ca h thng Messaging, c th l mi lp trong gi jade.core.messaging. To file createLogFile.bat vi ni dung: java -classpath .;C:\jade\lib\jade.jar;C:\jade\lib\jadeTools.jar;C:\jade\lib\iiop.jar;C:\jade\lib\http.jar;C:\jade\lib\co mmons-codec\commons-codec-1.3.jar -Djava.util.logging.config.file=logging.properties jade.Boot container Tt c cc file c C. Chy file runjade.bat, file createLogFile.bat. Sau khi container mi c to ra trn platform, khi ng Log Manager Agent trn container , ta thy mc logging ca container ny u c thit lp l OFF v cc handler u c thit lp l java.util.logging.ConsoleHandler:

Hnh 2.14: Giao din Log Manager Agent ca Container-1

Gii thiu JADE

57

2.7.6 Dch v thng bo s kin (event notification service) v m hnh cng c JADE Dch v thng bo s kin (ENS) l mt dch v mc platform qun l cc thng bo phn tn ca tt c cc s kin c sinh ra bi mi node ca platform. Dch v ny c gi l jade.core.event.Notification, c ci t trong gi jade.core.event v c khi chy mc nh trong mi container. Mi khi c mt s kin c sinh ra bi mt container, n s b chn bi ENS v c nh tuyn ti mi agent t trc c thng bo v cc kiu s kin. Nu khng c agent no t trc th ENS c hiu nng khng ng k. Thc t, nhng node c hiu nng thp (do vic thng bo s kin) l container ni c tr ca cc agent t trc v l container sinh ra s kin c thng bo. V tt c cc agent cng c c th hot ng khi cn, thm ch ti thi im chy trong qu trnh vn hnh platform, vic ci thin hiu nng c th t c bng cch ch bt u chng khi cn thit. C 4 loi s kin chnh: (1) S kin lin quan n vng i, cn c gi l s kin kiu platform (platform-type) v chng lun lin quan n container chnh. Nhng s kin ny lin quan n nhng thay i trong vng i agent (v d: born, dead, moved, suspended, resumed, frozen, thawed) v lin quan n nhng thay i trong vng i container (v d: added, removed). (2) S kin kiu MTP-type c sinh ra bi platform khi mt MTP c kch hot (kt thc) v khi mt thng ip c gi/nhn bi/t mt MTP, c th l khi c mt s phin truyn thng lin platform (inter-platform). (3) S kin kiu message-passing-type c sinh ra khi mt thng ip ACL c gi, nhn, nh tuyn hoc c a vo hng i thng ip. Chng l nhng s kin m Sniffer thng s dng gim st. (4) S kin kiu agent-internal-type lin quan n nhng thay i trong trng thi v hnh vi ca agent. Chng l nhng s kin m Introspector thng s dng gim st. Cc agent tng tc vi ENS bng cch trao i cc thng ip ACL vi AMS. Agent c th t trc vi AMS c thng bo v cc kiu s kin bng cch s dng lp AMSSubscriber trong gi jade.domain.introspection. Kiu s kin message-passing-type v agent-internal-type ni cch khc ch c nm trong container chnh ni m agent to ra chng c tr. Vic chuyn chng vo container chnh thc t s lm gim ng k hiu nng ca platform. Hu qu l c thng bo v cc s kin message-passing v agent-internal lin quan n agent ch cho trc, agent quan st (observe agent) s phi yu cu AMS nh hi v debug mt cch r rang cc agent ch. iu ny c thc hin bng cc phng tin ca hnh ng SnifferOn v hnh ng DebugOn ca JADEManagementOntology. Phn 2.5.1 miu t chi tit cch yu cu cc thao tc qun l platform ca AMS. Kt qu ca hnh ng SniffOn l mt agent ph ToolNotifier c to ra trong container m agent ch c tr . Agent ny lng nghe s kin message-passing cc b

Gii thiu JADE

58

v chuyn tip chng ti agent quan st. H thng thng bo s kin ca JADE c minh ha trong Hnh 2.15:

Hnh 2.15: H thng thng bo s kin ca JADE

Hnh 2.16: Biu lp cc cng c ca JADE Mi cng c ca JADE, ngoi tr DummyAgent, u k tha t lp jade.tools.ToolAgent lp cung cp kh nng nhn cc thng bo theo mt cch thng nht. Hnh 2.16 minh ha biu lp UML v cc cng c ca JADE. Mi cng c c ci t l mt Agent m rng lp jade.core.Agent c s. iu ny cho php mt s tnh nng v s n gin ha quan trng: (1) Vng i ca mt cng c JADE c th c qun l nh cc agent khc ca platform. (2) Kh nng truyn thng ip ca Agent c s c th c s dng cho php s tng tc gia cng c v AMS, c th l vic t trc cc thng bo s kin ca platform. (3) Mt s th hin ca cng mt cng c c th cng tn ti trn cng mt platform v thm ch trong cng container. Lp jade.tools.ToolNotifier ci t cc agent ph tr c dng chuyn tip cc s kin message-passing v agent-internal ti cc agent quan tm chnh l mt ToolAgent. Cch ny cho php pht hin xem agent ch hoc agent quan st kt thc hay cha. Lp ToolNotifier c ghp vi ENS v khng c d nh dnh cho cc lp trnh vin s dng.

Gii thiu JADE

59

CHNG 3 NHNG C IM C BN CA JADE

Trong chng 2 chng ta c c mt ci nhn tng quan v JADE, phc ha kin trc mc cao v nu ra chc nng ca n. Trong phn ny chng ta s trnh by lm th no pht trin h a agent vi JADE da vo nhng tnh nng c bn m JADE cung cp nh to cc agent, thc thi nhim v ca agent, lm cho agent c th giao tip vi nhau, v a ra cc dch v cng nh l tm kim cc dch v trong mc trang vng (yellow page). Bng nhng tnh nng ny, nhng ci m ch nm trong di 10 lp trong th vin ca JADE, l c th ci t ng dng phn tn vi mt phc tp nht nh. Trong chng sau, chng ta s m t cc tnh nng nng cao, nhng tnh nng m tp trung vo nhng vn phc tp hn. Tuy nhin JADE ph hp vi cu trit l i ti u tr tin ti , ng rng cc lp trnh vin khng cn quan tm n cc tnh nng nng cao cho n khi h cn hoc mong mun nh vy. Nh gii thiu trong chng 2, JADE l cng c thun java bi vy to mt h a agent trn jade n thun l to cc lp java m khng cn lp trnh java qu chuyn nghip. minh ha cc bc cn thit pht trin ng dng vi Jade, phn ny s gii thiu cc case study n gin m s dng xuyn sut ti liu ny, l mt h thng hng agent cho php ngi s dng trao i sch c. Trong h thng trao i sch ny s c 2 loi agent: agent bn v agent mua. Mi mt agent mua ly u vo l cc sch m n cn phi mua v c gng tm kim cc agent bn hng mua cc sch vi gi chp nhn c. Tng t nh vy mi mt agent bn hng s ly u vo l cc sch dng bn v c gng sao cho sch bn c vi gi cao nht c th. C agent bn v agent mua u ci t mt vi chin lc n gin thc hin cc m phn mua bn sao cho t c kt qu tt nht cho ngi s dng m n i din. C agent bn v mua c th xut hin v bin mt trong h thng mt cch ng. Cc vn lin quan n mua sch c th, phn phi v thanh tan c coi l ngoi phm vi v khng c quan tm. 3.1 TO AGENT To mt Agent trong jade ch n gin l nh ngha mt lp extends lp jade.core.agent v ci t phng thc setup() nh v d di y: import jade.core.Agent; public class HelloWorldAgent extends Agent { protected void setup() { // Printout a welcome message System.out.println("Hello World. Im an agent!"); } }

Nhng c im c bn ca JADE

65

Lp HelloWorldAgent trn i din cho mt loi agent, chnh xc hn l mt lp thng thng bin th cho mt i tng. Mt vi th hin ca lp HelloWorldAgent c th chy lc run-time. Khng ging nh i tng java thng thng c x l qua tham chiu ca chng, mt agent lun lun c th hin bi JADE run-time v tham chiu ca n khng bao gi c t ngoi agent chnh n (tt nhin l tr khi cc agent r rng). Cc agent khng bao gi tng tc qua li gi cc phng thc m l tng tc bng cch trao i cc thng ip khng ng b, s c gii thiu mc sau. Phng thc setup() c mc ch gp cc khi to ca agent. Thng thng cng vic chnh xc ca cc agent c thc hin bn trong cc hnh vi behaviours s c gii thiu mc 3.2. V d v cc hot ng in hnh m agent thc hin trong hm setup() ca n l : a ra mt GUI, m kt ni n c s d liu, ng k cc dch v n cung cp trong mc cc trang vng (xem phn 3.4) v bt u khi to cc behaviours. Tt nht l khng nn xy dng hm khi to trong lp agent v thc hin tt c cc khi to trong phng thc setup(). iu ny l v ti thi im xy dng , agent vn cha uc lin kt vi JADE run-time pha di v v vy mt vi phng thc k tha t lp Agent c th khng lm vic mt cch chc chn. 3.1.1 nh danh agent nht qun vi c t FIPA, mi mt th hin agent c nh danh bi mt b nh danh agent (agent identifier). Mt b inh danh agent c biu din di dng l mt th hin ca ca lp jade.core.AID. Phng thc getAID() ca lp agent cho php gi li nh danh cc b ca agent. Mt i tng AID gm mt tn tan cc n nht (GUID) cng thm mt s a ch. Tn trong jade c dng <local-name>@<plaform-name>. V d mt agent l Peter ang tn ti trn plaform l foo-platform s c tn tan cc n nht l Peter@foo-platform . a ch gp trong AID l a ch ca platform m agent sng. Nhng a ch ny ch c s dng khi mt agent cn giao tip vi agent khc sng trn mt platform khc cng tun theo chun FIPA. Lp AID cung cp mt s phng thc phc v cho vic gi li tn cc b (getLocalName()), GUID (getName()) v a ch (getAllAddresses()). Vy nn ta c th lm phong ph thm thng ip cho n ca agent HelloWorldAgent ca chng ta nh sau: protected void setup() { // Printout a welcome message System.out.println("Hello World. Im an agent!"); System.out.println("My local-name is "+getAID().getLocalName()); System.out.println("My GUID is "+getAID().getName()); System.out.println("My addresses are:"); Iterator it = getAID().getAllAddresses(); while (it.hasNext()) { System.out.println("- "+it.next()); } }

Nhng c im c bn ca JADE

66

Tn cc b ca mt agent uc gn ti thi im khi ng bi ngi to v phi l n nht trong platform. Nu tn ti mt mt tn cc b tng t trn platform, JADE run-time s ngn chn vic to agent mi m trng tn. To mt agent v AID ca n c th lm nh sau: String localname = "Peter"; AID id = new AID(localname, AID.ISLOCALNAME); tn platform c t ng gn vo GUID ca AID mi c to bi JADE run-time. Tng t nh vy, to GUID ca mt agent v AID ca n c thc hin nh sau: String guid = "Peter@foo-platform"; AID id = new AID(guid, AID.ISGUID); 3.1.2 Khi to Agent To lp HelloWorldAgent mi vi ni dung ca hm setup() nh trn v bin dch, chy nh hng dn Chng 2, ta c kt qu:

Hnh 3.1: Kt qu chy file HelloWorldAgent hello l tn cc b c ch ra dng lnh. V chng ta khng ch ra tn mt platform c th no, nn jade to mc nh s dng cng local v cng ca main container: sony-799bec6555:1099/JADE. Bi vy GUID ca agent l hello@sony-799bec6555:1099/JADE. Cn phi ch rng, mc d GUID ny trng kh ging mt a ch nhng n khng phi l mt a ch. Cui cng chng ta nhn thy rng AID ca agent hello ch bao gm mt a ch l a ch MTP kch hot trong platform. Cn c cc cch khc chy agent nh l dng b cng c qun l GUI cp mc 2.7.1 hoc pht sinh ra request ti AMS (xem mc 5.5), hoc s dng giao din tin trnh bn trong (mc 5.6) 3.1.3 Kt thc agent Sau khi in ra thng ip welcome, agent vn tip tc tn ti thm ch n chng c vic g lm. kt thc agent th hm doDelete() phi c gi. Tng t, hm setup() c gi tham gia vo vic khi to agent th hm takeDown() ch tham gia trc khi agent kt thc thc hin
Nhng c im c bn ca JADE 67

cng vic dn dp. 3.1.4 Truyn tham s cho agent Cc agent c th ly cc tham s khi ng, nhng tham s ny l mt mng Object c th ly c bng cch s dng phng thc getArguments() ca lp Agent. Khi khi chy mt agent trong dng lnh nh m t trong phn 2.7, cc tham s khi ng c th c xc nh bng cch thm vo sau tn agent trong du ngoc n nh sau: hello:HelloWorldAgent(arg1 arg2 arg3) Tt nhin trong trng hp dng lnh th tham s truyn vo phi l String, nhng khi chy mt agent trc tip t code, th tham s Object c th c truyn vo. Nu chng ta chnh sa hm setup() ca HelloWorldAgent nh sau: protected void setup() { // Printout a welcome message System.out.println("Hello World. Im an agent!"); System.out.println("My local-name "+getAID().getLocalName()); System.out.println("My GUID is "+getAID().getName()); System.out.println("My addresses are:"); Iterator it = getAID().getAllAddresses(); while (it.hasNext()) { System.out.println("- "+it.next()); } System.out.println("My arguments are:"); Object[] args = getArguments(); if (args != null) { for (int i = 0; i < args.length; ++i) { System.out.println("- "+args[i]); } } } th sau khi thc thi dng lnh tng t th u ra nh sau:

is

Hnh 3.2: Kt qu chy lp HelloWorldAgent vi tham s truyn vo


Nhng c im c bn ca JADE 68

bookTrading/ | | ---src/ | | | | | | ---lib/ | | | | | | | |--- jade.jar |--- jadeTools.jar |--- http.jar |--- iiop.jar |---commons-codec/ | |---bookTrading/ | |---buyer/ |---seller/

| ---classes/

| ---dist/ | ---build.xml Hnh 3.3 Cu trc th mc ca d n bookTrading 3.1.5 Ci t d n Book-Trading n y chng ta c y cc yu t cn thit ci t d n mua bn sch (book-trading). dch v to file jar m user s cn thit truy nhp h thng, chng ti chn b cng c xy dng ANT - mt sn phm ca Apache Software Foundation c th download ti http://ant.apache.org. Chng ti t chc d n theo nh Hnh 3.3. Trong th mc src chng ta s lu cc m ngun. Chng ta s bt u to gi gc l booktrading v hai gi ph cho m ngun ca agent bn hng v ci cn li cho agent mua hng. Th mc class dng cha cc file .class sau khi bin dch. Th mc lib cha cc th vic ph thuc ca jade. Cui cng l th mc dist ni cha cc file .zip c phn pht cho ngi s dng. Thm na l chng ta phi to ra flie ANT build.xml ch cho ANT lm sao xy dng d n bookTrading Khi c mi trng cn thit cho d n chng ta bt u vit b khung ca lp BookBuyerAgent bng cch ci t buyer agent. Tt nhin l bookSellerAgent tt nhin l cng tng t nh vy, nhng phn ny chng ta s gi s rng agent bn hng l c nh, v tn ca chng c bit c truyn vo cc agent mua hng nh cc ton t. Khi gii thiu dch v trang vng trong phn 3.4 s b cc hn ch ny.

Nhng c im c bn ca JADE

69

package bookTrading.buyer; import jade.core.Agent; import jade.core.AID; import java.util.Vector; import java.util.Date; public class BookBuyerAgent extends Agent { // The list of known seller agents private Vector sellerAgents = new Vector(); // The GUI to interact with the user private BookBuyerGui myGui; /** * Agent initializations */ protected void setup() { // Printout a welcome message System.out.println("Buyer-agent "+getAID().getName()+" is ready."); // Get names of seller agents as arguments Object[] args = getArguments(); if (args != null && args.length > 0) { for (int i = 0; i < args.length; ++i) { AID seller = new AID((String) args[i], AID.ISLOCALNAME); sellerAgents.addElement(seller); } } // Show the GUI to interact with the user myGui = new BookBuyerGuiImpl(); myGui.setAgent(this); myGui.show(); } /** * Agent clean-up */ protected void takeDown() { // Dispose the GUI if it is there if (myGui != null) { myGui.dispose(); } // Printout a dismissal message System.out.println("Buyer-agent "+getAID().getName()+" terminated."); } /** * This method is called by the GUI when the user inserts a new * book to buy * @param title The title of the book to buy * @param maxPrice The maximum acceptable price to buy the book * @param deadline The deadline by which to buy the book */
Nhng c im c bn ca JADE 70

public void purchase(String title, int maxPrice, Date deadline) { // To be implemented } } Cc bc bin dch v chy ng dng bookTrading: To file compilejade.bat vi C:\jade\src\examples\bookTrading: ni dung nh sau v lu th mc

javac -classpath C:\jade\lib\jade.jar;C:\jade\lib\jadeTools.jar;C:\jade\lib\iiop.jar;C:\jade\lib\http.jar;C:\jade\ lib\commons-codec\commons-codec-1.3.jar;. %1 %2 %3 %4 %5 %6 %7 %8 %9 To file runjade.bat vi ni C:\jade\src\examples\bookTrading: dung nh sau v lu th mc

java -classpath .;C:\jade\lib\jade.jar;C:\jade\lib\jadeTools.jar;C:\jade\lib\iiop.jar;C:\jade\lib\http.jar;C:\jad e\lib\commons-codec\commons-codec-1.3.jar jade.Boot %1 %2 %3 %4 %5 %6 %7 %8 %9 Bin dch cc file bng dng lnh: Trong ca s dng lnh, chuyn v th mc C:\jade\src\examples\bookTrading. G lnh: compilejade *.java Chy seller agent v buyer agent: Lm tng t nh trn, nhng buyer1:BookBuyerAgent(<tn sch>) Kt qu: g lnh: runjade seller1:BookSellerAgent

Hnh 3.4: Kt qu chy seller agent v buyer agent C agent buyer v seller nn c GUI tung tc vi ngi s dng ca chng. V d, GUI ca agent buyer nn cho php mt ngi s dng ch ra mc ca cc sch m h mun mua v km theo cc thng tin khc (v d nh gi cao nht v thi hn mua sch) thun li cho vic
Nhng c im c bn ca JADE 71

giao dch. Hnh 3.4 l GUI ca agent seller. V vic pht trin cc GUI ny l nm ngoi phm vi ca ta liu ny nn chng ta s ch tp trung vo giao din cung cp bi mi GUI v xem cc lp ci t GUI l c sn. nh ngha ca lp BookBuyerGui nh sau : package bookTrading.buyer; public interface BookBuyerGui { void setAgent(BookBuyerAgent a); void show(); void hide(); void notifyUser(String message); } 3.2 CI T NHIM V CHO AGENT Nh c trnh by trong phn 3.1, vic ci t agent th hin trong cc hnh vi (behaviour). Mt behaviour i din cho mt nhim v m agent c th thc hin v c ci t nh mt i tng ca mt lp k tha jade.core.behaviours.Behaviour. mt agent thc thi nhim v c ci t trong i tng behaviour, behaviour phi c add vo agent bng phng thc addBehaviour() ca lp Agent. Cc Behaviour c th c add vo bt k thi gian no khi agent bt u (trong phng thc setup()) hoc t trong cc behaviour khc. Mi lp k tha Behaviour phi ci t 2 phng thc abstract. Phng thc action() nh ngha cc hot ng c thc hin khi behaviour thc thi. Phng thc done() tr mt gi tr boolean ch ra behaviour c hon thnh hay cha v c xa khi lung hnh vi ca agent ang thc thi. 3.2.1 Lp lch v thc thi Behaviour Mt agent c th thc thi ng thi vi behaviour. Tuy nhin, iu quan trng cn lu l vic lp lch ca cc behaviour trong agent khng c s u tin (ging threads ca java), nhng c s hp tc vi nhau. iu ny c ngha khi mt behaviour c lp lch cho vic thc thi phng thc action() ca n c gi v chy cho n khi tr v. l iu ngi lp trnh xc nh khi mt agent chuyn t vic thc thi mt behaviour sang thc hin behaviour khc. Cch tip cn ny thng to nhng kh khn cho cc nh pht trin JADE thiu kinh nghim v phi thng xuyn ch tm khi vit cc agent JADE. Mc d i hi thm s n lc ca cng ng, nhng m hnh ny hin c mt s li th: N chp nhn mt lung Java n gin bng agent. iu ny rt quan trng trong mi trng gii hn v ngun lc nh in thoi di ng. N cung cp ci thin hiu sut trong vic chuyn hnh vi nhanh hn so vi chuyn lung Java. N loi b tt c cc vn ng b gia cc behaviour ng thi truy cp vo cng ti nguyn t tt c cc behaviours c thc thi bi cng Java thread. iu ny cng lm nng cao hiu sut. Khi chuyn i behaviour xy ra, tnh trng ca agent khng bao gm bt k thng tin ngn xp no. iu ny cho php vic thc hin lin tc mt s tnh nng nng cao quan
Nhng c im c bn ca JADE 72

trng, chng hn nh lu li trng thi ca agent trong b lu tr lu di, hoc chuyn cc agent n container khc thc thi t xa (agent di ng). Cc tnh nng nng cao s c gii quyt chi tit trong phn sau. Cc bc thc hin ca lung agent c m t trong Hnh 3.5. iu quan trng cn ch l mt behaviour nh phn di y s gii quyt trc bt k behaviour khc ang c thc thi bi phng thc action() ca n v khng tr v. public class OverbearingBehaviour extends Behaviour { public void action() { while (true) { // do something } } public boolean done() { return true; } } Khi khng c cc behaviour thc thi, thread ca agent s sleep tn thi gian CPU. Lung ny s c nh thc tr li mt khi c mt behaviour thc thi.

Hnh 3.5: Lung thc thi ca agent 3.2.2 One-shot behaviour, cyclic behavior v generic behaviour C 3 kiu behaviour chnh sn c trong JADE nh sau: (1) One -shot behaviours c thit k kt thc mt giai on thc thi. Phng thc action() ch c thc thi mt ln. Lp jade.core.behaviours.OneShotBehaviour ci t phng thc done() return true v thun li khi m rng ci t cc one-shot behaviour mi. public class MyOneShotBehaviour extends OneShotBehaviour {
Nhng c im c bn ca JADE 73

public void action() { // perform operation X } } trong v d, operation X c thc hin mt ln. (2) Cyclic behaviours c thit k khng bao gi kt thc. Phng thc action() thc hin cc operation cng lc mi khi c gi. Lp Jade.core.behaviours.CyclicBehaviour ci t phng thc done() return false v thun li khi m rng ci t cc cyclic behaviour mi. public class MyCyclicBehaviour extends CyclicBehaviour { public void action() { // perform operation Y } } trong v d, operation Y c thc hin lp li cho ti khi agent thc hin ht behaviour xong. (3) Cc behaviours c nhng vo 3 trng thi v thc thi cc operation khc nhau phc thuc vo gi tr trng thi. Chng kt thc khi mt iu kin nht nh c p ng. public class ThreeStepBehaviour extends Behaviour { private int step = 0; public void action() { switch (step) { case 0: // perform operation X step++; break; case 1: // perform operation Y step++; break; case 2: // perform operation Z step++; break; } } public boolean done() { return step == 3; } } trong v d , bin step ci t trng thi ca behaviour. Thao tc X , Y, Z c thc hin tun t ti khi behaviour kt thc. JADE cng cung cp kh nng hp tc vi nhau ca cc behaviours to ra cc behaviour phc tp. Tnh nng ny, c bit thun li khi ci t cc nhim v phc tp, c m t trong phn 3.3.5.

Nhng c im c bn ca JADE

74

3.2.3 B sung thm v hnh vi ca agent Tt c cc behaviours u k tha cc phng thc onStart() v onEnd() t lp Behaviour. Cc phng thc ny c thc thi ch mt ln trc khi gi phng thc action() v sau khi phng thc done() tr v true. Chng nhm thc hin cc nhim v c bit khi to v chm dt cc operation. Khng ging vi cc phng thc action() v done() c khai bo abstract, chng ci t mc nh rng cho php ngi pht trin ci t chng theo h mun. Mt behaviour c th b hy bt c thi gian no khi gi phng thc removeBehaviour() trong lp Agent. Do nu behavior b hy s dng phng thc removebehaviour(), phng thc onEnd() ca n khng c gi. Mi behaviour c mt bin gi l myAgent tr n agent c thc thi behaviour. Cung cp mt cch n gin truy cp ti nguyn ca agent t bn trong behaviour. Cui cng iu quan trng cn ghi nh l mt i tng Behaviour c thc thi, nu n thc thi ln th 2, n cn gi phng thc reset() trc tin. Nu khng lm iu ny c th dn n kt qu khng mong mun. 3.2.4 Lp lch cho cc hnh vi ca agent JADE cung cp 2 lp (trong package jade.core.behaviours) m c th ci t to cc behaviour thc thi khi chn thi gian cho n. (1) WakerBehaviour c cc phng thc action() v done() c ci t trc thc thi phng thc abstract onWake() sau 1 thi gian xc nh kt thc (c t trong cu trc). Sau khi thc thi phng thc onWake () th behaviour kt thc. public class MyAgent extends Agent { protected void setup() { System.out.println("Adding waker behaviour"); addBehaviour(new WakerBehaviour(this, 10000) { protected void onWake() { // perform operation X } } ); } } Trong v d ny, operation X c thc hin 10 s sau khi add behaviour waker . (2) TikerBehaviour c cc phng thc action() v done c ci t trc thc thi lp i lp li phng thc abstract onTick(), ch i mt thi gian xc nh (c t trong cu trc) sau mi ln thc thi. Mt TickerBehaviour khng bao gi kt thc tr phi n c xa hoc phng thc stop() ca n c gi. public class MyAgent extends Agent { protected void setup() { addBehaviour(new TickerBehaviour(this, 10000) { protected void onTick() { // perform operation Y } } );
Nhng c im c bn ca JADE 75

} } trong v d ny, operation Y c thc hin chu k 10s. 3.2.5 Cc hnh vi trong v d bookTrading 3.2.5.1 Cc hnh vi ca BookBuyerAgent Khi mt agent buyer c yu cu mua sch, mt phng php n gin c th p dng thc hin nhim v theo chu k hi tt c cc agent seller bit nu chng c sn sch bn, v nu nh vy, cung cp 1 giao dch. Ty thuc vo iu ny v trn phm vi gi c xc nh bi ngi dng, agent buyer c th hi seller cung cp giao dch tt nht bn sch. Chng ta ci t chc nng ny bng vic s dng TickerBehaviour, mi tick, thm behaviour khc yu cu cc agent seller. TickerBehaviour ny c add phng thc setup(): protected void setup() { ... // Add a TickerBehaviour that schedules a request to seller agents every minute addBehaviour(new TickerBehaviour(this, 60000) { protected void onTick() { ... // Perform the request myAgent.addBehaviour(new RequestPerformer()); } } ); ... } } Hnh vi RequestPerformer c nhim v nhn phn hi t cc seller v gi thng ip p ng ca buyer ti seller. Ci t lp behaviour bn trong lp agent s thc thi chng tt v n cho php cc behaviours truy cp trc tip ti ti nguyn ca agent ging nh bin myGui ca lp BookBuyerAgent. 3.2.5.2 Hnh vi ca BookSellerAgent Ngi dng phi cung cp tiu sch v gi ban u ca mi quyn sch c bn. Catalogue cha cc sch ang c bn l mt hash table. Ngoi ra, seller agent c hai hnh vi CyclicBehaviour l OfferRequestsServerv PurchaseOrderServer phc v cc yu cu ang c gi ti. public class BookSellerAgent extends Agent { // The catalogue of books for sale (maps the title of a book to its price) private Hashtable catalogue; // The GUI by means of which the user can add books in the catalogue private BookSellerGui myGui; // Put agent initializations here protected void setup() {
Nhng c im c bn ca JADE 76

// Create the catalogue catalogue = new Hashtable(); // Create and show the GUI myGui = new BookSellerGui(this); myGui.show(); // Register the book-selling service in the yellow pages DFAgentDescription dfd = new DFAgentDescription(); dfd.setName(getAID()); ServiceDescription sd = new ServiceDescription(); sd.setType("book-selling"); sd.setName("JADE-book-trading"); dfd.addServices(sd); try { DFService.register(this, dfd); } catch (FIPAException fe) { fe.printStackTrace(); } // Add the behaviour serving queries from buyer agents addBehaviour(new OfferRequestsServer()); agents } // Put agent clean-up operations here protected void takeDown() { // Deregister from the yellow pages try { DFService.deregister(this); } catch (FIPAException fe) { fe.printStackTrace(); } // Close the GUI myGui.dispose(); // Printout a dismissal message System.out.println("Seller-agent " + getAID().getName() + " terminating."); } /** This is invoked by the GUI when the user adds a new book for void updateCatalogue(final String title, final int
77

// Add the behaviour serving purchase orders from buyer addBehaviour(new PurchaseOrdersServer());

sale

*/ public price) {

Nhng c im c bn ca JADE

addBehaviour(new OneShotBehaviour() { public void action() { catalogue.put(title, new Integer(price)); System.out.println(title + " inserted catalogue. Price = " + price); } }); } 3.3 TRUYN THNG GIA CC AGENT

into

Truyn thng gia cc agent c l l tnh nng c bn nht ca Jade v c thc hin theo cc c t FIPA c m t trong Phn 1.2. Cc m hnh truyn thng da trn truyn thng ip bt ng b. Nh vy, mi agent c mt hp th (hng i thng ip ca cc agent), ni Jade ti thi gian chy gi thng ip c gi n bi cc agent khc. Bt c khi no mt thng ip c gi vo trong hng i hp th th agent c gi thng ip s nhn c thng bo. Tuy nhin khi no, hoc nu, agent chn ly thng ip t hng i x l l do vic la chn thit k ca lp trnh vin. Qu trnh ny c m t trong hnh 3.6. Cc nh dng c th ca thng ip trong Jade tng thch vi nh dng c nh ngha trong cu trc thng ip FIPA-ACL c m t trong Phn 1.2.3. Mi thng ip bao gm cc trng sau: Ngi gi thng ip. Danh sch nhng ngi nhn. Nhng hnh ng giao tip (cn gi l 'performative - biu hin') ch ra nhng g ngi gi d nh t c bng cch gi thng ip. V d, nu hnh ng l mt yu cu (request), tc l ngi gi mun ngi nhn thc hin mt hnh ng, nu l thng bo (inform) tc l ngi gi mun ngi nhn bit mt thng tin g , nu l mt xut (proposal) hay mt yu cu c xut (CFP) ngha l ngi gi mun tham gia vo mt m phn.

Hnh 3.6: C ch truyn thng ip khng ng b trong JADE Ni dung c cha cc thng tin thc s c trao i bng thng ip (v d, hnh ng c thc hin trong mt thng ip YU CU, hoc thc t l ngi gi mun tit l trong thng ip THNG BO). Ngn ng ni dung ch ra c php c s dng th hin ni dung. C ngi gi v ngi nhn phi c kh nng m ha v phn tch cc biu thc tun th vi c php ny
78

Nhng c im c bn ca JADE

cho vic giao tip c hiu qu. Cc ontology ch ra vn t vng ca nhng biu tng c s dng trong ni dung. C ngi gi v ngi nhn phi quy v cng ngha nh nhau vi cc biu tng ny vic giao tip c hiu qu. Mt s trng b sung c s dng kim sot mt s cuc hi thoi ng thi v xc nh nhng thi gian tr khi nhn mt tr li nh conversation id, reply with, in reply to v reply by.

Mt thng ip trong Jade c thc hin nh l mt i tng ca lp jade.lang.acl.ACLMessage cung cp cc phng thc get v set truy cp vo tt c cc trng c c t bi nh dng ACL.Tt c cc performatives c nh ngha trong c t FIPA c nh x nh cc hng s trong lp ACLMessage. 3.3.1 Gi thng ip Gi thng ip n agent khc n gin nh vic in vo cc trng ca mt i tng ACLMessage v sau gi phng thc send() ca lp Agent. on code di y to ra mt thng ip thng bo mt agent c bit danh l Peter rng ngy hm nay tri ma: ACLMessage msg = new ACLMessage(ACLMessage.INFORM); msg.addReceiver(new AID("Peter", AID.ISLOCALNAME)); msg.setLanguage("English"); msg.setOntology("Weather-forecast-ontology"); msg.setContent("Today it's raining"); send(msg); Cc ACL performative c nh ngha bi FIPA cng nh ngha cc ng ngha hnh thc c th c khai thc lm cho mt agent t ng a ra cc quyt nh ng n khi nhn c mt thng ip.Tnh nng cao cp ny khng c s dng trong v d v bn sch ca chng ta, nhng s c miu t sau ny trong chng sau. Thay vo , chng ti s chn cc performative s dng trong cc thng ip trao i gia cc agent mua v bn trn c s ngha trc quan ca chng. c bit chng ta c th s dng kh tin li performative CFP (Call for proposal ku gi cc xut) cho nhng thng ip m cc agent mua gi n cc agent bn yu cu cung cp mt cun sch. performative PROPOSE c th c s dng cho nhng thng ip mang theo nhng li cho hng ca ngi bn v performative ACCEPT_PROPOSAL cho nhng thng ip mang theo nhng chp nhn li cho hng , tc l vic t mua hng. Cui cng l performative REFUSE s c s dng cho cc thng ip c gi bi cc agent bn khi cun sch c yu cu khng c trong danh mc ca h. gi cho mi th iu n gin n mc c th, chng ta s t tiu ca cun sch mun mua vo trong ni dung ca thng ip CFP c gi bi cc agent mua. Tng t, ni dung ca cc thng ip PROPOSAL mang theo nhng li cho hng ca cc agent l bn s l gi ca cun sch. y l cch mt thng ip CFP c th c to ra v gi bi mt agent mua: ACLMessage cfp = new ACLMessage(ACLMessage.CFP); for (int i = 0; i < sellerAgents.length; ++i) { cfp.addReceiver(sellerAgents[i]);
Nhng c im c bn ca JADE 79

} cfp.setContent(targetBookTitle); cfp.setConversationId("book-trade"); cfp.setReplyWith("cfp"+System.currentTimeMillis()); value myAgent.send(cfp); 3.3.2 Nhn thng ip

//

Unique

Nh cp trn, ti thi gian chy Jade s t ng a cc thng ip vo hng i thng ip c nhn ca mt ngi nhn ngay sau khi chng ti. Mt agent c th ly cc thng ip t hng i thng ip ca mnh bng phng thc receive(). Phng thc ny s tr v thng ip u tin trong hng i (do gy ra vic n s c b khi hng i), hoc null nu hng i rng, v ngay lp tc tr li. ACLMessage msg = receive(); if (msg != null) { // X l thng ip ) 3.3.3 Kha hnh vi i thng ip Lp trnh vin thng cn phi thc hin cc hnh vi x l cc thng ip nhn c t cc agent khc. y l trng hp i vi hnh vi OfferRequestsServerv PurchaseOrderServer c gii thiu trong phn 3.2.5.2, y chng ta cn phc v cc thng ip t cc agent mua. Nhng hnh vi ny phi c lin tc thc hin (cyclic behaviours) v, mi ln thc hin phng thc action(), phi kim tra xem thng ip c nhn cha v x l n. Trong trng hp ca chng ta hai hnh vi l rt ging nhau. y chng ta a ra hnh vi OfferRequestsServer. y l hnh vi s dng bi cc agent bn sch phc v cho cc yu cu n t vic t mua sch ca cc agent mua. Nu cun sch ch ra l trong danh mc c ca ngi bn th agent bn tr li vi mt thng ip PROPOSAL xc nh gi c. Nu khng th mt thng ip REFUSE c gi li. private class OfferRequestsServer extends CyclicBehaviour { public void action() { MessageTemplate mt = MessageTemplate.MatchPerformative(ACLMessage.CFP); ACLMessage msg = myAgent.receive(mt); if (msg != null) { // CFP Message received. Process it String title = msg.getContent(); ACLMessage reply = msg.createReply(); Integer price = (Integer) catalogue.get(title); if (price != null) { // The requested book is available for sale. //Reply with the price
Nhng c im c bn ca JADE 80

reply.setPerformative(ACLMessage.PROPOSE); reply.setContent(String.valueOf(price.intVal ue())); } else { // The requested book is NOT available for //sale. reply.setPerformative(ACLMessage.REFUSE); reply.setContent("not-available");

} myAgent.send(reply); } else { block(); }

} Nh thng l, chng ti thc hin hnh vi OfferRequestsServer nh l mt lp bn trong ca lp BookSellerAgent. iu ny n gin ha mi th v chng ta c th truy cp trc tip vo danh mc sch bn. Tt nhin phng php ny ch c xut, khng bt buc. Phng thc createReply() ca lp ACLMessage t ng to ra mt ACLMessage mi, t ng ci t nhng ngi nhn v bt k mt trng cn thit no cho vic kim sot cuc hi thoi (v d nh conversation-id, reply-with, in-reply-to). Tuy nhin, chng ta c th nhn thy rng ngay khi chng ti thm cc hnh vi trn, lung hot ng ca agent bt u mt vng lp lin tc m cc k tn dung lng CPU. Mt khc, chng ti mun phng thc action() ca hnh vi OfferRequestsServer nh c thc thi ch khi nhn c mt thng ip mi. lm c iu ny, chng ta phi s dng phng thc block() ca lp Behaviour, trong , mc d nh nhng g tn phng thc gi , n khng phi l mt cuc gi b chn, m ch nh du hnh vi nh 'b chn' cc agent khng cn lp lch thc hin n. Khi mt thng ip mi c a vo hng i ca cc agent, tt c cc hnh vi b cm tr nn c hiu lc thc hin li chng c c hi x l thng ip nhn c. Phng thc action() do phi c sa i nh sau: public void action() { ACLMessage msg = myAgent.receive(); if (msg != null) { // Message received. Process it ... } else { block(); } } Code trn c xem l tiu biu v l khun mu cho vic nhn cc thng ip bn trong mt hnh vi.

Nhng c im c bn ca JADE

81

3.3.4 La chn thng ip t hng i Ta thy OfferRequestsServer v PurchaseOrderServer u l cc hnh vi vng vi mt phng thc action() bt u vi mt li gi n myAgent.receive(). Chng ta c th nhn thy mt vn l lm th no c th chc chn rng hnh vi OfferRequestsServer ch c t hng i nhng thng ip CFP v hnh vi PurchaseOrderServer ch c nhng thng ip cha yu cu mua hng? gii quyt vn ny chng ta phi sa i m hin ti bng cch xc nh cc mu (template) c s dng khi gi phng thc receive(). Khi mt mu c xc nh, phng thc receive() tr v thng ip u tin tha mn v b qua tt c cc thng ip khng tha mn. Mu ny c ci t l th hin ca lp lp jade.lang.acl.MessageTemplate cung cp mt s phng thc to ra cc mu mt cch rt n gin v linh hot. Nh cp trong Phn 3.3.1, chng ta s dng CFP performative cho thng ip mang theo cc li gi c mua sch v ACCEPT_PROPOSAL performative cho thng ip mang theo li chp nhn xut. V vy chng ta c th sa i cc phng thc action() ca OfferRequestsServer sao cho cc li gi n myAgent.receive () b qua tt c cc thng ip, ngoi tr nhng ngi c performative l CFP: MessageTemplate mt = MessageTemplate.MatchPerformative(ACLMessage.CFP); ACLMessage msg = myAgent.receive(mt); 3.3.5 Cc cuc hi thoi phc tp Hnh vi BookNegotiator tho lun trong Phn 3.2.5.1 i din cho mt v d v mt hnh vi thc hin mt cuc hi thoi phc tp. Mt cuc hi thoi l mt chui cc thng ip trao i gia hai hay nhiu agent vi nhng quan h nhn qu v tm thi c nh ngha r rng. Hnh vi BookNegotiator gi mt thng ip CFP cho cc agent (cc agent bn c bit n) v nhn c tt c phn hi. Sau , nu nhn c t nht mt phn hi PROPOSE, n phi gi thm mt thng ip ACCEPT_PROPOSAL (cho agent bn m c li xut tt nht) v ch xc nhn. Bt c khi no mt cuc hi thoi nh ny phi c tin hnh th l mt s thc hnh tt xc nh cc trng kim sot hi thoi trong cc thng ip trao i bn trong hi thoi . iu ny cho php d dng to ra cc mu r rng ph hp vi nhng phn hi c th c. private class BookNegotiator extends Behaviour { private String title; private int maxPrice; private PurchaseManager manager; private AID bestSeller; // The seller agent who provides the best offer private int bestPrice; // The best offered price private int repliesCnt = 0; // The counter of replies from seller agents private MessageTemplate mt; // The template to receive replies private int step = 0; public BookNegotiator(String t, int p, PurchaseManager m) {
Nhng c im c bn ca JADE 82

} public void action() { switch (step) { case 0: // Send the cfp to all sellers ACLMessage cfp = new ACLMessage(ACLMessage.CFP); for (int i = 0; i < sellerAgents.length; ++i) { cfp.addReceiver(sellerAgents[i]); } cfp.setContent(title); cfp.setConversationId("book-trade"); cfp.setReplyWith("cfp"+System.currentTimeMill is()); // Unique value myAgent.send(cfp); // Prepare the template to get proposals mt = MessageTemplate.and( MessageTemplate.MatchConversationId("booktrade"), MessageTemplate.MatchInReplyTo(cfp.getReplyWi th())); step = 1; break; case 1: // Receive all proposals/refusals from seller agents ACLMessage reply = myAgent.receive(mt); if (reply != null) { // Reply received if (reply.getPerformative() == ACLMessage.PROPOSE) { // This is an offer int price = Integer.parseInt(reply.getContent() ); if (bestSeller == null | | price < bestPrice) { // This is the best offer at present bestPrice = price; bestSeller = reply.getSender(); } }
Nhng c im c bn ca JADE 83

super(null); title = t; maxPrice = p; manager = m;

repliesCnt++; if (repliesCnt >= sellerAgents.length) { // We received all replies step = 2; } } else { block(); } break; case 2: if (bestSeller != null && bestPrice <= maxPrice) { // Send the purchase order to the seller that provided the best offer ACLMessage order = new ACLMessage(ACLMessage.ACCEPT_PROPOSAL); order.addReceiver(bestSeller); order.setContent(title); order.setConversationId("book-trade"); order.setReplyWith("order"+System.currentTime Millis()); myAgent.send(order); // Prepare the template to get the purchase order reply mt = MessageTemplate.and( MessageTemplate.MatchConversationId("booktrade"), MessageTemplate.MatchInReplyTo (order.getReplyWith())); step = 3; } else { // If we received no acceptable proposals, terminate step = 4; } break; case 3: // Receive the purchase order reply reply = myAgent.receive(mt); if (reply != null) { // Purchase order reply received if (reply.getPerformative() == ACLMessage.INFORM) { // Purchase successful. We can terminate myGui.notifyUser("Book "+title+" successfully purchased.Price = " + bestPrice);
Nhng c im c bn ca JADE 84

manager.stop(); } step = 4; } else { block(); } break;

} public boolean done() { return step == 4; } } // End of inner class BookNegotiator Cc hi thoi phc tp thng c thc hin da theo mt giao thc c xc nh r rng, chng hn nh nhng g c xc nh bi FIPA. Jade cung cp h tr phong ph cho mt s cc giao thc tng tc c s dng ph bin nht trong gi jade.proto. Cuc hi thoi m chng ta thc hin trn, v d, theo giao thc 'Contract-net' giao thc m c th l rt d dng thc hin bng cch khai thc lp jade.proto.ContractNetInitiator. iu ny s tip tc c m t trong cc phn sau. 3.3.6 Nhn thng ip ti node ang kha Bn cnh phng thc receive(), lp Agent cng cung cp phng thc blockingReceive(), nh tn cho thy, l mt li gi kha: n khng tr li cho n khi c mt thng ip trong hng i thng ip ca agent. Mt phin bn qu ti m dng MessageTemplate nh mt tham s (n khng tr li cho n khi c mt thng ip ph hp vi mu quy nh) cng kh dng. iu quan trng cn nhn mnh rng phng thc blockingReceive () thc s chn thread ca agent. V vy nu bn gi blockingReceive () t trong mt hnh vi, iu ny ngn cn tt c cc hnh vi khc cho n khi thc hin li gi n blockingReceive () tr v. Hy cng xem xt, mt vic lp trnh tt l nhn c cc thng ip s dng blockingReceive() trong phng thc setup() v takeDown(); s dng receive() trong s kt hp vi Behaviour.block () (nh c nu trong Phn 3.3.3) bn trong cc hnh vi. 3.4 KHM PH AGENT DCH V TRANG VNG Khi vit code chng ta gi nh rng c mt tp c nh cc agent ngi bn (thng qua mi agent ngi mua nh l cc i s ban u). Trong chng ny chng ta loi b gi nh ny bng cch khai thc dch v cc trang vng c cung cp bi JADE platform cho php cc agent ngi mua t ng pht hin cc agent ngi bn sn c ti mt im c a ra trong thi gian. 3.4.1 DF agent Mt dch v yellow pages cho php cc agent a ra cc m t ca mt hoc nhiu cc dch v m chng cung cp theo th t m cc agent khc c th d dng pht hin v khai thc chng. iu ny c m t trong hnh 3.5. Bt k agent no cng c th ng k (xut bn) cc dch v
Nhng c im c bn ca JADE 85

v tm kim cho cc dch v (khai thc). ng k, xa, sa i v tm kim c th c thc hin bt c lc no trong thi gian sng ca agent.

Hnh 3.7: Dch v trang vng Dch v cc trang vng trong Jade, ph hp vi cc c t qun l agent ca FIPA (FIPA Agent Management), c cung cp bi mt agent c bit gi l DF (Directory Facilitator). Mi FIPAcompliant platform nn ng cai mt agent DF mc nh (tn a phng l df@<platformname>). Cc agent DF khc c th c trin khai nu c yu cu v mt vi agent DF (bao gm c mc nh) c th c t chc thnh lin on cung cp mt danh mc lit k duy nht cc trang vng phn tn. 3.4.2 Tng tc vi DF agent DF l mt agent, n c th tng tc vi n nh vi bt k agent khc bng cch trao i cc thng ip ACL s dng mt ngn ng c ni dung thch hp (v d ngn ng SL0) v mt ontology thch hp (v d FIPA-agent-management ontology) nh c nh ngha trong cc c t FIPA. n gin ha cc tng tc ny, Jade cung cp lp jade.domain.DFService m c th xut bn v tm kim cc dch v qua nhiu li gi phng thc. 3.4.2.1 Cng b dch v Mt agent mun a ra mt hoc nhiu dch v phi cung cp DF vi mt m t bao gm AID ring ca mnh, mt danh sch cc dch v cung cp ty chn danh sch cc ngn ng v ontology cc agent khc s dng tng tc vi n. Mi m t dch v c cng b phi bao gm loi dch v, tn dch v, cc ngn ng v cc ontology c yu cu s dng dch v v tp cc thuc tnh c trng ca dch v di dng cp gi tr kha. Cc lp DFAgentDescription, SerivceDescription v Property, bao gm trong gi jade.domain.FIPAAgentManagement , i din cho cc khi nim tru tng ny. cng b mt dch v, mt agent phi to mt m t thch hp (nh mt th hin ca lp DFAgentDescription) v gi phng thc tnh register() ca lp DFService. Vi v d tham kho book-trading, cc agent ngi bn ng k kh nng bn ca chng (mt dch v kiu Book-selling) trong phng thc setup() ca chng nh sau : protected void setup() { ...
Nhng c im c bn ca JADE

86

} Ch rng trong v d n gin ny chng ta khng c t bt k ngn ng, ontology hoc cc thuc tnh c trng dch v no. Khi mt agent kt thc, n thc hin xa cc dch v cng b: protected void takeDown() { // Deregister from the yellow pages try { DFService.deregister(this); } catch (FIPAException fe) { fe.printStackTrace(); } ... } 3.4.3 Tm kim dch v Mt agent mun tm kim cc dch v phi cung cp DF vi mt m t mu. Kt qu tm kim l mt danh sch tt c cc m t m ph hp vi mu cung cp. Theo cc c t FIPA, mt m t ph hp vi mu nu tt c cc lnh vc c c t trong mu c din t trong m t c gi tr nh nhau. Phng thc tnh search() ca lp DFService c th c s dng nh v d code c s dng bi cc agent ngi mua sch duy tr mt danh sch mi nht cc agent ngi bn: public class BookBuyerAgent extends Agent { // The list of known seller agents private Vector sellerAgents; protected void setup() { ... // Update the list of seller agents every minute addBehaviour(new TickerBehaviour(this, 60000) { protected void onTick() { // Update the list of seller agents
Nhng c im c bn ca JADE 87

// Register the book-selling service in the yellow pages DFAgentDescription dfd = new DFAgentDescription(); dfd.setName(getAID()); ServiceDescription sd = new ServiceDescription(); sd.setType("Book-selling"); sd.setName(getLocalName()+"-Book-selling"); dfd.addServices(sd); try { DFService.register(this, dfd); } catch (FIPAException fe) { fe.printStackTrace(); } ...

} } } }

DFAgentDescription template = new DFAgentDescription(); ServiceDescription sd = new ServiceDescription(); sd.setType("Book-selling"); template.addServices(sd); try { DFAgentDescription[] result = DFService.search(myAgent, template); sellerAgents.clear(); for (int i = 0; i < result.length; ++i) { sellerAgents.addElement(result [i].getName()); } } catch (FIPAException fe) { fe.printStackTrace(); }

Lu rng tm kim c lp i lp li mt ln trong mt pht k t khi cc agent ngi bn c th t ng xut hin v bin mt trong h thng. Jade DF cng cung cp mt k thut cho php cc agent c thng bo ngay khi cc agent khc ng k hoc xa khi cc dch v. Khai thc k thut ny (iu c th s thch hp hn trong trng hp ca chng ta) yu cu khi to mt giao thc FIPA-Subcribe vi DF. Chng ta s m t iu ny trong phn 5.4 khi tho lun v cc giao thc tng tc. 3.5 AGENT VI GIAO DIN HA Mt vn in hnh m nhng ngi pht trin phi lm l cch qun l cc agent Jade tng tc vi GUI (giao din ha ngi dng) ca h v ngc li. Vn y l cc m hnh lp trnh giao tip gia cc lung thch hp phi c s dng gia cc lung agent. N phi c nh thc bt c khi no nhn c mt thng ip ACL v AWT gi i v n thc dy bt c khi no cc thnh phn ca AWT (tc l cc thnh phn GUI) kch hot cc kiu s kin khc nhau (v d ngi dng nhn vo mt nt). Vn tiu biu cn trnh c phn ng vi mt s kin AWT bng cch chn cc s kin gi i cho ti khi mt thng ip ACL c nhn, hoc cp nht GUI t lung bn trong hoc sa i cc bin khng ng b t c hai lung. Bn di l mt vi gi v cch thc hnh lp trnh tt trnh mt vi vn ny. 3.5.1 Thc hnh lp trnh tt vi b lng nghe s kin AWT Khi mt agent c mt GUI, n cn phn ng li cc hnh ng ca ngi dng, nh l khi u mt hi thoi mi khi ngi dng nhn mt nt. Khi s kin hnh ng AWT xy ra, phng
Nhng c im c bn ca JADE 88

thc actionPerformed() c gi bng s kin lung gi i trn ActionListener ng k ngun gc s kin. Bn trong phng thc ny, mt thc hnh lp trnh tt l chun b mt i tng lch trnh JADE Behaviour thc hin bng lung s kin. Bn di l mt on m t RMA Agent of JADE (lp jade.tools.rma.rma). Phng thc ny c gi khi ngi dng tng tc vi GUI v chn mt agent tiu dit. Phng thc ch ra cch m mt hnh vi c minh ha, cc i s ca n c chun b v ln lch thc hin. public void actionPerformed(ActionEvent e) { /*omissis*/ AgentTree.Node curNode =(AgentTree.Node)panel.treeAgent.tree.getSelectionPath( ); rma.killAgent(new AID(curNode.getName(), AID.ISLOCALNAME)); /*omissis*/ } public void killAgent(AID name) { KillAgent ka = new KillAgent(); ka.setAgent(name); try { Action a = new Action(); a.setActor(getAMS()); a.setAction(ka); ACLMessage requestMsg = getRequest(); requestMsg.setOntology(JADEManagementOntology.NAME); getContentManager().fillContent(requestMsg, a); addBehaviour(new AMSClientBehaviour("KillAgent", requestMsg)); } catch(Exception fe) { fe.printStackTrace(); } } Nhc li rng cc hnh vi c ln lch thc hin ch sau khi phng thc setup() ca i tng agent c kt thc. Hnh vi lun c thc hin bi cc lung agent. Kt qu l khng c ng b gia cc hnh vi khc nhau c yu cu. Tt nhin, trong mt vi trng hp, thm mt hnh vi l gnh nng khng cn thit khi phn ng n hnh ng AWT phi c thay i mt cch n gin gi tr ca mt bin hoc chun b v gi mt ACLMessage (nh l phn phi thng ipk l hon ton khng ng b). y l tt c cc hot ng hp l cho lung AWT, ni chung, khng gy ra vn . Ngc li, ngn chn cc cuc gi (v d Agent.blockingReceive()) khng bao gi c thc thi trong lung AWT 3.5.2 Thc hnh lp trnh bng cch sa i giao din ha trong lung thc thi ca Agent C kin cho rng agent c cc lung thc thi ca ring n, cc chuyn gia lp trnh Java s ngay lp tc suy ra rng cp nht GUI t bn trong cc lung ny c th dn n cc vn bt
Nhng c im c bn ca JADE 89

ng do cc vn ng b ha. AWT, Swing, MIDP (v hu ht cc framework giao din ngi dng khc) cung cp mt phng thc c bit thch hp xp mt i tng Runnable v khin n c thc hin ng b trn lung s kin gi i GUI : java.awt.EventQueue.invokeLater() cho AWT javax.swing.SwingUtilities.invokeLater() cho Swing javax.microedition.lcdui.Display.callSerially() cho MIDP

V vy, vic thc hnh lp trnh c gii thiu l ng gi trong mt i tng Runnable tt c cc truy cp n cc i tng GUI t mt hnh vi JADE, ni chung, t mt lung m khng phi l EventDispatchThread. Sau , cc phng thc thch hp nn c s dng gi i tng Runnable ny ti EventDispatchThread. on code bn di t RMA Agent ca lp JADE (jade.tools.rma.rma). Phng thc ny c gi khi RMA Agent nhn mt thng ip thng bo rng mt agent mi c to ra trn mt container nh. Phng thc ch ra cch m lung agent to ra mt th hin ca i tng Runnable mi v gi n n EventDispatchThread. i tng Runnable ny chu trch nhim cp nht GUI bng cch to ra i tng javax.swing.tree.TreeNode mi v thm n vo JTree ca container nh. public void addAgent(final String containerName, final AID agentID){ Runnable addIt = new Runnable() { public void run() { String agentName = agentID.getName(); AgentTree.Node node = tree.treeAgent.createNewNode(agentName,1); /* [omissis] */ tree.treeAgent.addAgentNode((AgentTree.AgentNode)node,c ontainerName, agentName, agentAddresses, "FIPAAGENT"); } }; SwingUtilities.invokeLater(addIt); }

Nhng c im c bn ca JADE

90

CHNG 4 NHNG C IM NNG CAO CA JADE


Trong chng 3, chng ta m t nhng c im c bn ca JADE. Vi nhng c tnh ny, chng ta hon ton c kh nng pht trin nhng h a agent phn tn trn nn Jade. Tuy nhin trong thc t vic ci t cc ng dng vi cc c tnh tng i phc tp v ngi pht trin s phi gii quyt rt nhiu vn m c th s tr nn d dng hn khi s dng cc c tnh nng cao ca nn JADE s c trnh by trong chng ny. Nhng vn lin quan ti vic kim sot cc biu thc ni dung phc tp bng ontology v ngn ng ni dung codes, kh nng xy dng cc hnh vi phc tp t nhng hnh vi n gin, h tr cho vic to ra cc cuc hi thoi c tun theo cc giao thc tng tc c nh ngha bi FIPA. 4.1 ONTOLOGY V NGN NG NI DUNG Nh chng ta bit, cch n gin truyn thng tin gia cc agent l s dng thng ip ACL vi ni dng l cc chui hoc c kiu chui byte. Tuy nhin, trong thc t, cc agent cn phi giao tip nhng thng tin phc tp hn. V d, phn bit cc cun sch vi nhau, t nht chng ta cng phi a ra cc c im nh tn sch, tn tc gi v nh sn xut. Khi m t nhng chui thng tin nh vy, ta cn phi iu chnh sao cho ng c php bn nhn c th hiu c ni dung thng ip sau khi tch ra tng gi tin c th (tn sch, tn tc gi, nh sn xut) theo cc thut ng ca FIPA. Nhng c php c gi l ngn ng ni dung. FIPA nh ngha ngn ng SL dng giao tip gia hai agent c bit ca JADE l AMS v DF. V d sau y m ha thng tin lin quan ti sch theo ngn ng SL:
(Book :title Programming Multi Agent System with JADE :authors (sequence F.Bellifemine G.Caire D.Greenwood) :editor Wiley)

ngha ca biu thc ny l miu t cc c im ca mt cun sch c: Tn sch: Programming Multi Agent System with JADE Cc tc gi: F.Bellifemine, G.Caire v D.Greenwood Nh sn xut: Wiley

hiu c biu thc ny, agent bn nhn phi c nhng hiu bit chung vi agent bn gi v cc khi nim: book, title, authors, editor. Tp cc khi nim c nh ngha trong mt ti liu gi l Ontology. Ontology c tnh cht ph thuc vo min ng dng. Mi min ng dng khc nhau c tp Ontology khc nhau. V d, Ontology trong min mua bn chng khon khc vi Ontology trong min mua bn sch. Tuy nhin, cch trao i thng tin theo kiu chui ch ph hp cho vic a trc tip thng tin vo trong mt thng ip ACL. iu ny gy bt tin cho agent khi x l thng ip v ti mi thi im c thng ip c trao i, agent phi thc hin mt s bc:
Nhng c im nng cao ca JADE 96

Bn gi cn chuyn i m t bn trong thnh biu thc ni dung ACL v bn nhn phi thc hin chuyn i ngc li. Bn nhn cn phi thc hin mt s thao tc kim tra ng ngha xc minh rng cc thng tin nhn c tun theo cc quy tc ca Ontology chung.

Vi s h tr ca JADE trong vic cung cp Ontology v ngn ng ni dung, cc bc ny c thc hin mt cch t ng.

Hnh 4.1: H tr ca Ontology v ngn ng ni dung trong JADE C mt s cng ngh khc c th s dng nh Serialization trong Java, hay XML miu t thng tin phc tp. Tuy nhin, chng nm ngoi phm vi ca bi vit ny. Bn c c th t tm hiu v u nhc im ca tng cng ngh c nhng la chn ph hp. 4.1.1 Cc thnh phn chnh Cc thao tc chuyn i v kim tra nh gii thiu trn c thc hin bi mt i tng qun l ni dung thuc lp ContentManager trong gi jade.content. Mi agent c mt i tng qun l ni dung v c th s dng i tng ny bng cch gi phng thc getContentManager(). Lp ContentManager cung cp tt c cc phng thc dng cho vic chuyn i i tng Java sang chui (hoc chui byte) v ngc li cng nh cc phng thc chn chng vo phn content trong thng ip ACL. i tng qun l ni dung cung cp mt giao din c th lm vic ny, nhng thc cht n li giao cho Ontology v ngn ng ni dung Codec. Ontology thc hin kim tra thng tin da trn quan im v ng ngha, trong khi ngn ng ni dung li nhn v mt cu trc. 4.1.2 M hnh tham chiu ni dung c th thc hin tt vic kim tra ng ngha ca biu thc ni dung, JADE cn phn loi tt c cc thnh phn lin quan n min theo cc c im ng ngha chung ca chng. Vic phn loi ny bt ngun t ngn ng ACL ca FIPA. Ngn ng ny i hi ni dung ca mi thng ip ACLMessage phi c ng ngha tun theo chc nng thc hin (performative) ca n. V t (Predicate): l nhng biu thc din t trng thi ca s vt hin tng v thng tr v gi tr true hoc false. Chng ch yu c s dng trong ni dung ca cc thng ip dng INFORM hoc QUERY-IF, v khng c ngha nu s dng trong thng ip REQUEST. V d, v t Works-for din t trng thi mt ngi c tn l John ang lm vic cho cng ty c tn l TILAB
97

Nhng c im nng cao ca JADE

(Works-for (Person :name John) (Company :name TILAB)) Thut ng (Term): l nhng biu thc xc nh nhng thc th tn ti trong th gii thc m agent ni chuyn v suy lun v chng. Thut ng c phn thnh hai loi: Khi nim (Concept): l nhng biu thc xc nh nhng thc th c cu trc phc tp c nh ngha trong cc thuc tnh (slot). V d, khi nim Person xc nh mt thc th c cc c im l: tn ca ngi l John v tui ca ngi l 33. Person :name John :age 33) Chng thng khng c ngha nu s dng trc tip lm ni dung ca thng ip ACL m thng c kt hp bn trong v t hoc khi nim khc. V d, khi nim Person: (Person :name J.R.R. Tolkjien) c kt hp bn trong khi nim Book trong biu thc sau: (Book :title The Lord of the rings :author (Person :name J.R.R. Tolkjien) Hnh ng ca agent (Agent action): l nhng khi nim ch hnh ng c th c thc hin bi mt s agent. Chng l ni dung ca nhng thng ip c kiu REQUEST. Primitive: l nhng biu thc xc nh cc thc th nguyn t nh string, integer Aggregate: l nhng biu thc xc nh cc thc th l nhm cc thc th khc. V d, y l mt thc th c to thnh t vic nhm hai thc th Person khc: (sequence (Person :name John) (Person :name Bill) Identifying Referential Expressions (IRE): l nhng biu thc xc nh cc thc th lm cho v t ca n ng. V d, IRE sau c ngha l tm tt c nhng ngi ang lm vic cho cng ty c tn TILAB: (all ?x (Works-for ?x (Company :name TILAB)) Variable: l nhng biu thc xc nh mt phn t generic m khng bit trc c.

Ngn ng ni dung biu din v phn bit gia tt c cc kiu phn t trn, cn Ontology l mt tp cc lc nh ngha cu trc ca predicate, agent action v concept. Trong m hnh tham chiu ni dung sau, hai kiu phn t na c gii thiu. ContentElementList l mt danh sch cc phn t thuc ba kiu: predicate, agent acion v IRE. ContentElement l mt kiu cha c k tha bi cc kiu trn. 4.1.3 S dng Ontology v ngn ng ni dung Phn ny trnh by nhng c trng c bn ca Ontology v ngn ng ni dung trong JADE c cung cp bi gi jade.content. Nhng c trng ny rt c ngha trong nhiu tnh hung, c bit l cho nhng ngi lm quen vi JADE. Gi jade.content cung cp mt s c trng nng cao nh kh nng to cc cu truy vn. iu ny ry quan trng trong nhng h thng phc tp nhng li khng c h tr trong phin bn c. Nhng c trng nng cao ny c trnh by trong phn sau.

Nhng c im nng cao ca JADE

98

Hnh 4.2: M hnh tham chiu ni dung Vic khm ph Ontology v ngn ng ni dung phi tri qua cc bc: nh ngha Ontology cha cc lc ca cc kiu predicate, agent action v concept c s dng trong min ng dng. To cc lp Java cho cc kiu predicate, agent action v concept. La chn ngn ng ni dung thch hp trong s nhng ngn ng c h tr bi JADE. JADE cho php m rng bng cch s dng ngn ng ni dung do ngi dng nh ngha, tuy nhin trong a s trng hp, ngi dng khng cn phi nh ngha ngn ng ni dung ring. ng k ontology v ngn ng ni dung vi agent. To v x l cc biu thc ni dung nh l cc i tng Java th hin ca cc lp c nh ngha bc 2 v cho JADE bin dch chng sang chui hoc chui byte v ngc li sao cho ph hp vi phn content ca thng ip ACL.

4.1.3.1 nh ngha Ontology Ontology trong Jade l mt th hin ca lp jade.content.onto.Ontology m cc gin c thm vo xc nh cc kiu v t; cc khi nim v cc hnh ng ca Agent lin quan n lnh vc p dng. Cc gin l th hin ca cc lp PredicateSchema, AgentActionSchema v ConceptSchema c cha trong gi jade.content.schema. Mi lp ny c vi phng thc, m n c th th hin nhng thuc tnh ca cc kiu v t, khi nim v hnh ng ca Agent. V c bn, mt ontology l mt tp cc gin m thng khng pht trin trong sut vng i ca Agent, do tt nht ta nn khai bo n l mt i tng singleton v nn nh ngha mt phng thc static truy cp n i tng singleton ny. iu ny cho php chia s cng mt i tng ontology gia cc agent khc nhau trong cng JVM. Trong v d book-trading, chng ta c th m hnh lnh vc quan tm bng mt ontology n gin m bao gm mt khi nim (BOOK), mt v t (COSTS) v mt hnh ng ca Agent
Nhng c im nng cao ca JADE 99

(SELL). Thng thng, mi ontology trong Jade k tha mt ontology c bn, c trnh by nh mt i tng duy nht ca lp jade.content.onto.BasicOntology, bao gm cc gin cho: Cc kiu nguyn thy (STRING, INTEGER, FLOAT, . . .) Cc kiu tp hp Mt s v t chung (tc l khng thuc bt k lnh vc c bit no); cc khi nim v cc hnh ng ca Agent, trong l khi nim AID nhn dng mt Agent

th hin iu , ontology O1 k tha ontology O2 (tc l, tt c cc v t, cc khi nim v cc hnh ng ca Agent c cha trong O2 cng c cha trong O1), khi cn truyn O2 lm tham s khi O1 c khi to. Sau y l khai bo Ontology ca v d bookTrading:
package bookTrading.ontology; import jade.content.onto.*; import jade.content.schema.*; public class BookTradingOntology extends Ontology { // The name identifying this ontology public static final String ONTOLOGY_NAME = "Book-trading-ontology"; // VOCABULARY public static final String BOOK = "Book"; public static final String BOOK_TITLE = "title"; public static final String BOOK_AUTHORS = "authors"; public static final String BOOK_EDITOR = "editor"; public static final String COSTS = "Costs"; public static final String COSTS_ITEM = "item"; public static final String COSTS PRICE = "price"; public static final String SELL = "Sell"; public static final String SELL_ITEM = "item"; // The singleton instance of this ontology private static Ontology theInstance = new BookTradingOntology(); // Retrieve the singleton Book-trading ontology instance public static Ontology getInstance() { return theInstance; } // Private constructor private BookTradingOntology() { // The Book-trading ontology extends the basic ontology super(ONTOLOGY_NAME, BasicOntology.getInstance()); try { add(new ConceptSchema(BOOK), Book.class); add(new PredicateSchema(COSTS), Costs.class); add(new AgentActionSchema(SELL), Sell.class); // Structure of the schema for the Book concept ConceptSchema cs = (ConceptSchema) getSchema(ITEM); cs.add(BOOK_TITLE, (PrimitiveSchema) getSchema(BasicOntology.STRING)); cs.add(BOOK_AUTHORS, (PrimitiveSchema) getSchema(BasicOntology.STRING), 0, ObjectSchema.UNLIMITED); Nhng c im nng cao ca JADE 100

cs.add(BOOK_EDITOR, (PrimitiveSchema) getSchema(BasicOntology.STRING), ObjectSchema.OPTIONAL); // Structure of the schema for the Costs predicate . . . // Structure of the schema for the Sell agent action AgentActionSchema as = (AgentActionSchema) getSchema(SELL); as.add(SELL_ITEM, (ConceptSchema) getSchema(BOOK)); } catch (OntologyException oe) { oe.printStackTrace(); } } }

T on m trn, chng ta c th quan st thy rng: Mi gin c gi n ontology c kt hp vi mt lp Java, v d gin cho khi nim BOOK c kt hp vi lp Book.java. Nhng lp Java ny phi c 1 cu trc thch hp nh miu t trong phn 4.1.3.2 Mi thuc tnh trong gin c mt tn v mt kiu, tc l gi tr cho thuc tnh phi tun theo mt gin nh sn Mt thuc tnh c th OPTIONAL (ty ) ngha l gi tr ca n c th l null. Mt khc, mt thuc tnh l MANDATORY (bt buc). Nu thuc tnh MANDATORY c gi tr l null th mt ngoi l ca lp OntologyException c nm ra. Mt thuc tnh c th c cardinality (lc lng) > 1, tc l mt danh sch hay mt tp hp. V d, thuc tnh authors trong gin khi nim BOOK c th cha nhiu yu t kiu String (nhiu tc gi)

C th xc nh quan h m rng/c th ha gia cc khi nim. V d, nu chng ta m rng h thng h tr vic kinh doanh cc loi hng ha khc nh CDs, chng ta c th xc nh mt gin ITEM chung v b sung n nh gin cha cho c gin BOOK, gin CDMt gin s t ng c k tha tt c cc thuc tnh c cha trong chnh gin cha ca n. Gin cha c b sung bng phng thc addSuperSchema() ca lp ConceptSchema 4.1.3.2 Pht trin cc lp Java lin quan n Ontology Nh cp trong phn 4.1.3.1, mi gin c cha trong mt ontology c kt hp vi mt lp Java (hay Interface). R rng cu trc ca nhng lp ny phi lin quan vi nhng gin , tc l chng phi tun theo cc quy tc sau: (1) Chng phi thc thi mt giao din thch hp : - Nu gin l mt lp ConceptSchema th phi thc hin giao din Concept (hoc gin tip hoc trc tip) - Nu gin l mt lp PredicateSchema th phi thc hin giao din Predicate (hoc gin tip hoc trc tip)

Nhng c im nng cao ca JADE

101

Nu gin l mt lp AgentActionSchema th phi thc hin giao din AgentAction (hoc gin tip hoc trc tip) (2) Chng phi c quan h k tha thch hp, tc l S1 l gin cha ca S2, sau lp C2 lin kt vi gin S2 phi k tha lp C1 lin kt vi gin S1 (3) Chng phi c cc phng thc truy cp ti cc trng: - i vi mi thuc tnh trong gin S1 vi tn Nnn v kiu l S2 , lp C1 lin kt vi gin S1 phi c 2 phng thc truy cp:
public void setNnn(C2 c); public C2 getNnn();

C2 l lp lin kt vi gin S2. Thc t, nu S2 l gin c xc nh trong BasicOntology , sau : o Nu S2 l gin cho STRING C2 l java.lang.String C2 l int, long, java.lang.Integer hay o Nu S2 l gin cho INTEGER java.lang.Long o Nu S2 l gin cho BOOLEAN C2 l Boolean hay java.lang.Boolean o Nu S2 l gin cho FLOAT C2 l float, double, java.lang.Float hay java.lang.Double o Nu S2 l gin cho DATE C2 l java.util.Date o Nu S2 l gin cho BYTE SEQUENCE C2 l byte[] o Nu S2 l gin cho AID C2 l jade.core.AID - i vi mi thuc tnh trong S1 c tn Nnn, kiu S2 v cardinality > 1, lp C1 lin kt vi gin S1 phi c 2 phng thc truy cp sau: public void setNnn(jade.util.leap.List l); public jade.util.leap.List getNnn(); Sau y l cc lp lin kt vi khi nim BOOK v v t COSTS: // Class associated to the BOOK schema package bookTrading.ontology; import jade.content.Concept; import jade.util.leap.List; public class Book implements Concept { private String title; private List authors; private String editor; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public List getAuthors() { return authors; } public void setAuthors(List authors) {
Nhng c im nng cao ca JADE 102

this.authors = authors; } public String getEditor() { return editor; } public void setEditor(String editor) { this.editor = editor; }

// Class associated to the COSTS schema package bookTrading.ontology; import jade.content.Predicate; import jade.core.AID; public class Costs implements Predicate{ private Book item; private int price; public Book getItem() { return item; } public void setItem(Book item) { this.item = item; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } } 4.1.3.3 Chn ngn ng ni dung Gi jade.content gm cc codec cho hai ngn ng ni dung (ngn ng SL v ngn ng LEAP), c hai u h tr m hnh tham chiu ni dung. Codec ca ngn ng ni dung L l i tng Java c kh nng qun l cc biu thc ni dng c vit bng ngn ng L. a s trng hp, ngi pht trin phi chp nhn mt trong cc ngn ng ny v s dng codec tng ng m khng cn phi lm thm g na. Phn ny s cung cp mt s so snh c th gip cho vic la chn ngn ng. Nu nh pht trin mun agent c th ni c ngn ng khc, anh ta phi nh ngha mt codec cho n. Xem chi tit trong phn sau. Ngn ng SL l ngn ng ni dung c m ha di dng cc chui k t m con ngi c th c c v c th l ngn ng ph bin nht trong gii khoa hc lm vic v agent thng minh. Tt c nhng v d v biu thc ni dung trong ti liu ny u l cc biu thc ca ngn ng SL. Chng ta thng s dng ngn ng ny cho nhng ng dng da trn agent c tnh m (ni m agent ca cc nh pht trin khc nhau v chy trn cc nn tng khc nhau phi giao tip vi nhau). SL gm mt s ton t nh:
Nhng c im nng cao ca JADE 103

Ton t logic: AND, OR, NOT. Ton t m hnh: BELIEF, INTENTION, UNCERTAINTY.

Ngoi ra, tnh cht con ngi c th c c ngn ng ny gip ch cho vic sot li v kim th ng dng. Ngn ng LEAP l ngn ng c m ha di dng cc byte m con ngi khng th c c. N xc nh cho JADE trong d n LEAP. Do , r rng l ch nhng agent ca JADE mi c kh nng ni c ngn ng LEAP. Tuy nhin, mt s trng hp m LEAP c a chung hn SL: Lp LEAPCodec nh hn lp SLCodec. Khi c gii hn v b nh nn dng LEAP. Ngn ng SL khng h tr chui byte.

Tuy nhin, ngn ng SL c th lm vic vi agent action. Do , tt c cc agent action trong SL u phi c insert vo thnh phn ACTION gn hnh ng cho AID ca agent c d nh thc hin hnh ng. Do , biu thc (Sell (Book :title The Lord of the rings) (agent-identifier :name Peter) ) Khng th s dng trc tip lm ni dng thng ip REQUEST k c khi n tng ng vi mt agent action trong m hnh tham chiu ni dung. C th l ng php ca SL khng cho php n l biu thc mc u tin. Thay vo , chng ta s dng biu thc: (ACTION (agent-identifier :name John) (Sell (Book :title The Lord of the rings) (agent-identifier :name Peter) ) ) Trong , John l agent c yu cu bn quyn sch cho Peter agent. Ngoi ra cn c ngn ng ni dung XML s dng c php XML nh sau: <action> <agent-identifier> <name>seller-X</name> </agent-identifier> <Sell> <Book> <title>Developing JADE</title> </Book> </Sell>
Nhng c im nng cao ca JADE

Multi

Agent

Systems

with

104

</action> Ngn ng ny c s dng khi tp cc thc th ca ontology c export/import t mt h thng bn ngoi. 4.1.3.4 ng k ngn ng ni dung v Ontology vi Agent Trc khi agent c th s dng ontology v ngn ng ni dung, chng phi c ng k vi b i tng qun l ni dung ca agent. Thao tc ny c thc hin trong qu trnh agent thit lp (nhng khng bt buc) (trong phng thc setup() ca lp Agent). public class BookSellerAgent extends Agent { ... private Codec codec = new SLCodec(); private Ontology ontology = BookTradingOntology.getInstance(); ... protected void setup() { ... getContentManager().registerLanguage(codec); getContentManager().registerOntology(ontology) ... } ... } T y, b phn qun l ni dung s lin kt Codec v Ontology ng k vi cc chui c tr v bi cc phng thc getName(). 4.1.3.5 To v x l cc biu thc ni dung nh l cc i tng Java Sau khi c ontology, ngn ng ni dung v ng k chng vi b qun l ni dung, cn to v x l biu thc ni dung nh l cc i tng Java. Phng thc fillContent() v extractContent() s ly i tng Ontology v i tng Codec v cho chng thc hin cc cng vic chuyn i v kim tra cn thit.
private class CallForOfferServer extends CyclicBehaviour { public void action() { ACLMessage msg = myAgent.receive(); if (msg != null) { // Message received. Process it ACLMessage reply = msg.createReply(); try { ContentManager cm = myAgent.getContentManager(); Action act = (Action) cm.extractContent(msg); Sell sellAction = (Sell) act.getAction(); Book book = sellAction.getItem(); PriceManager pm = (PriceManager) catalogue.get(book.getTitle()); if (pm != null) { // The requested book is available for sale reply.setPerformative(ACLMessage.PROPOSE); Nhng c im nng cao ca JADE 105

} } // End of inner class CallForOfferServer

ContentElementList cel = ContentElementList(); cell.add(act); Costs costs = new Costs(); costs.setItem(book); costs.setPrice(pm.getCurrentPrice()); cel.add(costs); cm.fillContent(reply, cel); } else { // The requested book is NOT available sale. reply.setPerformative(ACLMessage.REFUSE); } } catch (OntologyException oe) { oe.printStackTrace(); reply.setPerformative(ACLMessage.NOT_UNDERSTOOD); } catch (CodecException ce) { ce.printStackTrace(); reply.setPerformative(ACLMessage.NOT_UNDERSTOOD); } myAgent.send(reply);

new

for

Khe :content ca thng ip phn hi PROPOSE ch ti cun sch Developing Multi Agent Systems with JADE ang c bn vi gi 30 euro.
((action (agent-identifier :name seller@JADE-book-trading) (Sell (Book :title "Developing Multi Agent Systems with JADE" :authors (sequence Bellifemine Caire Greenwood) :editor Wiley) ) ) (Costs (Book :title "Developing Multi Agent Systems with JADE" :authors (sequence Bellifemine Caire Greenwood) :editor Wiley) 30))

4.1.3.6 Kt hp cc Ontology S h tr ngn ng ni dung v ontology trong gi jade.content cung cp mt cch d dng kt hp cc ontology do tr gip vic ti s dng m ngun. C th, c th xc nh mt ontology mi m rng t mt hoc nhiu ontology bng cch n gin l xc nh cc ontology c m rng nh l cc tham s trong hm khi to c dng to ra ontology mi.

Nhng c im nng cao ca JADE

106

Hnh 4.3: Mu xy dng giao din t vng Khi thc hin iu ny chng ta nn s dng mu xy dng giao din t vng nh trong hnh 4.3. Tt c cc biu tng c s dng cho tn ca cc khi nim, thuc tnh, agent actions, v slot ca n c nhm vo trong mt giao din biu din t vng. V d nh trong book-trading, chng ta c th c mt giao din BookTradingVocabulary nh sau:
public interface // VOCABULARY public static public static public static public static public static public static public static public static public static } BookTradingVocabulary { final final final final final final final final final String String String String String String String String String BOOK = "Book"; BOOK_TITLE = "title"; BOOK_AUTHORS = "authors"; BOOK_EDITOR = "editor"; COSTS = "Costs"; COSTS_ITEM = "item"; COSTS PRICE = "price"; SELL = "Sell"; SELL_ITEM = "item";

Lp ontology ci t giao din t vng ny. Khi m rng mt hoc nhiu ontology, lp ontology kt qu bao gm cc ontology c m rng, trong khi giao din t vng kt qu k tha cc giao din t vng c m rng. 4.1.4 S dng Protg v BeanGenerator add-on to Ontology cho JADE Protg l mt cng c ha h tr xy dng ontology mt cch nhanh chng v chnh xc. Protg h tr hai cch chnh m hnh ha ontology l Protg-Frames v Protg-OWL. Ontology sau khi c to ra c th c a vo cc nh dng khc nh RDF(S), OWL v XML Schema. Protg c xy dng da trn Java, c kh nng m rng v cung cp mi trng plug-and-play gip cho vic xy dng khun mu v pht trin ng dng mt cch nhanh chng. BeanGenerator l mt plugin cho Protg cho php sinh cc lp Java biu din trong ontology m c th c s dng vi mi trng JADE. Vi BeanGenerator, chng ta c th sinh cc ontology tun theo chun FIPA/JADE t RDF(S), XML v cc d n Protg. Giao din ca Protg:
Nhng c im nng cao ca JADE 107

Hnh 4.4: Giao din Protege 4.2 HP CC HNH VI XY DNG CC TC V PHC TP Nh m t trong phn 3.2, cc cng vic trong JADE c thc hin bng cch xy dng cc lp m rng ca lp jade.core.behaviours.Behaviour v ci t cc phng thc action () v done (). Tuy nhin, khi lin kt vi cc cng vic phc tp lin quan n cc bc tnh ton, c th pha trn vi cc agent khc th iu ny xem ra khng thun li. Chng ta hy xem xt v d: hnh vi BookNegotiator trnh by trong mc 3.3.5. Mc d n ch n gin l trao i mt vi thng ip v ly mt quyt nh, phng thc action() ca n kh l phc tp. Mt phng php n gin v r rng hn thc hin cc nhim v phc tp trong Jade l kt hp cc hnh vi to nhim v phc tp t cc hnh vi n gin. C s cho cc c trng ny c cung cp bi lp CompositeBehaviour trong gi jade.core.behaviours. Lp ny c cc phng thc scheduleFirst() v scheduleNext() dng lp lch cc hnh vi con. Nhng phng php ny c khai bo tru tng v phi c nh ngha trong cc lp con ca CompositeBehaviour. Ba kiu hnh vi kp c cung cp trong JADE l SequentialBehaviour, FSMBehaviour v ParallelBehaviour s c trnh by chi tit trong cc phn sau. Cc nh pht trin khng cn phi trc tip m rng lp CompositeBehaviour v ch s dng mt th hin ca cc lp con SequentialBehaviour, FSMBehaviour v ParallelBehaviour ca n.

Nhng c im nng cao ca JADE

108

Hnh 4.5: Cu trc phn cp cc hnh vi trong JADE 4.2.1 Lp SequentialBehaviour Lp SequentialBehaviour ci t mt hnh vi gp lp lch cc hnh vi con theo mt chnh sch tun t n gin. N bt u hnh vi con u tin, sau khi hon thnh n chuyn sang hnh vi con tip theo v c nh th cho n khi thc hin ht cc hnh vi con.

Nhng c im nng cao ca JADE

109

Hnh 4.6: Lung thc hin phng thc action() ca lp SequentialBehaviour Cc hnh vi con c add vo bng phng thc addSubBehaviour(). Th t c a vo chnh l th t chng c lp lch. V d, lp ThreeStepBehaviour:
SequentialBehaviour threeStepBehaviour SequentialBehaviour(anAgent); threeStepBehaviour.addSubBehaviour(new public void action() { // perform operation X } } ); threeStepBehaviour.addSubBehaviour(new public void action() { // perform operation Y } } ); threeStepBehaviour.addSubBehaviour(new public void action() { // perform operation Z } } ); = new OneShotBehaviour(anAgent) {

OneShotBehaviour(anAgent) {

OneShotBehaviour(anAgent) {

4.2.2 Lp FsmBehaviour Lp FSMBehaviour ci t mt hnh vi gp trong cc hnh vi con c lp lch theo mt my hu hn trng thi (FSM). Lp FSMBehaviour cung cp 2 phng thc ng k cc hnh vi con lm cc trng thi ca my hu hn trng thi v ng k s di chuyn gia cc trng thi. Tng t nh hnh vi chui, mt hnh vi FSM cng cha con tr ch ti hnh vi con hin thi. Sau khi hon thnh (phng thc done() t v true), hnh vi FSM kim tra bng chuyn dch, trn c s chn ra hnh vi con mi thc hin tip.
Nhng c im nng cao ca JADE

110

Hnh 4.7: Mt my hu hn trng thi n gin Cc chuyn dch trong hnh vi FSM c nh du bng mt nhn l mt s nguyn. Khi hnh vi con hin thi hon thnh nhim v, gi tr tr v ca phng thc onEnd() c ly lm gi tr thot v c so snh vi nhn ca cc chuyn dch ang thot ra t trng thi con hin thi. Chuyn dch u tin c nhn trng vi gi tr thot s c thc hin v trng thi ch ca n s l trng thi con hin thi mi. Phng thc registerState() dng thm trng thi v FSMBehaviour s c thc thi trong trng thi . Phng thc registerTransition(), dng thm chuyn dch vo FSMBehaviour, chp nhn 3 tham s: hai tham s c kiu String nh ngha trng thi ngun v trng thi ch ca chuyn dch v mt gi tr kiu int nh ngha nhn nh du chuyn dch . Cc phng thc registerFirstState() v registerLastState() cho php ng k trng thi bt u v trng thi kt thc. Tuy nhin, cn ch rng, ch c mt trng thi bt u nhng ch c mt trng thi kt thc. Ton b hnh vi FSM s kt thc khi t c trng thi kt thc v thc thi y . V d, minh ha code ca mt hnh vi FSM trong hnh 4.7:
FSMBehaviour sampleFSM = new FSMBehaviour(anAgent); sampleFSM.registerFirstState(new OneShotBehaviour(anAgent) { public void action() { // Perform operation X } public int onEnd() { return (operation X successful ? 1 : 0); } }, "X"); sampleFSM.registerLastState(new OneShotBehaviour(anAgent) { public void action() { // Perform operation Y } }, "Y"); sampleFSM.registerState(new OneShotBehaviour(anAgent) { public void action() { // Perform operation Z } }, "Z"); sampleFSM.registerTransition("X", "Y", 1); sampleFSM.registerTransition("X", "Z", 0); sampleFSM.registerDefaultTransition("Z", "X", new String[]{"X", "Z"}); Nhng c im nng cao ca JADE 111

Phng thc registerDefaultTransition() ca lp FSMBehaviour cho php nh ngha mt chuyn dch mc nh gia hai trng thi. Mt chuyn dch mc nh khng c nh du bng nhn v xy ra khi v ch khi cc chuyn dch khc (nu c) ang thot khi cng trng thi khng xy ra. C hai phng thc registerTransition() v registerDefaultTransition() u ly tham s l String[] vi cc phin bn np chng nhau. Tham s ny xc nh mt tp cc trng thi FSM m phi c thit lp li khi xy ra trng thi ng k. iu ny rt hu ch khi ng k cc trng thi backward, c th l cc chuyn dch m dn n cc trng thi m tng xy ra. Thc t, nh gii thch trong phn 3.2.3, mt i tng Behaviour mt khi c thc thi th phi c thit lp li bng cc gi phng thc reset trc khi n li c thc thi. V d, trong hnh 4.7, nu chuyn dch t Z n X xy ra, trng thi X v c th l c trng thi Z s c thc thi ln na. Trc khi iu ny xy ra, chng phi c reset trnh nhng tc ng khng mong mun. 4.2.3 Lp ParallelBehaviour Lp ny ci t mt hnh vi gp lp lch cc hnh vi con mt cch song song. Thng thng, khi gp phi cc hnh vi FSM, vic lp lch c s phi hp v khng ngng. Ngha l mi khi phng thc action() ca hnh vi song song c thc thi, n gi phng thc action() ca hnh vi con hin thi v sau chuyn con tr ti hnh vi con tip theo m khng cn quan tm n vic n hon thnh hay cha. Cc hnh vi con trong hnh vi song song c thm vao bng cch gi phng thc addBehaviour(). Mt hnh vi song song c th kt thc khi tt cc hnh vi con ca n hon thnh, hoc khi hnh vi con u tin hon thnh. Chnh sch kt thc c chn trong thi gian khi to bng cc xc nh trong hm khi to l WHEN-ALL hay WHEN-ANY. Chnh sch WHEN-ANY thng c s dng kt thc mt nhim v trong trng hp n khng hon thnh trong khong thi gian timeout, v d:
Behaviour task = new MyTask(); ParellelBehaviour pb = new ParallelBehaviour(anAgent, ParallelBehaviour.WHEN_ANY); pb.addSubBehaviour(task); pb.addSubBehaviour(new WakerBehaviour(anAgent, 60000) { public void onWake() { System.out.println("timeout expired"); } });

4.2.4 Chia s d liu gia cc hnh vi con: DATASTORE Khi gp cc hnh vi thnh hnh vi chui, FSM hay song song th thng thng hnh vi con s cn truy cp mt s d liu c to ra bi cc hnh vi con khc. Tt nhin, nhng d liu ny khng th c truyn vo nh l tham s trong hm khi to ca hnh vi con v tt c cc hnh vi con u thng c khi to trc khi ton b hnh vi gp c thc thi. Thng thng, khi cc hnh vi cn chia s d liu, cn s dng cc bin thnh vin ca agent hoc ca hnh vi gp. V d, gi s chng ta cn mt hnh vi chui trong bc n phi nhn mt thng ip v bc n+1 phi lm mt s cng vic x l hnh vi nhn c. Chng ta c on code sau:
public class MySequentialBehaviour extends SequentialBehaviour { Nhng c im nng cao ca JADE 112

private ACLMessage receivedMsg; public MySequentialBehaviour(Agent a) { super(a); // . . . addSubBehaviour(new SimpleBehaviour(a) { private boolean finished = false; public void action() { receivedMsg = myAgent.receive(); if (receivedMsg != null) { finished = true; } else { block(); } } public boolean done() { return finished; } } ); addSubBehaviour(new OneShotBehaviour(a) { public void action() { // Process receivedMsg } } ); } }

Tuy nhin, trong nhiu trng hp, vic to cc hnh vi c th dng li trong nhiu ng cnh khc nhau l rt c ch v do khng phi gn b vi mt agent hoc vi mt hnh vi gp cha. Trong nhng trng hp ny, d liu chia s gia cc hnh vi khng th c lu trong cc bin thnh vin ca agent hoc ca hnh vi cha. Lp DataStore c trong gi jade.core.behaviours cung cp mt gii php n gin v ton din cho vn ny. Mi hnh vi c mt kho d liu ring (c th l mt th hin ca DataStore) c th truy cp c bng cc phng thc getDataStore() v setDataStore() ca lp Behaviour. Mt kho d liu n gin l mt map (thc t DataStore extend HashMap) v cung cp c ch chun (cc hnh vi c th dng li) chia s d liu. Ngha l, bng cch thit lp cng mt th hin DataStore cho mt hoc nhiu hnh vi, cc hnh vi ny s c mt khng gian chung ni m chng c th lu tr d liu c chia s. V d, gi s ta c hnh vi MessageReceiver nhn mt thng ip v ta mun s dng n trong bc n ca v d trn. Sau y l on code:
public class MessageReceiver extends SimpleBehaviour { public static final String RECV_MSG = "received-message"; private boolean finished = false; public void action() { ACLMessage msg = myAgent.receive(); if (msg!= null) { getDataStore().put(RECV_MSG, msg); finished = true; } else { Nhng c im nng cao ca JADE 113

block(); } public boolean done() { return finished; } } }

y, chng ta c th sa hnh vi chui tn dng u im ca lp MessageReceiver:


SequentialBehaviour sb = new SequentialBehaviour(anAgent); Behaviour b = new MessageReceiver(anAgent); b.setDataStore(sb.getDataStore()); sb.addSubBehaviour(b); b = new OneShotBehaviour(anAgent) { public void action() { ACLMessage receivedMsg = getDataStore() .get(MessageReceiver.RECV_MSG); // Process receivedMsg } }; b.setDataStore(sb.getDataStore()); sb.addSubBehaviour(b);

4.2.5 B sung v hnh vi gp Phn ny s trnh by chi tit hn v cc hnh vi gp m JADE cung cp. Ngoi chnh sch lp lch hnh vi con, lp con ca CompositeBehaviour cng phi nh ngha mt c ch kt thc v mt c ch kha/khi ng li. C ch kt thc s xc nh thi im hnh vi gp s kt thc. V d, mt SequentialBehaviour lp lch cho cc hnh vi con ca n sau nhng hnh vi khc, kt thc khi hnh vi con cui cng hon tt. Phn sau ch ra lm sao block v restart cc s kin (tc l gi phng thc block() v restart()) trong cc hnh vi gp c truyn ti cc hnh vi con ca n v ngc li. Mt chnh sch lp lch con c ci t (nh gii thiu phn u ca mc ny) bng cch nh ngha li theo cc phng thc abstract ca lp CompositeBehaviour: getCurrent() - phng thc ny nhm return hnh vi con hin ti chy v c gi mi ln phng thc action() ca CompositeBehaviour c thc thi. ScheduleFirst() - phng thc ny c gi mt ln ngay khi CompositeBehaviour start v c dng thit lp hnh vi con u tin thc thi. ScheduleNext() - phng thc ny c cng ngha vi sheduleFirst(), nhng c gi mi ln thnh cng.

Tiu chun kt thc c ci t bng vic nh ngha li phng thc tru tng checkTermination() ca lp CompositeBehaviour. Phng thc ny c gi sau khi thc thi phng thc action() ca hnh vi con hin ti.

Nhng c im nng cao ca JADE

114

Cn ch v hnh vi gp lin quan ti phng thc getParent() ca lp Behaviour. Phng thc ny cho php mt hnh vi con c con tr tr ti hnh vi gp cha. Nu mt hnh vi khng l mt phn ca bt k h thng hnh vi gp no th phng thc getParent() tr v null.

Hnh 4.8: Lung thc thi ca phng thc action() ca lp CompositeBehaviour 4.3 HNH VI LUNG Nh gii thiu mc 3.2.1, vic lp lch hnh vi c thc hin theo mt cch khng u tin. l, phng thc action() ca mt hnh vi khng bao gi b ngt cho php mt hnh vi khc nhy vo. Ch khi phng thc action() ca hnh vi ang chy tr v, vic iu khin c truyn cho hnh vi tip theo. Nh tho lun, cch tip cn ny c mt vi u im v hiu nng v kh nng thay i. Tuy nhin, khi mt hnh vi cn thc hin mt vi hot ng blocking, th n block ton b agent ch khng ch bn thn n. Mt gii php c th l s dng cc lung Java thng thng. Tuy nhin Jade cung cp mt gii php r rng hn bng vic t lung hnh vi, tc l cc hnh vi c thc thi trong cc lung ring bit. Bt c hnh vi Jade (n gin hay gp) c th c thc thi nh mt hnh vi lung bng lp jade.core.behaviours.ThreadedBehaviourFactory. Lp ny cung cp phng thc wrap() bao bc hnh vi jade thng thng vo mt hnh vi lung wrapper. Hnh vi lung wrapper ny bn thn n l mt hnh vi. Vic thm n vo agent bng phng thc addBehaviour() s lm cho vic thc thi object Behaviour gc trong mt lung chuyn mn. Nn ch rng ngi pht trin ch i x vi lp ThreadedBehaviourFactory, trong khi lp thc ca hnh vi lung wrapper l private v khng th truy xut. on code mu di y ch ra cch thc thi mt hnh vi Jade trong mt lung java chuyn mn.
import jade.core.*; import jade.core.behaviours.*; public class ThreadedAgent extends Agent { private ThreadedBehaviourFactory tbf = new Nhng c im nng cao ca JADE 115

ThreadedBehaviourFactory(); protected void setup() { // Create a normal JADE behaviour Behaviour b = new OneShotBehaviour(this) { public void action() { // Perform some blocking operation that can take a long time } }; // Execute the behaviour in a dedicated Thread addBehaviour(tbf.wrap(b)); } }

Hnh vi lung c th c kt hp vi hnh vi thng trong cc hnh vi gp. V d, mt hnh vi SequentialBehaviour c th c 2 hnh vi con c thc thi nh l cc hnh vi thng thng v mt hnh vi con th 3 c thc thi trong mt lung chuyn mn. Trong thc t lp ParallelBehaviour c th c s dng gn mt nhm hnh vi vo mt lung chuyn mn. C vi im quan trng cn phi ch khi lm vic vi hnh vi lung: Phng thc removeBehaviour() ca lp Agent khng nh hng ti hnh vi lung. Mt hnh vi lung b xa bng vic ly i tng Thread c n bng vic gi phng thc getThread() ca lp ThreadedBehaviourFactory v gi phng thc interrupt(). Khi mt agent cht, di chuyn hoc tm dng, cc hnh vi lung ang hot ng ca n phn b kill mt cc r rng bng vic s dng k thut m t trn. Nu mt hnh vi con ca hnh vi song song (parallel) c cu hnh vi chnh sch kt thc WHEN_ANY l hnh vi lung, vic kt thc cc hnh vi con khc khng stop n. Hnh vi lung con phi c kill mt cch r rng nh m t trn. Khi mt hnh vi lung truy xut mt vi ti nguyn agent, ci m c th c truy xut bi cc hnh vi lung hoc khng lung khc, vic quan tm tnh ng n phi tr gi bng vic ng b.

4.4 CC GIAO THC TNG TC giai on ny ngi c kh quen thuc vi ngn ng FIPA-ACL c s dng bi agent JADE giao tip. Ngn ng ny cung cp mt tp cc biu din chun, mi mt biu din nh vy c nh mt cch r rng. Mt trong nhng u im chnh ca c im ny l kh nng ch ra chui cc thng ip c nh ngha trc c th c p dng trong mt vi hon cnh chia s cng mt kiu giao tip m khng quan tm min ng dng. Mt chui cc thng ip ny c bit n nh l cc giao thc tng tc.

Nhng c im nng cao ca JADE

116

Hnh 4.9: Giao thc mng hp ng (ContractNet) 4.4.1 Gi jade.proto Tt c cc lp cung cp h tr vic ci t cc giao thc chun trong JADE nm trong gi jade.proto. Khi vic tham gia mt phin trao i c iu khin bi giao thc tng tc mt agent c th ng vi tr l initiator (bn khi to) hoc responder (bn p ng). Kt qu l cc lp trong gi jade.proto c chia thnh initiator v responder. V d, chng ta c lp ContractNetInitiator v ContractNetResponder, SubscriptionInitiator v SubcriptionResponder... Tt c cc hm khi to ca lp initator cha mt tham s ACLMessage th hin mt thng ip c s dng khi to giao thc. Cho v d, lp ContractNetInitiator c thng ip CFP c gi ti responder khi to tc v yu cu c xut (call for propose). Tt c cc lp initiator hoox tr c tng tc one-to-one ln one-to-many ph thuc vo s lng ngi nhn c ch ra trong thng ip khi to. Cc lp Responder c sn hai phin bn. Phin bn vng (cyclic) c mt tham s MessageTemplate trong hm khi to, c dng chn cc thng ip khi to giao thc t cc Initiator. Hnh vi ca Responder thng c a vo phng thc setup() v duy tr hot ng trong ton b vng i ca agent. Mi khi nhn c mt thng ip khi to giao thc ng vi template, hnh vi ny s x l n, thc hin phin hi thoi v quay li ch thng ip khi to mi. Phin bn n phin (single session) c mt thng ip khi to trong hm khi to ca n, thc hin phin hi thoi c khi to bi thng ip v sau kt thc. y, hnh vi ca responder khng c trch nhim nhn thng ip khi to. Do , cn c mt hnh vi ngoi nhn chng. on code sau minh ha hnh vi SSContractNetResponder (phin bn n phin):

Nhng c im nng cao ca JADE

117

MessageTemplate template = MessageTemplate.and( MessageTemplate.MatchProtocol("fipa-contract-net"), MessageTemplate.MatchPerformative(ACLMessage.CFP) ); addBehaviour(new CyclicBehaviour(this) { public void action() { ACLMessage cfp = myAgent.receive(template); if (cfp != null) { myAgent.addBehaviour(new SSContractNetResponder(myAgent, cfp) { // Redefine callback methods to implement domain-dependent // logic } ); } else { block(); } } } );

Bng 4.1: Cc giao thc tng tc c h tr bi JADE Giao thc FIPA-Request FIPA-Query FIPA-Propose
ProposeInitiator ProposeResponder SSIteratedAchieveREResponder

Lp Initiator
AchieveREInitiator

Lp Responder
AchieveREResponder

Phin bn c IteratedAchieveREInitiator lp li ca FIPA-Request FIPA-Query Contract-Net FIPA-Subscribe


ContractNetInitiator SubscriptionInitiator

ContractNetResponder SSContractNetResponder SubscriptionResponder

4.4.2 S dng cc lp giao thc Nh cp trn, cc lp giao thc cung cp mt s giao thc gi li. Nhng phng thc ny c th c lp trnh vin s dng nh ngha li bng cch ty bin chng theo logic ca min ng dng. Chng c khai bo c bo v v c mt ci t mc nh. Theo cch ny, lp trnh vin c th chn (ty thuc vo yu cu c th) phng thc no s ci t v phng thc no s b qua. Vi c bn khi to v bn p ng, phn ln cc phng thc gi li u c gi theo vic nhn thng ip v c dng
protected handle<message-performative>(ACLMessage receivedMessage)

V d, trong ContractNetResponder, nu thng ip ACCEPT_PROPOSAL c nhn, th phng thc handAcceptProposal (ACLMessage accept) c gi. Khi vic nhn thng ip kt
Nhng c im nng cao ca JADE 118

thc mt tng tc vi bn gi thng ip (v d khi thng ip REFUSE c gi lm thng ip phn hi cho thng ip CFP trong Contract-Net protocol xc nh rng khng cn thng ip no na cn c gi tr li bn p ng), phng thc handletXXX() tng ng s tr v void. Ni cch khc, nu thng phn hi phi c gi tr li, chng ta phn bit 2 trng hp. Vi nhng bn p ng m lun b li cun vo cc tng tc one-to-one, phg thc handleXXX() tr v mt ACLMessage. Gi tr c tr v s c s dng l thng ip phn hi. V d, phng thc handleCfp() ca ContractNetResponder thng c nh ngha nh sau:
Protected ACLMessage handleCfp(ACLMessage cfp){ ACLMessage reply = cfp.createReply(); //Evaluate the call If (call OK) { //prepare a proposal reply.setPerformative(ACLMessage.PROPOSE); } else { reply.setPerformative(ACLMessage.REFUSE); } return reply; }

bt u vic thit k h tr nhng tng tc mt-nhiu, phng thc handleXXX () nhn thm mt i s kiu Vector. V d, phng thc handlePropose () ca ContractNetInitiator thng s c nh ngha li nh sau:
protected void handlePropose(ACLMessage propose, Vector acceptances) { ACLMessage reply = propose.createReply(); // Evaluate the proposal if (proposal OK) { reply.setPerformative(ACLMessage.ACCEPT_PROPOSAL); } else { reply.setPerformative(ACLMessage.REJECT_PROPOSAL); } acceptances.add(reply); }

thy c sc mnh ca cc lp giao thc tng tc, ta c th n gin ha hnh vi BookNegotiator c trnh by trong Phn 3.3.5 da tren lp ContractNetInitiator:
public class BookNegotiator extends ContractNetInitiator { private String title; private int maxPrice; private PurchaseManager manager; public BookNegotiator(String t, int p, PurchaseManager m) { super(null, null); title = t; maxPrice = p; manager = m; } Nhng c im nng cao ca JADE 119

protected Vector prepareCFPs(ACLMessage cfp) { cfp = new ACLMessage(ACLMessage.CFP); cfp.setContent(title); for (int i = 0; i < sellerAgents.size(); ++i) { cfp.addReceiver((AID) sellerAgents.get(i)); } Vector v = new Vector(); v.add(cfp); return v; } protected void handleAllResponses(Vector responses Vector acceptances) { ACLMessage bestOffer = null; int bestPrice = -1; for (int i = 0; i < responses.size(); ++i) { ACLMessage rsp = (ACLMessage) responses.get(i); if (rsp.getPerformative() == ACLMessage.PROPOSE) { int price = Integer.parseInt(rsp.getContent()); if (bestOffer == null || price < bestPrice) { bestOffer = rsp; bestPrice = price; } } } if (bestOffer != null) { ACLMessage accept = bestOffer.createReply(); accept.setContent(title); acceptances.add(accept); } } protected void handleInform(ACLMessage inform) { // Book successfully purchased int price = Integer.parseInt(inform.getContent()); myGui.notifyUser("Book "+title+" successfully purchased. Price = "+price); manager.stop(); } } // End of inner class BookNegotiator

Phng thc prepareCFPs () c gi ngay sau khi cc hnh vi ContractNetInitiator bt u. N c d nh iu chnh cc thng ip CFP c gi n cc responder. N c bit hu dng khi thng ip CFP khng bit n vo thi gian xy dng hoc khi chng ta cn gi thng ip ty chnh ti mi responder. Tt c cc lp khi to giao thc c mt phng php tng t. 4.4.3 Lng giao thc Nh trnh by trong cc phn trc, c lp initiator v responder u gi cc phng thc callback khi nhn c cc thng ip. Nu phi gi li mt thng ip phn hi th phng thc callback c trch nhim to thng ip . Tuy nhin, c nhng trng hp to c thng ip phn hi, cn phi thc thi mt hnh vi. R rang l vic ny ngn cn chng ta s dng lp ContractNetInitiator v n khng th thc thi mt hnh vi trong mt phng thc.
Nhng c im nng cao ca JADE

120

vt qua gii hn ny, tt c cc lp giao thc ca JADE u c ci t l cc lp con ca lp FSMBehaviour v mi phng thc callback c gi trong mt trng thi ca my hu hn trng thi. Hnh 4.10 ch ra my hu hn trng thi ca lp AchieveREResponder. Nhn chung, vi mi phng thc callback mmm() c mt phng thc registerMmm() cho php ghi trng thi gi phn gthwcs mmm() bng mt hnh vi c th ca ng dng. Tt c cc phng thc registerMmm() u c mt tham s l i tng Behaviour.

Hnh 4.10: My hu hn trng thi ca lp AchieveREResponder Bn cnh cc trng thi dng gi cc phng thc callback, cn c cc trng thi khc c trch nhim gi, nhn thng ip v thc hin cc kim tra lin quan n lung giao thc. Tuy nhin, chng c n i v ngi lp trnh khng cn quan tm n. ng nt t trong hnh 4.10 ch ra cch d liu c chia s gia cc trng thi ca giao thc s dng DataStore. V d, hnh vi ci t trng thi Handler-Request ca lp AchieveREResponder nh sau:
private class HandleRequest extends OneShotBehaviour { public void action() { ACLMessage request = getDataStore().get(REQUEST_KEY); ACLMessage response = handleRequest(request); getDataStore().put(RESPONSE_KEY, response); } }

Do , khi ng k mt hnh vi c th ca ng dng trong trng thi ca mt lp giao thc, hnh vi c trch nhim ly cc thng ip nhn trc v lu tr cc phn hi c to ra vo DataStore s dng cc kha. 4.5 KHI NG JADE T MT NG DNG JAVA BN NGOI Cho n nay chng ta lun lun gi nh rng Jade run-time c khi ng t dng lnh. Tuy nhin trong nhiu trng hp, chng ta cn khi ng mt hoc nhiu agent t ng dng bn ngoi, do cn to JADE run-time lu tr chng. h tr yu cu ny, t phin bn JADE
Nhng c im nng cao ca JADE 121

2.3, mt giao din in-process c ci t cho php JADE c s dng nh mt loi th vin cho php run-time c khi chy t cc chng trnh bn ngoi. JADE run-time c ci t bi lp jade.core.Runtime. Theo mu singleton, mt th hin ca lp ny tn ti trong mt my o JVM v c th ly bng cch gi phng thc tnh instance(). Th hin Runtime cung cp hai phng thc: createMainContainer() to container chnh v createAgentContainer() to mt container ngoi vi. C hai phng thc u ly mt tham s l i tng Profile lu cc la chn cu hnh cn thit khi ng JADE run-time. Tt c cc la chn c th c c t khi khi ng JADE t dng lnh u c s dng nh l cc hng trong lp Profile v c th c thit lp trong profile s dng phng thc setParameter(String key, String value). C createMainContainer() v createAgentContainer() u tr v i tng jade.wrapper.ContainerControl. B iu khin ny s bao bc cc chc nng mc cao ca container v to cc agent mi. Phng thc createNewAgent() ca lp ny tr v i tng AgentController cng c bao bc bi mt s chc nng ca agent. C th, lp AgentController cung cp cc phng thc ng dng bn ngoi c th iu khin vng i ca agent c bao bc nhng n i vic tham chiu ti i tng Agent n khng th thc hin cc li gi trc tip ti . Ch , phng thc createNewAgent() to mt th hin ca lp Agent nhng khng khi ng n, m ch c th gi phng thc start() ca i tng AgentController c tr v. Quay li v d bookTrading, ta mun tch hp buyer agent v mt h thng ln hn c th mua sch thng qua nhiu knh khc nhau. Khi , mi trng book-trading ca JADE tr thnh mt trong cch knh ca h thng ln c th s dng mua sch. Sau y l on code ca bookbuyer agent m h thng bn ngoi s dng mua sch trong mi trng book-trading ca JADE:
public AgentController startBuyerAgent( String host, // JADE Book Trading environment Main Container host String port, // JADE Book Trading environment Main Container port String name, // Book Buyer agent name ) { // Retrieve the singleton instance of the JADE Runtime Runtime rt = Runtime.instance(); // Create a container to host the Book Buyer agent Profile p = new ProfileImpl(); p.setParameter(Profile.MAIN_HOST, host); p.setParameter(Profile.MAIN_PORT, port); ContainerController cc = runtime.createAgentContainer(p); if (cc != null) { // Create the Book Buyer agent and start it try { AgentController ac = cc.createNewAgent(name, "bookTrading.buyer.BookBuyerAgent",null); ac.start(); return ac; } Nhng c im nng cao ca JADE 122

catch (Exception e) { e.printStackTrace(); } } } return null;

Trong trng hp ny mt container ngoi vi c to ra kt ni vi mt nn tng Jade ang tn ti (mi trng book-trading JADE). Do chng ta cn phi xc nh host v port ca container chnh ca flatform. Cng lu vic s dng cc lp ProfileImpl. iu ny l cn thit v Profile l mt lp tru tng v do khng trc tip khi to.C 2 lp Profile v ProfileImpl u thuc gi jade.core. 4.5.1 Giao tip gia Object v Agent Trong nhiu trng hp, bn cnh vic bt u t mt hay nhiu agent, mt ng dng bn ngoi cn phi tng tc vi cc agent ch dn chng thc hin mt s tc v. Trong kch bn trn, v d h thng bn ngoi phi thng bo cho agent book-buyer mi ln c mt cun sch mi mua. Tng t, agent book-buyer phi thng bo cho h thng bn ngoi khi vic mua sch thnh cng. Tuy nhin, nh chng ta thy trong phn trc, cc lp AgentController khng phi by cc tham chiu ca mt th hin Agent v do cc ng dng bn ngoi khng th gi trc tip bt k mt phng thc ca agent. S tng tc gia mt ng dng bn ngoi v mt agent bt u bng giao din tin trnh c to ra sn bi mt c ch giao tip objectto-agent (O2A) . y chnh l mt hng i FIFO ng b ni ng dng bn ngoi c th t i tng Java m sau ny c th c ly bi mt agent, mi agent t c ring mt hng i O2A. Cc i tng AgentController bc ly mt agent cung cp phng thc putO2AObject() c th c s dng bi cc ng dng bn ngoi chn i tng trong hng i O2A ca mt agent. Tng t nh cc lp Agent cung cp phng thc getO2AObject () c th c s dng bi cc agent c cc i tng thng qua cc ng dng bn ngoi. Cc c ch truyn thng O2A mc nh b v hiu v do mt agent mong mun tng tc vi cc ng dng bn ngoi phi khi ng n mt cch r rng bng phng thc setEnabledO2ACommunication (). Tng t vi m hnh hng i thng ip chun, chn mt i tng vo hng i O2A ca mt agent c nh hng ti vic khi ng li tt c cc hnh vi ca agent to ra cho h mt c hi c v thc thi i tng c chn vo. Tr li v d trn, mi khi h thng buying bn ngoi c yu cu mua mt cun sch, n phi thng bo cho agent book-buyer cc b. Cc on code sau y c s dng bi cc bn ngoi h thng s thc hin iu ny:
BookInfo info = new BookInfo(title, maxPrice, deadline); buyerAgentController.putO2AObject(info);

BookInfo l mt bean ng dng c s dng nhm tiu sch mua, gi ti a m ngi s dng sn sng tr v cc hn giao hng. BuyerAgentController l i tng AgentController bao bc agent book-buyer ging nh khi tho lun startBuyerAgent () trong phn trc. Cc on code sau c thm vo cc phng thc BookBuyerAgent () x l
Nhng c im nng cao ca JADE 123

cc thng bo qu trnh t h thng bn ngoi (cc sa i khc cng cn phi c gii thiu x l mt giao dch mua hnh thnh cng hoc hn giao hng).
// Enable O2A communication setEnabledO2ACommunication(true, 0); // Add the behaviour serving notifications from the external system addBehaviour(new CyclicBehaviour(this) { public void action() { BookInfo info = (BookInfo) myAgent.getO2AObject(); if (info != null) { purchase(info.getTitle(), info.getMaxPrice(), info.getDeadline()); } else { block(); } } } );

Nhng c im nng cao ca JADE

124

CHNG 5 KH NNG DI NG CA AGENT TRONG JADE


Kh nng di ng ca Agent l mt cch tip cn xut pht t 2 ngnh khc nhau l Tr tu nhn to to ra khi nim v agent v Cc h thng phn tn nh ngha khi nim v m di ng. Chng ny trnh by mt s khi nim lin quan agent di ng v nn tng Jade trong thit k cc agent di ng. 5.1 TH NO L TNH DI NG CA AGENT Theo cc nh ngha chun, cc agent di ng c tt c c tnh ca mt agent thng thng (nh tnh t ch, phn ng, hng ch v tnh x hi), nhng thm vo chng c kh nng di chuyn chng c th di chuyn gia cc platform thc hin cc nhim v c giao. T quan im ca h thng phn tn, mt agent di ng l mt chng trnh vi mt thc th duy nht, c th di chuyn code, d liu v trng thi ca n gia cc my c ni mng. t c iu ny, cc agent di ng c th tm dng qu trnh thc thi ca chng ti bt k thi im no v tip tc ti mt v tr khc. Chng ta c th t cc agent di ng trong mi quan h vi cc cch tip cn c in khc: Client server: phng php tip cn c s dng rng ri nht, cc dch v c cung cp bi mt my ch v c phc v cho mt hoc nhiu my khch thng l t xa Thc thi t xa: mt thnh phn gi m n thnh phn khc thnh phn thc thi t xa do quyt nh ca chnh n, mt yu cu t thnh phn t xa hoc thm ch c th l mt phn ca mt giao c tn ti trc . Sau mi ln thc thi, thnh phn thc hin thng tr li bt k kt qu no ti thnh phn ban u (thnh phn gi m ti) Cc agent di ng: mt thnh phn t gi chnh bn thn n (hoc c thnh phn khc, nu c php) ti mt my ch t xa thc thi. Thnh phn ny chuyn c code, d liu v c th ton b trng thi ca n. ng lc c th tng t nh trng hp trn (thc thi t xa), nhng thng thng nht l bi quyt nh ca chnh thnh phn (tc l agent di ng), n mun di chuyn ti mt v tr thay th.

Mt agent di ng, nh m t trong Hnh 5.1, bao gm 3 thnh phn: code, trng thi v d liu. Code l phn ca agent s c thc thi khi n di chuyn ti mt platform khc. Trong trng hp n gin nht, ch c mt code n nht. Trng thi l mi trng thc thi d liu ca agent, bao gm b m chng trnh v ngn xp tc v. Thnh phn ny ch c tm thy cc agent di chuyn mnh (xem phn 5.1.2). D liu bao gm cc bin m cc agent s dng, nh tri thc, nh danh tp tin...Trong di chuyn yu (xem phn 5.1.2) thnh phn ny thc s cn
Kh nng di ng ca Agent trong JADE 129

thit v code agent c cu to nh mt my trng thi v duy tr thng tin trng thi i hi phi c cc bin ny.

Hnh 5.1: Cu trc c bn ca agent di ng 5.1.1 Mt s u im v nhc im ca agent di ng c nhiu tranh ci v nhng u nhc im ca cc agent di ng, thng thng chng c so snh vi nhng h agent khng di ng. Mt vi u im in hnh l : Tin trnh c lp v khng ng b: mi khi agent di chuyn ti mt platform mi, cc agent khng phi lin h vi ch thc hin nhim v ca mnh. Chng c th ch cn gi cc kt qu tr v. iu ny c bit hu ch i vi cc thit b di ng vi cc ngun lc hn ch khi mt agent c th c di chuyn ti mt my khc thc hin cc nhim v phc tp v gi tr li kt qu nh k. S chu li: cc agent di ng c th gii quyt v tr gip trng thi li bng cch di chuyn ti mt platform thay th khi cc vn c pht hin. Nu ch n hng, c th chn my ch tm thi. iu ny lm chng kh thch hp cho nhng mi trng th ch, khng thn thin. Cc ng dng d liu ln: cc agent di ng rt thch hp cho cc ng dng cn phi x l s lng ln cc d liu t xa. Cc agent di ng c th di chuyn ti ni c cha d liu, ch khng phi ngc li (chuyn d liu ti cc agent x l). Trong nhiu trng hp, la chn ny hiu qu hn rt nhiu.

Tuy nhin, cc agent di ng cng c mt s nhc im. Nh c m t trong Mir (2004), nhng nhc im r nht trong s l: Kh nng m rng v hiu sut: mc d cc agent di ng gim ti mng, nhng chng cng c xu hng lm tng tin trnh. l bi chng thng c lp trnh vi cc ngn ng trnh din v cng phi tun theo nhng tiu chun v kh nng tng tc nghim ngt, c th chu c vic x l d liu bn trn. Tnh linh ng v tiu chun ha: cc agent khng th tng tc nu chng khng theo cng tiu chun chung. Su tun theo cc tiu chun ny, nh OMG MASIF hay FIPA, l cn thit, c bit cho di ng gia cc platform. Bo mt: vic s dng cc agent di ng c th mang ti nhng vn v an ninh. Bt k m di ng no cng em li mt mi e da tim nng v nn c xc nhn cn thn trc khi gi ti.

Kh nng di ng ca Agent trong JADE

130

5.1.2 Di chuyn mnh v di chuyn yu Trong cc h thng agent di ng c th chia thnh 2 loi di chuyn c bn: di chuyn mnh v di chuyn yu. Di chuyn mnh th thng phc tp hn. l trng hp s thc thi ca mt agent n nh, s di chuyn din ra, sau s thc thi c khi ng li ngay t ch dn tip theo. K thut ny i hi phi bo v v lu li trng thi ca agent trong sut qu trnh di chuyn. Vic ci t k thut ny c th phc tp bi n i hi truy cp cc tham s ni b ca agent - thng ch dnh cho h iu hnh; v rt ph thuc cu trc. Mt khc, di chuyn yu khng gi trng thi ca agent, do n gin hn nhiu. S thc thi ca agent lun khi ng li t u m. Loi di chuyn ny i hi agent c ci t nh mt my trng thi hu hn trng thi c duy tr. 5.1.3 K hoch di chuyn Mt hnh trnh di chuyn xc nh cc a im m mt agent di ng phi ti hon thnh tp cc nhim v. Hai loi hnh trnh c bn : Cc hnh trnh tnh: c xc nh ti thi im khi to agent v khng c kh nng thay i trong sut qu trnh thc thi ca agent. Cc hnh trnh ng: c xc nh trong c qu trnh thc thi ca agent, theo cc nhu cu v mong mun.

Ngoi ra c phng php lai l s kt hp ca c 2 loi trn. 5.2 DI CHUYN TRONG CNG PLATFORM JADE cung cp mt dch v nn tng gi l dch v agent di ng, thc hin di ng ni b platform. Dch v ny to cho cc agent phn mm kh nng di chuyn gia cc container trong cng platform. Tuy nhin, c ch ny khng cho php cc agent di chuyn n cc container thuc cc platform khc. 5.2.1 Cc phng thc truy cp ti kh nng di ng ca Agent Trong JADE, agent di ng c iu khin n gin thng qua phng thc doMove() trong lp Agent :
void doMove( Location destination )

Tham s ch phi l mt i tng ca mt lp thc thi giao din Location. Trong platform ca JADE c 2 lp thc thi giao din ny, chng u cha trong gi jade.core. u tin l ContainetID, c dng c t ch n ca agent s l mt container ca platform. Container hin ang chy. Th 2 l PlatformID, c s dng ch ra rng ch n ca agent l container chnh ca mt platform khc. Khi mt platform t xa c ch nh l ch n ca mt agent di ng th cc c ch di ng gia cc platform (m t trong phn 5.3) c thc hin . Mi khi c gi ti, phng thc ny khi to tin trnh di chuyn agent n container ch c ch nh. a s code t c iu ny nm trong gi jade.core.mobility. Li gi phng thc doMove() c chuyn tip ti Dch v agent di ng thng qua phng thc
Kh nng di ng ca Agent trong JADE 131

move() ca helper ca n. Hnh ng u tin helper thc hin l thay i trng thi ca agent t ACTIVE thnh TRANSIT buc agent chm dt cc hot ng hin thi ca n v b tr hon trong khi platform nh v li v tr ca n. Ngi dng c th ch nh cc hot ng c kch hot trc khi tin trnh di ng c bt u, v d lu trng thi agent. Cc hot ng c xc nh theo phng thc ca lp Agent :
void beforeMove()

Mt phng thc ngc li l afterMove() cng c ch nh kch hot cc hot ng c thc thi ngay sau khi agent di chuyn, trc khi n phc hi li trng thi ACTIVE ti v tr ch. 5.2.2 Agent serialization Sau li gi phng thc beforeMove(), helper gi mt cu lnh dc (s c trnh by trong Chng 6) yu cu agent c chuyn ti ch cha trong cu lnh. Nu cu lnh cha mt i tng ch l mt th hin ca lp PlatformID, Dch v di ng lin platform (xem phn 5.3) s bt u di chuyn agent ti platform xa c ch nh. Khi i tng ch l mt th hin ca lp ContainerID, Dch v agent di ng s bt u di chuyn agent ti container ch trong platform hin thi. ContainerID ca container bt k c th c yu cu thay th t platform agent AMS, hn l xy dng n t lp ContainerID. S di chuyn ca agent phi bao gm vic truyn ti t nht l code v d liu ca n; v cng c th truyn trng thi. Trong JADE, cc agent m hnh trng thi thc thi ca chng nh nhng d liu ni b agent, v vy c th hiu rng ch cn truyn code v d liu. D liu agent c cha trong i tng Java i din cho agent, do , vic truyn i tng ny cng vi code ca n l khi phc li agent ti ch n. Java serialization thng truyn mt th hin agent qua mt kt ni mng bng cch ghi li cc gi tr thnh phn ni b ca i tng agent trong mt lung byte. Ngi dng phi ch nh cc thnh phn d liu c truyn cng vi agent bng cch s dng b m tm thi. V d, nu mt agent c mt thnh phn FileInputStream (khng phi serializable) v khng c khai bo l tm thi, tin trnh di ng s li v a ra mt ngoi l NotSerializableException. 5.2.3 Lp ti (classloader) ca agent di ng Khi mt th hin ca mt agent c xut bn, n c chuyn n cc container ch bng bng ca mt lnh ngang (xem chng 6). Sau thc hin deserialized phc hi cc i tng agent ban u. Tuy nhin, vt cha Jade thng c t ti my o Java khc nhau trn my khc nhau. Nu mt agent di chuyn t mt my ch ti cc my khc, nhng tp tin lp ban u gc cng phi c lm sn c nh l qu trnh deserialization ca i tng agent mt container ch yu cu lp cu trc ban u. qun l vn ny, cc AMS ( Agent Mobility Service) s dng lp c xy dng bn trong c kh nng np ca cc lp yu cu t mt container t xa thng qua cc lnh dch v ngang (horizontal service commands) Bt k container tip nhn yu cu nh vy t tn lp yu cu v gi n vo container yu cu.
Kh nng di ng ca Agent trong JADE 132

Nu agent c deserialized thnh cng, mt lung c to ra cho i tng ti sinh, v qu trnh bt c thc thi khi ng li cc agent. Tt c cc thng ip c gi trong qu trnh di c sau c g b t mt b m tm thi ti cc container gc v chuyn hng v pha v tr agent mi. Cui cng, ti container ngun, agent chuyn vo vo tnh trng GONE, ch ra rng mt di chuyn thnh cng v cc bn sao cc b b chm dt. Phng thc afterMove () c gi v agent c loi b ra t cc container. 5.2.4 Nhn bn Agent Cho n nay chng ny c m t ni nn tng di ng v cc s kin xy ra trong Jade khi mt agent di chuyn. Tuy nhin, Jade cng cung cp mt c ch nhn bn l chp nh bn sao ca agent tn ti bng cch s dng phng thc:
public void doClone(Location destination, String newName)

Tham s destination c s dng ch ra cc container m clone ca agent hin thi s c to ra. Tham s newName l tn c s dng to ra clone AID. Qu trnh nhn bn chnh n l ging vi di ng, ngoi tr cc agent khi to th khng b chm dt. Do kt qu l tng ng, thc hin nhn bn tng t mi cch ngoi tr nh danh ca chng. 5.2.5 Tuyn b kh nng di ng gin tip Qu trnh di chuyn mt agent c th thc s c xc nhn mt cch trc tip bi cc chnh cc agent hoc gin tip bi mt nn tng AMS. N c khi to khi mt agent, hoc ngi dng thng qua giao din RMA, gi mt thng ip ACL n nn tng ca AMS yu cu ci m mt agent c th c di c. Nu mt AMS nhn nh mt yu cu, v quyn hn ca ngi yu cu c xc minh, cc AMS t ng gi phng thc doMove() hoc doClone() ca cc agent c th. V l do ny, mt s ch cn c thc hin khi to phng thc afterMove() v beforeMove() ca mt agent m d kh trnh khi khng nh gin tip vic c tr. Bi v li gi ca doMove() khng nht thit phi ph thuc vo bn thn agent, rt thn trng m bo chn chn cc hnh ng , chng hn nh gii phng ti nguyn v tit kim thng tin, c a ra nhm ngn chn vn xy ra nu mt li gi di c gin tip c khi to. 5.3 DCH V DI NG LIN PLATFORM Cc dch v di ng lin platform (IPMS) l mt tin ch ca Jade c to ra cung cp kh nng di ng gia cc platform (platform to platform mobility) cho cc agent trong Jade, mt tnh nng m khng c sn gn lin vi AMS (Agent Mobile Service). Cc IPMS c thit k mt cch c bit c th trong sut vi cc lp trnh vin agent bi vic chc chn vic di c lin nn tng n gin nh di c ni nn tng. Cng nhiu tun th nht c th c duy tr vi phn i (v thiu xc nhn ci t ban u). FIPA H tr qun l Agent cho c t di ng (c t phn i hin c ti http://www.fipa.org/specs/fipa00087/index.html). Phin bn hin ti l n gin, nhng thit k m rng vi cc tnh nng b sung nh an ninh v h tr cho khng li di c.

Kh nng di ng ca Agent trong JADE

133

5.3.1 Qu trnh di c C ch ct li ca IPMS l s di chuyn ca cc agent gia cc nn tng s dng FIPA-ACL thng ip nh l phng tin trung chuyn. Cc thng ip ny c gi i gia cc AMS ca cc nn tng thit b u cui. Nh cp, mt vi thay i tng c thc hin cho nhng c t k thut FIPA gc; cc ontology by gi nh ngha hai hnh ng, di chuyn (move) v bt ngun (power up). Hnh ng u tin i din cho s di chuyn ca code v th hin agent; hnh ng th hai i din cho s kch hot ca agent mt ln di c l hon tt. Ngoi ra, mt s khi nim c nh ngha nh mobile-agent-description cha tt c cc thng tin agent, bao gm code, d liu ca n v mobile-agent-profile. Khi nim ny cui cng xc nh c tnh agent c bn gip chc chn rng kh nng tng thch vi cc nn tng nhn, nh tn gi ca h thng agent gc, ngn ng m n c vit, v giao thc di ng c s dng. Gi s rng cc thng ip c cha thng tin ny, ph hp vi cc ontology di ng, s l cho mt nn tng t xa quyt nh xem n c th thc thi mt agent n. C hai hnh ng, move v power up, c thc hin bng cch s dng cc tiu chun giao thc tng tc theo yu cu FIPA. Trong tng trng hp mt thng ip yu cu c gi n cc nn tng ch vi mt thng ip Thng bo hoc Tht bi mong i nh mt phn hi. Nh minh ho trong hnh 5.2, giao thc yu cu di chuyn ca FIPA, agent khi to (bn tri) s gi mt yu cu chuyn thng ip ti nn tng ca n ci m s ln lt gi mt yu cu chuyn cc thng ip cha m agent v cc d liu vo n tng ch c th (bn phi). Nu nn tng ch chch chn thnh cng mt agent t thng ip yu cu, mt thng ip Thng bo c tr li cho nn tng ngun. Khi nhn, thng ip Thng bo ny gy ln cho nn tng ngun vic chm dt cc agent yu cu v gi Yu cu power-up n nn tng ch, ni s bt u cc agent. Nu mt ci g khng thnh cng, cc trng thi ca agent trong nn tng ban u c khi phc v bt k nhng th hin cn li ca cc agent trong nn tng ch l c. u im ca vic s dng thng ip ACL vn chuyn cc agent t mt nn tng ny ti nn tng khc khc l khng cn thm vo knh giao tip lin nn tng. iu bt li y l hiu sut khng phi l c bit cao do bn cht l quy trnh m ha v gii m ti ACL thng ip. Tiu chun ca cc MTP thit k ci thin hiu sut thng ip ACL, c l bng cch s dng m ha ni dung nh nh l n biu hin (FIPA23), c th nng cao hiu sut ng k trong khi gi li kh nng tng thch.

Hnh 5.2: Giao thc yu cu di chuyn ca FIPA

Kh nng di ng ca Agent trong JADE

134

5.3.2 Tch hp cc dch v di ng IPMS cn n Dch v di ng ni platform xy dng trong Jade. Hai l do cho vic ny l: (1) Phng php di c gia cc nn tng v phng php di c gia cc container trn cng mt nn tng c bn l nh nhau theo quan im ca ngi s dng. Phng thc move() to tham s Location mi trong lin nn tng hp c gi l PlatformID (mt binca containerID) l tng trng cho nn tng mc tiu m agent mun di chuyn. Nh cc IPMS c thc hin bng cch s dng kin trc dch v Jade (xem chng 6), n cn ch ch i nhn c lnh dc t dch v ni pltm vn ng vi mt Location ca kiu PlatformID. N sau ch phi cn hy b lnh v bt u cng vic ca mnh. S ny c m t trong hnh 5.3 (2) Bi v trong di ng ni platform, m agent thc thi c th khng c c tr trong cng mt container m agent mun di chuyn; nh vy, mt c ch thu hi m l cn thit. V cc dch v di ng ni platform khng di chuyn m agent, IPMS cha mt c ch b sung phn tng trn nn tng di ng bo m vic di chuyn m cng din ra khi mt agent di chuyn gia cc container....

Hnh 5.3: Lung thc thi lnh dc Move 5.3.3 Nhm code ca cc Agent vi nhau di chuyn mt agent t mt a im ny ti mt a im khc, tt c m ca n phi c nhm li vo thng ip ACL. S b tr m ny khng nht thit l mt nhim v tm thng, nh trong Jade, Classpath dng pha trn cc tham chiu vo m v th vin ca platform, v m ca agent. iu ny gy kh khn khi quyt nh mt th vin hoc mt lp trong Classpath c th c s dng bi cc agent trong tng lai. Hai gii php khc nhau c cung cp cho vn ny. Phng php lp trnh n gin (mc d khng n gin i vi ngi s dng) l dnh cho cc lp trnh vin t ng gi cc agent bn trong mt file Jar vi tt c cc m v th vin m n s yu cu. Tp tin jar ny sau c th c chuyn i cng vi cc agent. Cc dch v di ng ni platform cung cp mt c ch khi to trong h thng di chuyn ci m t ng to mt tp tin JAR cho mt agent. Tp JAR ny c cha m tt c cc agent v cc lp trnh vin s khng bao gi nhn thy s tn ti ca n. C ch ny c xy dng bi vic kim tra quy cc lp chnh ca agent tm kim cho tt c cc lp ph thuc v xy dng mt JAR t tp cui cng thu c. Trong phin bn hin ti, c th l trong mt s trng
Kh nng di ng ca Agent trong JADE 135

hp c bit khng phi tt c cc lp agent c pht hin ng. V d, iu ny c th xy ra ti cc agent u nh x c s dng ti cc lp (v d: Class.forName ("ClassName"). NewInstance ()). Nu vn xy ra vi cc agent di tr n rt c kh nng rng mt s lp khng c bao gm trong JAR ca agent. Hin nay, trnh nhng vn ny, cc tp tin JAR phi c to ra bng tay. Cc JAR nn c t tn sao cho n tng ng vi tn lp chnh ca agent. V d, vi agent vi main class l org.example.MyAgent phi c ng gi trong mt tp tin tn org_example_MyAgent.jar JAR. Cc JAR sau phi c t trong mt th mc c ch nh trn dng lnh khi chy Jade. Phng php tip cn th hai, lp trnh phc tp hn nhng minh bch ngi s dng, bao gm ca nh danh t ng tt c cc lp cn thit v xy dng mt tp tin JAR cha chng. La chn lp c iu khin bi cc dch v m c th ng rng khng phi la chn ti u c th c thc hin. 5.3.4 Ontology di ng ca JADE Jade-mobility-ontology c tt c cc khi nim v hnh ng cn thit h tr agent di ng. Jade cung cp lp jade.domain.mobility. MobilityOntology c chc nng nh mt singleton cho php truy cp n mt trng hp duy nht c chia s ca ontology di ng ca JADE thng qua cc phng thc getInstance (). Cc ontology, gip ko di JADEManagementOntology, cha nm khi nim v hai hot ng, mi ci lin kt vi mt lp ca gi jade.domain.mobility. Cc lc khi nim ny c m t trong cc bng t 5.1 n 5.5. Cc hnh ng l: move-agent. y l hnh ng ca mt agent di chuyn t mt a im ti mt a im khc. N i din bi cc lp MoveAction. Hnh ng ny c slot n khng tn ca loi mobileagent-description. i s l bt buc. clone-agent. y l hnh ng to ra mt bn sao ca mt agent, c th chy trn mt v tr khc. N c i din bi lp CloneAction. Hnh ng c hai khe khng tn: u tin ca loi mobile-agent-description v th hai ca kiu String. C hai i s l bt buc.

Lu rng ontology ny hin cha c bn sao trong cc c t FIPA. 5.4. S DNG CC DCH V DI CHUYN CA JADE 5.4.1. Dch v di chuyn ni platform Dch v di chuyn ni platform l mt dch v c xy dng trong Jade v do khng yu cu cc bc ci t c bit chun b s dng n. Dch v ny chy mt cch mc nh khi Jade c bt u chy nhng nu mt s dch v khc ang chy th n phi c thm vo trong danh sch mt cch r rng. l chy vi lnh sau:
java jade.Boot -services jade.core.mobility.AgentMobilityService

Kh nng di ng ca Agent trong JADE

136

Bng 5.1. Mobile-agent-description: miu t mt mobile agent. N c biu din bi lp MobileAgentDescription Tn slot
Name Destination Agent-profile Agent-version Signature

Kiu slot
AID Location mobile-agent-profile String String

Bt buc/tu chn Bt buc Bt buc Tu chn Tu chn Tu chn

Bng 5.2 Mobile-agent-profile: miu t mi trng tnh ton cn cho mobile agent. N c biu din bi lpMobileAgentProfile Tn slot
System language Os

Kiu slot
mobile-agent-system mobile-agent-language Mobile-agent-os

Bt buc/tu chn Tu chn Tu chn Bt buc

Bng 5.3 Mobile-agent-system Miu t thi gian chy h thng c s dng bi mobile agent. N c biu din bi lp MobileAgentSystem Tn slot
System major-version minor-version dependencies

Kiu slot
String Integer Integer String

Bt buc/tu chn Bt buc Bt buc Tu chn Tu chn

Bng 5.4 Mobile-agent-language: Miu t ngn ng lp trnh c s dng bi mobile agent. N c biu din bi lp MobileAgentLanguage Tn slot
System major-version minor-version dependencies

Kiu slot
String Integer Integer String

Bt buc/tu chn Bt buc Bt buc Tu chn Tu chn

Kh nng di ng ca Agent trong JADE

137

Bng 5.5 .Mobile-agent-os: Miu t h iu hnh cn bi mobile agent. N c biu din bi lp MobileAgentOS Tn slot
System major-version minor-version dependencies

Kiu slot
String Integer Integer String

Bt buc/tu chn Bt buc Bt buc Tu chn Tu chn

5.4.2 Dch v di chuyn lin platform Cc IPMS khng c xy dng trong platform v phi c ci t nh mt add-on. ci t cc add-on, cc tp tin ng gi phn phi phi c Unzipped bn trong th mc Jade ni lnh lib ant c s dng to mt tp tin JAR cha tt c cc file ca lp c bin dch. s dng dch v, n phi c quy nh r rng trn dng lnh, khng qun bao gm c dch v di chuyn ni platform bn trn
java jade.Boot -services jade.core.mobility.AgentMobilityService;jade.core.migration. InterPlatformMobilityService

5.4.3 Xem xt vn bo mt ca IPMS iu rt quan trng nhn mnh rng nhng tc ng bo mt ca vic s dng dch v di chuyn lin platform l rt quan trng, thng nghim trng hn di chuyn ni platform. Vic kch hot cc IPMS ng rng cc my ang cha mt Jade platform c th thc thi m c chuyn ti t bt k h thng tim nng no c c thng qua mt kt ni mng. Vo thi im hin ti, IPMS khng c c ch kim sot truy cp quyt nh agent ang n no s c thc thi v agent no khng c thc thi. Hin nay, kim sot truy cp ch c th c thc hin bng cc phng tin ca mt MTP an ton (v d HTTPS MTP cung cp mt s tnh nng xc thc n gin m c th c s dng cho mc ch ny), hoc bng cch s dng tng la ngn chn cc kt ni mng t cc platform c th. Cho n khi mt h thng iu khin truy cp c hon thin hn c ci t, ngi ta khuyn ngh rng cc platform s dng IPMS c mt s cch c bn sau bo mt: (1) Khng s dng IPMS trong mt mi trng m hoc trn cc my c cha thng tin nhy cm. (2) Hy th hn ch truy cp mng cho platform bng cch s dng tng la. (3) Hy th s dng cc MTP vi mt s hnh thc xc thc ni ti. D kin cc phin bn sp ti ca IPMS s cung cp ton din v cu hnh c ch bo mt. 5.4.4 Lp trnh agent di ng Mc tiu chnh ca cc dch v di ng ca Jade l c s dng mt cch n gin nht c th. Trong trng hp ny, cn thit phi np chng mt s phng thc v gi cc phng thc
Kh nng di ng ca Agent trong JADE 138

doMove() hoc doClone () ca lp Agent di chuyn hoc sao chp cc agent (lu rng doClone () ch c sn vi dch v di chuyn ni platform). ch ra ch ca mt agent di ng hoc mt agent c nhn bn, Jade nh ngha giao din jade.core.Location. Hai ci t ca giao din ny c cung cp: jade.core.ContainerID cho di chuyn ni platform v jade.core.PlatformID cho di chuyn lin platform. Cc ContainerID phi c khi to vi tn ca container ch v a ch vn chuyn ca n. Cc PlatformID phi c khi to vi agent AID ca iu khin ca agent AMS ca platform bao gm a ch vn chuyn ca n. di chuyn mt agent khc container hay platform, mt hnh vi ca agent phi bao gm mt li gi n cc phng thc doMove (). Phng thc ny thay i agent ca trng thi TRANSIT ch ra rng l vdi chuyn. Cc m sau minh ho mt di chuyn ni platform:
// Create some variables String containerName = "Container-1"; ContainerID destination = new ContainerID(); // Initialize the destination object destination.setName(containerName); // Change of the agent state to move myAgent.doMove(destination); In the case of inter-platform migration, a similar example is as follows: // Build the AID of the corresponding remote platforms AMS AID remoteAMS = new AID("ams@remotePlatform:1099/JADE", AID.ISGUID); // Specify the MTP by setting the transport address of the remote // AMS remoteAMS.addAddresses("http://remotePlatformaddr:7778/acc"); // Create the Location object PlatformID destination = new PlatformID(remoteAMS); // Change of the agent state to move myAgent.doMove(destination);

sao chp mt agent phng thc doClone () c s dng thay i trng thi agent COPY. s dng n, hai i s phi c thng qua: ch n container v tn agent mi. y l mt v d:
// Create some variables String containerName = "Container-1"; String newAgentName = "myClone"; ContainerID destination = new ContainerID(); // Initialize the destination object destination.setName(containerName); // Change of the agent state to clone myAgent.doClone(destination, newAgentName);

Nh cc dch v di ng ci t vic di chuyn yu, mt cu trc m da trn mt my hu hn trng thi c yu cu. iu ny l do truy cp chng trnh ca agent thc thi khng c truyn, lm cho n khng th tip tc agent thc hin t dng tip theo ch dn ca doMove() hoc doClone (). Thay vo , agent thc hin c th tip tc ch t u on m hnh vi ca agent. S dng my hu hn trng thi biu din, mt cu trc c th c to ra trong on m agent thnh phn vi cc bin c gn ch ra trng thi m agent thc thi.
Kh nng di ng ca Agent trong JADE 139

Mt tuyn b chuyn i c s dng, v d, mt agent vi c ngi bn v ngi mua c th c vai tr m vi c 2 trng thi, mt cho vic bn v mt cho vic mua. Cc agent phi thit lp mt bin trng thi trc khi ri mt container hoc mt platform cho bit c vai tr s c khi to cho thng qua trong cc v tr tip theo. to ra c th s dng cch biu din my hu hn trng thi. V d, trong mt hnh trnh hai container trong container ch l mt mng cc a im, cc m hnh vi c thc hin trong mi container c phn cch nh trong v d sau y:
addBehaviour(new CyclicBehaviour(this){ public void action() { switch(_state){ case 0: // Agent starts to migrate _state++; myAgent.doMove(_dests[0]); break; case 1: // Agent migrates to the second container _state++; myAgent.doMove(_dests[1]); break; case 2: // Agent dies myAgent.doDelete(); break; default: myAgent.doDelete(); } } private ContainerID[] _dests = ...; private int _state = 0; });

V d ny cho thy cch m m agent phi c cu trc trong Jade bo m cc trng thi ca n bng cch s dng mt bin. Trong sut cc tin trnh di chuyn ca m agent ca serialization v deserialization, mt s ti nguyn s dng bi agent cng s c chuyn giao, trong khi nhng agent khc s b ngt kt ni trc khi s di chuyn ca agent v kt ni li ti im ch. Jade cung cp hai phng php kt hp trong cc lp Agent cho vic qun l ngun ti nguyn m ch cn c np chng bi cc lp trnh vin: BeforeMove(): c gi ti v tr ngun khi hot ng di chuyn hon thnh thnh cng nh th hin ca agent c di chuyn l c kch hot trn container ch v cc th hin ca agent ban u l c chm dt. Phng thc ny l v tr chnh xc pht hnh bt k ngun lc a phng c s dng bi cc th hin ca agent ban u (v d nh ng m cc file v nh minh ho). Nu cc ngun lc ny c s dng trc khi bit nu mt di chuyn thnh cng, chng va mi m li mt ln na. Tuy nhin, do hu qu ca vic ny l bt k thng tin c vn chuyn bi agent n v tr mi phi c thit lp trc khi cc phng thc doMove() c gi. Thit lp mt thuc tnh ca
140

Kh nng di ng ca Agent trong JADE

agent trong cc phng thc beforeMove() s khng c tc ng n th hin ca s di chuyn. AfterMove(): c gi ti v tr ch n ngay sau khi cc agent n v vic nhn dng n c t ra, nhng trc khi vic lp lch hnh vi khi ng li.

i vi agent nhn bn, Jade cung cp mt cp phng thc tng ng l phng thc beforeClone() v afterClone(). Chng c gi trong cng mt dng nh phng thc beforeMove () v phng thc afterMove (). Tt c bn phng thc ny u l protect v l cc thnh vin ca lp Agent, c nh ngha nh l placeholders rng. Ngi dng c nh ngha cc agent di ng c th ghi ln 4 phng thc khi cn thit. 5.4.5 Truy cp vo AMS bng kh nng di ng ca agent JADE AMS c mt vi m rng h tr tnh di ng ca agent. Mi hnh ng lin quan n tnh di ng, nh c cp trong phn 5.3.4, c th c yu cu bi AMS bng cch s dng thng ip FIPA Request, cng vi thuc tnh ontology c thit lp v jade-mobility-ontology v ngn ng c thit lp l FIPA-SL0. Hnh ng move-agent s xem mobile-agent-description nh l mt bin ca n. Hnh ng ny di chuyn agent c nh danh bi thuc tnh tn v a ch ca mobile-agentdescription n v tr c nh danh bi thuc tnh ch. V d, nu mt agent mun di chuyn agent Peter n v tr tn l Front-End, n phi gi ACL Request thng ip sau n AMS ca n:
(REQUEST :sender(agent-identifier:nameRMA@Zadig:1099/JADE) :receiver(set(agent-identifier:nameams@Zadig:1099/JADE)) :content ( (action(agent-identifier:nameams@Zadig:1099/JADE) (move-agent(mobile-agent-description :name(agent-identifier:nameJohnny@Zadig:1099/JADE) :destination(location :nameMain-Container :protocolJADE-IPMT :addressZadig:1099/JADE.Main-Container) ) ) ) ) :reply-withReq976983289310 :languageFIPA-SL0 :ontologyjade-mobility-ontology :protocolfipa-request :conversation-idReq976983289310 )

S dng h tr JADE ontology, mt agent c th d dng thm tnh di ng vo kh nng ca n m khng cn son thng ip ACL bng tay. u tin, agent phi to mt i tng MoveAction mi v in i s ca n vi mt i tng MobileAgentDescription ph hp, n
Kh nng di ng ca Agent trong JADE 141

ln lt in y tn v a ch ca agent cn di chuyn (hoc l chnh n, hoc l agent khc) v v tr ca ch. Mt li gi n phng thc Agent.getContentManager().fillContent (.. , ..) tip chuyn i i tng Java MoveAction sang dng String v in n vo thuc tnh content ca thng ip ACL Request. Hnh ng nhn bn agent lm vic cng tng t nh vy, nhng c thm mt i s dng String cha tn ca agent mi l kt qu ca qu trnh nhn bn. AMS cn h tr bn hnh ng lin quan n tnh lu ng c nh ngha trong JADEManagement Ontology. Hnh ng where-is-agent ch c mt i s, cha nh danh ca agent c xc nh. Hnh ng ny c kt qu l v tr agent a v thuc tnh content ca thng ip Inform ACL gip hon thnh giao thc. V d, thng ip Request hi v tr agent Peter lu tr s l:
(REQUEST :sender(agent-identifier:nameda1@Zadig:1099/JADE) :receiver(set(agent-identifier:nameams@Zadig:1099/JADE)) :content((action (agentidentifier:nameams@Zadig:1099/JADE) (where-is-agent(agent-identifier:namePeter@Zadig:1099/JADE)) )) :languageFIPA-SL0 :ontologyJADE-Agent-Management:protocolfipa-request )

V tr kt qu s c cha trong mt thng ip Inform nh sau:


(INFORM :sender(agent-identifier:nameams@Zadig:1099/JADE) :receiver(set(agent-identifier:nameda1@Zadig:1099/JADE)) :content((result (action (agent-identifier:nameams@Zadig:1099/JADE) (where-is-agent(agent-identifier:name Peter@Zadig:1099/JADE)) ) (set(location :nameContainer-1 :protocolJADE-IPMT :addressZadig:1099/JADE.Container-1 )) )) :reply-withda1@Zadig:1099/JADE976984777740 :languageFIPA-SL0 :ontologyJADE-Agent-Management :protocolfipa-request )

Hnh ng query-plaform-locations (truy vn platform v v tr) khng c i s nhng kt qu trong mt tp tt c nhng i tng ph hp vi Location cha trong JADE platform hin ti. Thng ip cho hnh ng ny rt n gin:
(REQUEST :sender(agent-identifier:nameJohnny) Kh nng di ng ca Agent trong JADE 142

:receiver(set(Agent-Identifier:nameAMS)) :content((action(agent-identifier:nameAMS) (query-platform-locations))) :languageFIPA-SL0 :ontologyJADE-Agent-Management :protocolfipa-request )

Nu platform hin ti c 3 container, AMS s gi li thng ip Inform sau:


(INFORM :sender(Agent-Identifier:nameAMS) :receiver(set(Agent-Identifier:nameJohnny)) :content((Result(action(agent-identifier:nameAMS) (query-platform-locations)) (set(Location :nameContainer-1128 AgentMobility :transport-protocolJADE-IPMT :transport-addressIOR:000....Container-1) (Location :nameContainer-2 :protocolJADE-IPMT :addressIOR:000....Container-2) (Location :nameContainer-3 :protocolJADE-IPMT :addressIOR:000....Container-3) ))) :languageFIPA-SL0 :ontologyJADE-Agent-Management :protocolfipa-request )

Lp Location thc thi interface jade.core.Location v c truyn n phng thc Agent.doMove() v Agent.doClone(). Mt mu hnh vi in hnh cho agent di ng JADE s hi AMS v v tr (hoc l danh sch y , hoc l thng qua nhiu hnh ng where-is-agent) v quyt nh, khi no v u nn di chuyn.

Kh nng di ng ca Agent trong JADE

143

5.4.6 V d v tnh di ng ca agent i vi tnh di ng ni platform, cc gi v d JADE cha mt ng dng chng minh bao gm mt GUI dnh ring cho vic h tr s dng. chy ng dng chng minh cn c mt platform vi hai container. Cch chy v d minh ho: Copy th mc mobile trong th mc C:\jade\src\examples vo C. (Xo dng package trong tt c cc lp ca th mc mobile). Bin dch cc lp bng dng lnh compileJade (file compileJade.bat to nh chng 3):

Hnh 5.4: Bin dch cc lp trong v d minh ho Container u tin c th c chy bng cch: To file runMobileAgent.bat vi ni dung
java -classpath .;C:\jade\lib\jade.jar;C:\jade\lib\jadeTools.jar;C:\jade\lib\iiop.jar;C :\jade\lib\http.jar;C:\jade\lib\commons-codec\commons-codec-1.3.jar jade.Boot -gui mobile:MobileAgent

v lu vo th mc C:\mobile. Chy file runMobileAgent.bat ta c:

Hnh 5.5: giao din ca agent di ng Container th hai c chy bng cch tng t nhng thay i ni dung file runMobileAgent.bat nh sau:
Kh nng di ng ca Agent trong JADE 144

java -classpath .;C:\jade\lib\jade.jar;C:\jade\lib\jadeTools.jar;C:\jade\lib\iiop.jar;C :\jade\lib\http.jar;C:\jade\lib\commons-codec\commons-codec-1.3.jar jade.Boot container

v lu vi tn runNewContainer.bat cng th mc C:\mobile v chy file ny. Ta thy mt container mi xut hin trn platform. chy v d, ch cn refresh danh sch v tr, la chn mt contaitner v nhp vo nt Move hoc Clone. Tip , ton b ng dng s di chuyn hoc nhn bn sang container c la chn.

Kh nng di ng ca Agent trong JADE

145

CHNG 6 KIN TRC BN TRONG CA JADE


Cho ti thi im ny ch c nhng tnh nng c h tr bi Jade run-time v API truy cp cc tnh nng c trnh by. Trong phn ny, chng ta s hng vo kin trc ct li bn trong ca Jade bao gm c vic lm th no xc nh v m rng cc hnh vi. 6.1 GII THIU CC B LC CNG TC PHN TN Trc phin bn Jade 3.2, run-time c ci t nh mt ht nhn cung cp khi lng ln cc tnh nng c yu cu bi cc Agent sng v giao tip vi nhau. Cch tip cn ny ng hn l rt kh sa i, nh n yu cu sa i ht nhn bt c lc no khi c mt chc nng mi c gii thiu. Nh vy, trong bn pht hnh phin bn 3.2, phn phi trong thng 7 nm 2003, Jade runtime hon ton c cu trc li theo mt thit k mi gi l kin trc b lc cng tc phn tn (distributed coordinated filters architecture). 6.1.1 tng v ng c thc y Kin trc mi ca Jade c to ra bng cch xem xt cc yu cu sau: Thc thi cc tnh nng nn tng nh nhng module tch bit. Kh nng m rng linh hot h tr cho vic tch hp nhng tnh nng mi v sa i nhng tnh nng ang tn ti. D dng trin khai cc tnh nng da trn mt nn tng phn tn. Chin lc trin khai: Trin khai nhng g bn cn ch cc tnh nng c bt u v s dng mc tiu thc thi c th. V d nh cho mi trng di ng. Khi ni ti cc yu cu ny, kin trc thu ht c mt s cm hng t lp trnh hng kha cnh (AOP), trong nguyn l chnh l khuyn khch chia nh mi quan tm mt cch r rng. iu ny t c bng cch vit code nh mt tp hp cc kha cnh c lp, mi mt kha cnh biu hin v nhng mi quan tm khc nhau. Cc kha cnh sau c kt hp mt cch cn thn theo mt s quy tc trong mt tin trnh c gi l qu trnh thu dt kha cnh (aspect weaving). Hin c mt s phng php ci t aspect weaving, cch ph bin nht l aspect weaving ti thi im ti cc lp th vin (classload-time aspect weaving). Trong cch tip cn ny, mt ClassLoader c s dng kt hp cc kha cnh khc nhau khi ti cc lp java. Tuy nhin, trong mt l lc lm cho cng vic ny tr nn n gin nht c th, v xem xt cc yu cu chy Jade trn thit b di ng, ni m cc k thut ti lp tinh vi thng khng sn sng, th mt cch tip cn (c xut bi Aksit et al., 1993) c chn. Trong cch tip cn ny, c bit n nh cc b lc kt hp, mi i tng c cung cp bi 2 knh lc (filter chain) mt knh n cc b lc ca n c gi bt c khi no m i tng nhn mt li gi phng thc v mt knh i cc b lc ca n s c gi khi m i tng s gi
Kin trc bn trong ca JADE 147

ti mt vi phng thc ca i tng khc. Kin trc b lc cng tc phn tn bt ngun t cch tip cn lc kt hp ny v hng n phn tn qua nhiu container. 6.1.2 Cc thnh phn chnh Cc thnh phn chnh trong kin trc Distributed coordinated filters c m t trong Hnh 5.1. Mi mt jade container s t ngay phn u ca mi node. Trong khi container c thit k lu tr cc Agent th node s lu tr cc dch v. Mt dch v c ci t bi cc c tnh mc nn m c nhm li theo tnh gn kt v mt khi nim gia chng. y l mt s tru tng nguyn thy ca kin trc lc cng tc phn tn. Cc dch v nh Messaging Service, Agent Management Service v Mobility Service u ci t cc c ch cho php agent di c gia cc container. Thnh phn qun l hot ng ca cc dch v bn trong mt node c gi l dch v qun l (Service Manager). Trn thc t, Service Manager s tn ti vi node lu tr main container. Service Manager ny lu tr cc bng ca tt c cc node trong mt platform v danh sch tt c cc dch v ang hot ng ti mi node. Service Manager trn cc container ngoi vi ch l cc proxy. 6.1.3 Cc thnh phn dch v Nh cp, tru tng chnh trong kin trc Distributed coordinated filter l dch v. Tt c cc hot ng mc agent nh vic gi thng ip, di chuyn, thm ch c vic bt u v kt thc u c ci t bi mt dch v ca Jade. Chng s cha mt vi thnh phn c m t trong phn ny. 6.1.3.1 Lnh dc, b lc v sink Tt c cc hot ng mc agent c container ngm chuyn tip ti dch v c trch nhim thc hin hot ng . V d, mt l lc ca agent di c ti mt container t xa c chuyn tip ti dch v Mobility Service bi container ngm. Dch v ny c th ci t trc tip thao tc hoc a ra mt lnh dc (vertical command). Lnh dc l mt th hin ca lp jade.core.GenericCommand v nhng vo thao tc cn c thc hin mt s tham s. Khi a ra lnh dc, vic ci t thao tc cn c thc hin s c giao cho mt thnh phn ca dch v c gi l outgoing (source) sink. Tuy nhin, trc khi n c source sink, lnh dc phi i qua mt mt xch ca b lc outgoing filter. V d, trong hnh 6.2, khi mt agent gi thng ip, container chuyn thng ip n Messaging Service. Sau to ra mt lnh dc SEND_MESSAGE nhng vo thng ip tham s receiver. Outgoing filter ca dch v Notification Service s x l lnh bng cch kim tra sender v receiver v a ra thng bo. Cc b lc khc ca cc dch v khc khng quan tm n lnh SEND_MESSAGE th s b qua n. Cui cng, messaging sink s phn phi thng ip n receiver. Khi mt dch v ci t mt hot ng mc agent ang a ra mt lnh dc, n to ra mt im m rng/thay i bn trong platform, nh cc dch v khc (c th to bi cc nh pht trin ng dng c miu t trong phn 7.2) c th chn lnh li v thm vo x l khc. Mt b lc c th thay i mt lnh v thm ch kha n. V d, chn lnh ng
Kin trc bn trong ca JADE 148

SEND_MESSAGE v kha cc thng ip khng tun th, mt b lc c th n gin ngn cn ton b cc thng ip m khng tun th cc rang buc c phn phi c th ca ng dng.

Hnh 6.1: Cc thnh phn chnh trong kin trc lc cng tc phn tn

Hnh 6.2: Mt xch ca b lc outcoming filter 6.1.3.2 Lnh ngang v slice Mt dch v d nhin c th c phn tn qua mt vi node ca nn tng vi mi phn cn tng tc ln nhau. V d, dch v Messaging Service c ci t trn tt c cc node, chng to nn mt platform. Khi sink ca dch v thng ip trn mt node cn x l mt lnh dc SEND_MESSAGE mang mt thng ip trc tip ti mt agent tn ti trn mt container xa, n bt buc phi d ra ni m bn nhn tn ti v chuyn thng ip ti container ni nhn. Hot ng u tin c th lin quan n lin h vi dch v Messaging Service ang chy trn container chnh ly c v tr ca bn nhn. Hot ng th 2 l yu cu s lin h ca dch v Messaging Service ang chy trn node ch thc s truyn thng ip v a n vo hng i thng ip ca bn nhn. Tng tc gia cc node y c thc hin nh vo cc phng tin ca cc lnh ngang. Ging nh lnh dc, lnh ngang c nhng vo cc hot ng c thc hin vi bt k tham s no n c th c. Vn l lp jade.core.GenericCommand c x dng ci t chng. Thnh phn, trong mi dch v, ci m chu trch nhim chp nhn cc lnh ngang t cc nt xa c gi l mt slice. Mt slice c th thc hin trc tip hnh ng c nhng trong mt lnh ngang nhn c, hoc l n c th a ra mt lnh dc mi. Trong trng hp th hai,
Kin trc bn trong ca JADE 149

hnh ng thc s c giao ph cho mt thnh phn dch v khc gi l incoming (hay target) sink. Tuy nhin, trc khi ti target sink ca dch v, mt lnh dc a ra bi cc chuyn i ca mt slice, theo cch tip cn b lc cng tc, mt mt xch ca cc b lc incoming filter. Mi dch v ci t trn mt node c th cng cp mt b lc vi ci m chng c th phn ng li trong mt dch v c bit vi mi lnh dc a ra bi mi slide ca dch v trong node . C mt ch l c sink ngun, ch v cc b lc outgoing, incoming bt buc phi l cc thc th khc nhau (k c nu nh chng l cc th hin ca cc lp khc nhau). V d, Hnh 6.3 biu din ng i hon thin c theo sau bi mt thng ip ACL trao i gia 2 agent. C th rng ng i ny c t dng hnh ch U ni m cc cnh dc tng ng vi cc lnh dc i qua cc cc mt xch ca cc b lc outgoing v incoming, v cnh ngang tng ng lnh ngang c gi bi source sink ti slice trn node ch. Khi mt slice ca dch v ng vai tr l mt lnh ngang bng cch a ra duy nht mt lnh dc incoming v giao ph hnh ng thc s cho target sink ca dch v, n to ra mt im m rng/sa i trong platform cc dch v khc c th ngn lnh v thm vo x l khc.

Hnh 6.3: V d v vic phn phi thng ip 6.1.3.3 Cc b tr gip dch v i vi cc dch v gn lin vi JADE, cc hot ng mc agent thng c x l bi container ngm chu trch nhim bin chng thnh cc dch v thch hp cho vic x l, nh gii thiu trong phn 6.1.3.1. i vi cc dch v c nh ngha bi ngi dng v c m rng, cch tip cn ny s yu cu sa i m ca container mi khi 1 dch v mi h tr cc hot ng mc agent c thm vo. Do , kin trc b lc cng tc phn tn bao gm b tr gip dch v (Service Helper) tru tng cho php 1 agent trc tip truy cp cc tnh nng c cung cp bi 1 dch v. Service Helper l 1 c ch m API li ca JADE c th c m rng theo cch tng thch vi vic khng xm nhp v li. Mt agent c th ly li helper ca 1 dch v trc bng phng thc getHelper() ca lp Agent. Phng thc ny ly tn dch v nh l 1 bin v tr li 1 i tng ci t giao din jade.core.ServiceHelper. i tng phi tng thch vi ng dch v helper trc khi cc phng thc nghip v ca n c th c triu gi.
Kin trc bn trong ca JADE 150

Chng hn, gi s li ca JADE phi c m rng cc agent c kh nng gi cc email, mt EMailService s c pht trin (chi tit trong phn 6.2). R rng tnh nng ang c gi i ca dch v s lm cho khng c gi tr no thng qua mt phng thc mi ca lp Agent (chng hn trong trng hp gi cc thng ip hoc di c). iu ny s dn n vic sa i cc lp li ca JADE. Ni cch khc, mt EMailHelper tng thch s phi c nh ngha, cung cp, chng hn, phng thc sendMail(). Code tng t nh sau c th c s dng:
1: 2: EMailHelper emHelper=(EMailHelper) getHelper (EMailService.NAME); 3: emHelper.sendMail(); 4:

Biu lp c m t trong Hnh 6.4 tm tt cc thnh phn cu to ln 1 dch v ca JADE mc khi qut. Ch rng khng thnh phn no trong l bt buc. Mt dch v nh khng cn c cc filter, sink, slice

Hnh 6.4: Cc thnh phn ca mt dch v mc nhn ca JADE 6.1.4 La chn cc dch v c kch hot Khi 1 container ca JADE khi ng, cc dch v c kch hot ti mt node c c t bi cc phng tin ca la chn services. Gi tr ca la chn ny l 1 danh sch c tch bit bng du chm phy (;), vi cc tn lp y , mi ci t dch v c m t nh trong phn 6.2. Ch quan trng l dch v Messaging Service v dch v Agent Management Service, bt buc trong mi platform ca JADE, lun c kch hot bt chp gi tr ca la chn services. Bn cnh 2 dch v chnh, JADE cng kch hot dch v Mobility Service (xem chng 5) v dch v Notification Service ch mc nh. Vic chy JADE m khng la chn dch v, nh trnh by di y, tng ng vi vic khng ch r dch v no
java jade.Boot -services jade.core.mobility.AgentMobilityService;jade.core.event.NotificationSer vice

N cng c ghi ch rng khi thm 1 dch v c chy, vic chy JADE vi 1 dng lnh nh sau
Kin trc bn trong ca JADE 151

java jade.Boot -services myPackage.myService

s khi ng 1 container khng h tr kh nng di ng ca agent v kh nng gim st agent bi v khi s mc nh b ghi , dch v Mobility Service v dch v Notification Service khng c kch hot na. 6.2 TO MT DCH V LI TRONG JADE Chng ta m t cc thnh phn cu to nn 1 dch v li ca JADE v minh ha cc vai tr v cc tng tc ca chng. Phn ny s gii thiu cc lp m ci t chng v lm th no to mt dch v do ngi dng nh ngha. Dch v ng nhp n gin cho book-trading c s dng trong cun sch ny s c dng nh mt v d ch ra tt c cc thng ip c cc agent trao i. Dch v s c xy dng ln dn. Cc thng ip giai on u tin s c in ra trn cc u ra chun m t rng mt dch v c th cung cp cc b lc n gin ngn chn cc lnh dc vo ra (nh phn ln cc dch v do ngi dng nh ngha thng lm). Trong pha th 2 cc dch v s c sa li in ra tt c cc thng ip trn u ra chun ca main container. Trong pha ny m t mt dch v c th yu cu mt mc hp tc gia cc node khc nhau. Cui cng cc dch v s c m rng bng cch thm vo Service Helper cho php cc agent ngay lp tc tng tc vi n. 6.2.1 Ci t lp ca dch v Mt dch v c th c to ra bng cch ci t giao din jade.core.Service, hoc thun tin hn, bng cch lm lp con ca lp jade.core.BaseService. Cch th hai cung cp vic ci t ngm nh cho hu ht cc phng thc ca giao din Service. Phng thc duy nht m phi c ci t l getName(), n tr li 1 chui c dng nh danh dch v c ci t. Mc d iu ny khng hon ton bt buc, nhng quy tc c khuyn ngh cho tn dch v nh sau : S dng hu t Service trong tt c cc lp extending BaseService S dng tn lp dch v khng c hu t Service chng hn nh tn ca dch v c tr li bi phng thc getName().

Trong khi dch v khi ng, hai phng thc ca giao din Service c gi bi node ngm. Phng thc init() c gi u tin mt cch th ng trc khi dch v c ci t thc s trong node; phng thc ny c th c coi nh l mt phng thc khi to. Phng thc boot() c gi sau khi dch v hot ng. Dch v ny sau c th s dng cc tnh nng ca ServiceManager v local container. Phng thc boot() c th c s dng thc thi, v d mt giao thc khi to phn tn. Code bn di th hin khung ca lp LoggingService thc thi dch v Logging Service c m t trn.
3: import jade.core.*; 4: 5: public class LoggingService extends BaseService{ 6: // Service name 7: public static final String NAME = "bookTrading.logging.Logging"; 8: Kin trc bn trong ca JADE 152

9: // Service parameter names 10: public static final String VERBOSE = "bookTrading_logging_LoggingService_verbose; 11: 12: private boolean verbose = false; 13: 14: public String getName() { 15: return NAME; 16: } 17: 18: public void boot(Profile p) throws ServiceException { 19: super.boot(p); 20: verbose = p.getBooleanProperty(VERBOSE, false); 21: System.out.println("VERBOSE = "+verbose); 22: } 23: }

dng 18 phng thc boot() ly mt i tng jade.core.Profile l mt tham s. i tng Profile ny c hiu lc vi tt c cc cu hnh khi ng ca JADE c m t phn 4.6. Cc cu hnh c th ca tng dch v c th c c t nh tham s dng lnh di khun dng key value. Trong trng hp ny chng c th c ly li bng chnh dch v ca n thng qua i tng Profile c truyn nh l tham s vo phng thc boot(). Vi v d ny, chng ta gi s dch v Logging Service chp nhn mt tham s verbose bo n in ra tt c cc trng ca thng ip (khi verbose nhn gi tr true) hoc ch in ra performative (nu verbose l false). Mt quy c t tn tt c s dng trong JADE trnh s ln xn gia cc tham s lin quan n cc dch v khc nhau, l xy dng cc tn ca tham s bng cch rng buc tn lp ca dch v (s thay th nhng dng gch di bng nhng du chm) vi nh danh ca tham s. Hng s tnh VERBOSE c nh ngha dng 10 cung cp mt v d. dng 20 th phng thc getBooleanProperty() ca lp Profile c s dng ly gi tr (boolean) ca tham s bookTranding_logging_LoggingService_verbose. 6.2.2 Khi ng dch v Lu file LoggingService.java vi ni dung nh trn vo C. Chy lnh compileJade vi ni dung file compileJade.bat nh m t trong Chng 3:

Hnh 6.5: Bin dch lp LoggingService.java


Kin trc bn trong ca JADE 153

To file runLoggingService.bat vi ni dung:


java -classpath .;C:\jade\lib\jade.jar;C:\jade\lib\jadeTools.jar;C:\jade\lib\iiop.jar;C :\jade\lib\http.jar;C:\jade\lib\commons-codec\commons-codec-1.3.jar jade.Boot -gui -services jade.core.event.NotificationService;LoggingService bookTrading_logging_LoggingService_verbose true

v lu vo C sau chy file ny ta c kt qu:

Hnh 6.6: Kt qu chy LoggingService ca v d bookTrading 6.2.3 S dng b lc chn cc lnh dc Cho n nay Logging Service khng cung cp bt k mt chc nng g, do bc k tip l lm cho n thc s ghi chp li cc thng ip c trao i bi cc agent trong ng cnh booktrading. lm iu ny mt s b lc dch v cn c ci t, c bit l cn mt b lc outgoing filter ghi chp li cc thng ip mt khi chng c gi i. Cc b lc dch v c ci t bng cch lm lp con ca lp jade.core.Filter v c nh ngha li cc phng thc accept() v postProcess(). C hai phng thc nhn v mt tham s jade.core.VerticalCommand. Khi mt lnh dc i qua mt chui b lc, trnh t cc li gi sau u xy ra:
Filter-1.accept() ... Filter-n.accept() Sink.consume() Filter-n.postProcess() ... Filter-1.postProcess()

Kin trc bn trong ca JADE

154

V vy mt b lc c th hot ng trn mt lnh dc cho c hai phng thc (accept() v sau phng thc postProcess()) trc khi thao tc tng ng vi lnh dc thc s c thc hin bi cc service sink. Phng thc accept() tr v mt gi tr boolean. Vi vic tr v gi tr false, mt filter c th block mt lnh dc. Mt dch v cung cp cc b lc i v n (nu c) ca n bng phng thc getCommandFilter() ca giao din Service. Phng thc ny nhn mt tham s ch hng ca b lc c tr li. Gi tr c th cho tham s ny l Filter.INCOMING v Filter.OUTGOING. Ngay c khi iu ny l khng bt buc, mt phong cch lp trnh in hnh khi pht trin cc cc dch v li ca JADE l ci t cc thnh phn ca dch v nh b lc, sink v slice nh l cc lp ni ca lp dch v chnh. on code di y cho thy cch m Service Logging c th in tt c cc thng ip c gi trn u ra chun.
1: ... 2: private outFilter = new OutgoingLoggingFilter(); 3: ... 4: public Filter getCommandFilter(boolean direction) { 5: if (direction == OUTGOING) { 6: return outFilter; 7: } 8: else { 9: return null; 10: } 11: } 12: ... 13: private class OutgoingLoggingFilter extends Filter { 14: public boolean accept (VerticalCommand cmd) { 15: if (cmd.getName().equals (MessagingSlice.SEND_MESSAGE) ) { 16: object[] params = cmd.getParams(); 17: AID sender = (AID) params [0]; 18: GenericMessage gMsg = (GenericMessage) params [1]; 19: ACLMessage msg = gMsg.getACLMessage(); 20: AID receiver = (AID) params [2]; 21: System.out.println("Message from "+sender+" to "+receiver+:"); 22: if (verbose) { 23: System.out.println (msg) ; 24: } 25: else { 26: System.out.println(ACLMessage.getPerformative (msg.getPerformative())); 27: } 28: } 29: // Never block a command 30: return true; 31: } 32: }

T dng 17-20, lnh dc SEND_MESSAGE c 3 tham s i din cho ngi gi thng ip, thng ip chnh n v mc ch nhn. Trn thc t, cc i tng ACLMessage c t ng gi trong mt i tng jade.core.messaging.GenericMessag.
Kin trc bn trong ca JADE 155

Cc lp GenericMessage nhng cc thng tin khc ngoi thng ip ACL thc c s dng bi sink ca dch v Messageing Service x l cc trng hp phn phi c bit. 6.2.4 Ci t mt dch v phn tn trong JADE Trong phn ny v d Logging Service c m rng th hin tt c cc bn in li trn u ra chun m khng quan tm n container m n c sinh ra. t c iu n, mt slice ca dch v Logging Service phi c thc thi. Hn na, OutgoingLoggingFilter c biu din trong phn 6.2.3 phi c iu chnh gi mt lnh ngang ti slice ca dch v Logging Service trn container chnh mi ln n chn mt thng ip. Vic thc thi mt slice cho mi dch v l hi phc tp hn so vi vic thc thi mt b lc, v cn phi pht trin ba lp. 6.2.4.1 Giao din ngang (horizontal interface) Giao din ny khai bo tt c cc phng thc c th c gi t mt slice t xa v phi m rng giao din Service.Slice. Tt c cc phng thc trong giao din ngang phi nm ra ngoi l jade.core.IMTPException nu mt vi vn mng xy ra ti mc IMTP, v d khng ly c slice t xa. V d giao din ngang c th nh sau:
1: 2: 3: 4: 5: 6: 7: 8: 9: package bookTrading.logging; import jade.core.*; public interface LoggingSlice extends Service.Slice { public static final String H_LOGMESSAGE = "log-message"; public void logMessage (String s) throws IMPException; }

Giao din ngang cng l ni l tng nh ngha cc hng s biu din tn ca cc lnh ngang m n c th c p ng bi service slice. c bit phi ch c mt lnh ngang cho mi phng thc trong giao din ngang. 6.2.4.2 Slice Proxy y l lp m cc th hin ca n c trao quyn i din cho mt remote slice. N m rng t lp jade.core.SliceProxy v phi thc thi giao din ngang. Khi mt dch v cn tng tc vi mt slice trn mt node t xa, u tin n phi khi phc li mt proxy tr ti slice v sau gi phng thc c yu cu. Mc ch chnh ca proxy l chuyn i cc li gi phng thc thnh cc lnh ngang thch hp ci m s c gi n remote slice. Cc lp proxy c ch ng ti v mi khi cn v phi tun theo quy c t tn: chng phi c t tn <servicename>Proxy. Lp bookTrading.logging.LoggingProxy c ci t nh sau:
1: package booTrading.logging; 2: 3: import jade.core.*; 4: 5: public class LoggingProxy extends SliceProxy implements LoggingSlice { 6: public void logMessage (String s) throws IMTPException { Kin trc bn trong ca JADE 156

7: GenericCommand cmd = new GenericCommand(H_LOGMESSAGE, LoggingService.NAME, null); 8: cmd.addParam(s) ; 9: getNode().accept(cmd); 10: } 11: }

Dng 7, lp jade.core.GenericCommand c s dng thc thi cc lnh ngang. Nhng lnh ny sau c thm vo cc tham s cn thit v c chuyn ti cc remote node. Lu rng mt slice proxy c gn vo mt proxy tr ti node m c proxy slice c ng ti . 6.2.4.3 Ci t Slice y l lp thc thi giao din Service.Slice. N chu trch nhim m bo dch v gi cc lnh ngang. Vic thc thi Slice khng cn thc thi giao din ngang. Lp thc thi slice cho Logging Service c ci t nh sau:
1: . . . 2: private class LoggingSlicelmpl implements Service.Slice { 3: 4: public Service getService() { 5: return LoggingService.this; 6: } 7: 8: public Node getNode() throws ServiceException { 9: try { 10: return LoggingService.this.getLocalNode() ; 11: } 12: catch (IMTPException imtpe) { 13: // Should never happen as this is a local call 14: throw new ServiceException("Unexpected error retrieving local node") ; 15: } 16: } 17: 18: public VerticalCommand serve (HorizontalCommand cmd) { 19: String cmdName = cmd.getName() ; 20: if (cmd.getName().equals (LoggingSlice.H_LOGMESSAGE)) { 21: Object[] params = cmd.getParams () ; 22: System.out.println (params [0]) ; 23: } 24: } 25: } 26: . . .

Cc phng thc getService() v getNode() kh n gin v phn thn ca n kh r rng trong tt c cc lp thc thi slice. Phng thc serve() l im trung tm ca lp thc thi slice v c gi n mi ln mt lnh ngang c nhn. Mt slice c th phc v trc tip mt lnh ngang nh trong v d trn, hoc nh cp trong phn 6.1.3.2, nu cc nh pht trin mun cc dch v khc phn ng li vic nhn mt lnh ngang, h c th ci t phng thc serve() tr v i tng VerticalCommand, i tng ny s di chuyn qua mt xch ca b lc incoming filter v ti service sink. Mt dch v tuyn b n c kh nng thc hin vic phi hp gia cc
Kin trc bn trong ca JADE 157

node bng cch thc thi cc phng thc getHorizontalInterface() v the getLocalSlice(). lm c iu , lp LoggingService phi c ci t nh sau:
1: . . . 2: private ServiceSlice localSlice = new LoggingSliceImpl() ; 3: . . . 4: public Class getHorizontalInterface() { 5: return LoggingSlice.class; 6: } 7: 8: public Service.Slice getLocalSlice() { 9: return localSlice; 10: } 11: . . .

Ti thi im ny, LoggingService sn sng chuyn tip cc ghi chp li ti cc nt ca platform. Vic cui cng phi lm l sa i OutgoingLoggingFilter nh trong phn 6.2.3 chuyn tip cc ghi chp li n logging slice trn main container. Vic thc thi cc dng code nh sau:
1: . . . 2: private class OutgoingLoggingFilter extends Filter { 3: public boolean accept (VerticalCommand cmd) { 4: if (cmd.getName().equals (MessagingSlice.SEND_MESSAGE)) { 5: Object[] params = cmd.getParams() ; 6: AID sender = (AID) params [0] ; 7: GenericMessage gMsg = (GenericMessage) params[1] ; 8: ACLMessage msg = gMsg.getACLMessage() ; 9: AID receiver = (AID) params[2] ; 10: // Prepare the log record 11: String logRecord = "Message from "+sender+" to "+receiver+": \n" ; 12: if (verbose) { 13: logRecord = logRecord+msg; 14: } 15: else { 16: logRecord = logRecord+ACLMessage.getPerformative (msg.getPerformative()); 17: } 18: 19: // Send the log record to the logging slice on the Main Container 20: try { 21: LoggingSlice mainSlice = (LoggingSlice) getSlice(MAIN_SLICE) ; 22: mainSlice.logMessage(logRecord) ; 23: } 24: catch (ServiceException se) { 25: System.out.println("Error retrieving Main Logging Slice") ; 26: se.printStackTrace() ; 27: } 28: catch (IMTPException impte) { Kin trc bn trong ca JADE 158

29: System.out.println ("Error contacting Main Logging Slice") ; 30: se.printStacktrace() ; 31: } 32: } 33: // Never block a command 34: return true; 35: } 36: }

Phng thc getSlice() ca dch v Service c s dng phc hi mt proxy a n mt remote slice. Phng thc ny ly tn ca node m cha remote slice . Hng MAIN_SLICE c inh ngha trong lp BaseService lun bo n slice trong container chnh. 6.2.5 Tng tc gia Agent v dch v Nh c miu t trong phn 6.1.3.3, agent c th tng tc trc tip vi dch v m cung cp Service Helper. minh ha lm sao m mt dch v c th cung cp mt helper, the Logging Service c m rng cho php agent thay i thuc tnh verbose ca n. Mt phong cch lp trnh c khuyn co y bao gm nh ngha giao din LoggingHelper m rng t lp ServiceHelper v mt lp ni LoggingHelper ca lp dch v chnh. Giao din LoggingHelper c th l cc dng sau:
1: 2: 3: 4: 5: 6: 7: package bookTrading.logging; import jade.core.*; public interface LoggingHelper extends ServiceHelper { public void setVerbose(boolean verbose); }

Mt dch v cung cp mt helper bng ci t phng thc getHelper ca giao din Service. Phng thc ny c gi mi khi mt agent ly help cho dch v ln u tin. iu ny cho php dch v s dng mt i tng helper cho tt c agent hoc mt helper cho mi agent.
1: . . . 2: private ServiceHelper helper = new LoggingHelperImpl(); 3: . . . 4: public ServiceHelper getHelper (Agent a) { 5: return helper; 6: } 7: . . . 8: public class LoggingHelperImpl implements LoggingHelper { 9: public void init(Agent a) { 10: } 11: 12: public void setVerbose (boolean v) { 13: verbose = v; 14: } 15: } 16: . . .

Kin trc bn trong ca JADE

159

Phng thc init() c nh ngha dng 9 l phng thc duy nht bao gm giao din ServiceHelper v c gi trc khi tr v mt i tng helper cho mt agent yu cu n ln u tin. Khi s dng i tng helper cho mi agent, n cho php lin kt i tng helper vi agent c lin kt vi n. V trong trng hp ny, mt i tng helper n c s dng cho mi agent, nn thn ca n rng.

Kin trc bn trong ca JADE

160

CHNG 7 PHT TRIN H A AGENT VI PHNG PHP LUN MaSE V JADE


Chng ny bn v vn s dng phng php lun MaSE kt hp vi Jade khi pht trin cc h phn tn trong th gii thc. Cho n nay c rt nhiu phng php lun cng nh rt nhiu khung (framework) c pht trin xy dng cc h a agent phc tp. Mt s phng php lun nh Gaia, Tropos, Ingenias, MaSE (Multi-agent Systems Engineering)v mt s khung nh TuCSoN (TUple Centre Spread Over the Network), JADE (Java Agent DEvelopment Framework), Jadex, DESIRE (Design and Specification of Interacting Reasoning components) c gii thiu. Chng ny tp trung trnh by phng php lun MaSE kt hp vi nn tng JADE v mt case study Qun l Hi tho. H thng ny cho php cc tc gi gi bi bo n hi ng v cho php hi ng gn trch nhim cho cc thnh vin tham gia nhn xt. Sau h thng a ra quyt nh chp nhn bi bo hay khng. L do la chn MaSE l v phng php ny kh gn gi vi nhng ngi tng pht trin cc h thng theo cch tip cn hng i tng v l do la chn JADE l v y l mt framework d s dng, tr thnh chun cng nghip pht trin cc h a agent phc tp v c bit l to thun li cho nhng ngi tng lp trnh bng ngn ng Java. 7.1 GII THIU Lch s tnh ton cho n nay c nh du bi nm xu hng quan trng v ang cn tip din: Tnh ton mi ni Kt ni ln nhau Tnh ton thng minh Tnh ton i din Tnh ton hng n con ngi Xu hng th nht, tnh ton mi ni, ngha l gim chi ph u t vo kh nng tnh ton bng cch s dng sc mnh x l vo nhng ni c coi l khng kinh t. Khng ging nh cc h thng my tnh thi k u, cc h thng my tnh ngy nay c kt ni vi nhau to thnh mt h thng phn tn ln. Internet l mt v d. Him c mt my tnh no s dng trong lnh vc thng mi v hc thut m khng c kh nng truy cp Internet. Ngy nay, cc h phn tn v ng thi l ch ca nhiu cuc nghin cu v thc nghim t ngi ta

Pht trin h a agent vi Phng php lun MaSE v JADE

163

nh gi li nn tng ca khoa hc my tnh v tm kim nhng m hnh l thuyt mi phn nh thc t tnh ton tt hn: thc cht tnh ton l mt qu trnh tng tc ln nhau. Xu hng th ba, tnh ton thng minh, ngha l phc tp ca nhng tc v m chng ta c th t ng ha v giao ph cho my tnh ang ngy cng tng. Khi , cc k s my tnh c th gii quyt c nhng nhim v phc tp m khng c ch trong mt thi gian ngn. Xu hng tip theo l hng n tng kh nng giao ph cng vic cho my. V d nh h thng my bay khng ngi li ( , li khuyn ca chng trnh my tnh c tin cy hn l nhng phi cng dy dn kinh nghim). Cui cng, xu hng tnh ton hng con ngi l mt bc chuyn dch ln t quan im lp trnh hng my mc. iu ny c chng minh cch m chng ta tng tc vi my tnh. Thi k u, tng tc c thc hin thng qua vic tit lp cc switch trn panel ca my. Tip theo l cc giao din dng lnh. Sau khi c s ra i ca giao din ha, ngi s dng c th iu khin thit b thng qua cc icon mt cch trc tip. Cng vi s pht trin l cc quan im lp trnh cng thay i theo: t hp ng, lp trnh hng th tc, lp trnh hng cu trc n lp trnh hng i tng. Nhng s pht trin cho php ngi lp trnh ci t phn mm mt mc tru tng cao hn v hng con ngi hn. Nhng thch thc thc y qu trnh pht trin cc cng c v cc c ch cho php xy dng cc h phn tn vi kh nng s dng li v tin cy cao hn. Do , lnh vc mi cc h a agent tr thnh ch thu ht nghin cu v pht trin mnh m trong khoa hc my tnh ngy nay. 7.2 MT S C IM CA NN TNG PHT TRIN AGENT 7.2.1 Mt s nn tng h tr pht trin h a agent C nhiu ngn ng lp trnh agent m n bn di l mt platform ci t ng ngha ca ngn ng lp trnh , v d nh JACK Agent Language (JAL), 3APL (An Abstract Agent Programming Language), IMPACT, AF-APL (Agent Factory Agent Programming Language). Tuy nhin cng c nhiu platform khng ph thuc vo ngn ng lp trnh, m thay vo l cung cp s h tr cc kha cnh nh truyn thng/giao tip v phi hp. Sau y, ti xin gii thiu mt s platform nh vy, trong , ni bt nht l JADE. TuCSoN (Tuple Centre Spread over the Network) l mt framework phi hp cc h a agent. TuCSoN da trn mt m hnh v mt c s h tng cung cp mc ch chung v cc dch v c th lp trnh c tr gip vic truyn thng v phi hp ca agent. y l mt framework hon ton da trn Java bao gm cc thnh phn: runtime platform, tp cc th vin APIs, tp cc cng c. Li ca TuCSoN l cng ngh tuProlog l mt my Prolog c tch hp hon ton vi mi trng Java. Ngy nay, TuCSoN cng c s dng xy dng cc h thng da trn agent trong cc d n thuc mi trng hc tp, nghin cu. Jadex l mt framework to cc agent hng ch tun theo m hnh belief-desireintention (BDI). Framework ny c ci t thnh mt tng nm trn nh ca mt c s h tng middleware nh JADE v cho php pht trin agent vi cc cng ngh c sn nh Java,
Pht trin h a agent vi Phng php lun MaSE v JADE 164

XML. My suy lun ca Jadex gii quyt nhng gii hn ca cc h BDI truyn thng bng cch gii thiu cc khi nim mi nh mc ch r rng v c ch cn nhc mc ch, lm cho kt qu ca vic phn tch v thit k hng goal c th d dng chuyn sang giai on ci t. Jadex c s dng xy dng cc ng dng trong cc lnh vc khc nhau nh m phng, lp lch v tnh ton di ng. V d, Jadex c s dng pht trin mt ng dng a agent trong m phn lch cha tr bnh vin. DESIRE (DEsign and Specification of Interacting REasoning components) l mt phng php pht trin gp cho cc h a agent da trn kin trc gp. Trong , vic thit k agent da trn nhng kha cnh chnh sau: gp tin trnh, gp tri thc v cc quan h gia gp tin trnh v gp tri thc. Vic c t quan h gp lin quan n kh nng trao i thng tin gia cc thnh phn v cu trc iu khin kch hot cc thnh phn. DESIRE c s dng cho nhng ng dng nh cn bng ti ca cc h thng chun on v phn phi in. JADE (Java Agent DEvelopment Framework) nh trnh by trong cc Chng trc, Jade l mt Java framework pht trin cc ng dng a agent phn tn. N cung cp mt tp cc dch v sn c v d s dng cng nh mt vi cng c ha g li v kim th. Mt trong nhng mc tiu chnh ca JADE l h tr kh nng phi hp hot ng bng cch tun theo mt cch nghim ngt c t FIPA v kin trc cng nh c s h tng truyn thng. Ngoi ra, JADE cng kh mm do v c th thch nghi s dng trn cc thit b gii hn v ti nguyn nh PDAs v mobile phones. JADE c s dng rng ri trong nhng nm qua trong cc t chc cng nghip cng nh cc t chc hc thut t nhng hng dn ging dy trong cc kha hc lin quan n agent n cc bn mu cng nghip. Mt v d in hnh l vic Whitestein s dng JADE xy dng mt h thng h tr ra quyt nh cc trung tm cy ghp ni tng. 7.2.2 Mt s c im ni bt ca JADE Nh trnh by cc chng trc, JADE l mt nn tng phn mm cung cp chc nng c bn cho tng gia. N c lp vi cc ng dng c th v n gin ha vic ci t cc ng dng phn tn nhng ng dng khai thc s tru tng ca cc agent phn mm. Mt c im ng ch ca JADE l n thc thi s tru tng ny trn ngn ng hng i tng Java, cung cp mt API n gin v thn thin. Nhng la chn thit k n gin ha ca JADE u b nh hng bi s tru tng ca agent. Do , JADE c ci t cung cp cho cc nh lp trnh cc chc nng ct li cho php sn sng s dng v d dng ty bin: H thng hon ton phn tn cho php cc agent c tr trn , mi agent hot ng nh l mt lung ring bit, v c kh nng giao tip mt cch trong sut vi agent khc. Tun th y cc c t ca FIPA. Nn tng JADE tham gia thnh cng vo tt c cc s kin phi hp hot ng ca FIPA v c s dng nh l tng gia ca nhiu nn tng trong mng li Agentcities. iu ny to nn s ng gp ln lao ca nhm JADE vo qu trnh chun ha ca FIPA. Phng tin vn chuyn hiu qu ca cc thng ip khng ng b thng qua mt API khng b ph thuc v v tr. Nn tng JADE la chn cc phng tin sn c tt nht ca
165

Pht trin h a agent vi Phng php lun MaSE v JADE

truyn thng. Khi i qua ranh gii gia cc nn tng, cc thng ip t ng c bin i t cch biu din bng Java bn trong ca JADE sang cc c php, cch gii m v cc giao thc vn chuyn tun theo FIPA. Thc thi c 2 dch v white-page v yellow-page. H thng c th c ci t biu din cc min v cc min con nh mt th cc th mc. Qun l vng i agent n gin nhng hiu qu. Khi cc agent c t ng gn mt nh danh ton cc duy nht v mt a ch vn chuyn c s dng ng k vi dch v white-page ca nn tng. Cc API n gin v cc cng c ha cng c cung cp qun l vng i agent va t xa v va cc b, nh to, nh ch, phc hi, ng bng, tan bng, di chuyn, lp li v xa. Cung cp tnh di ng ca agent. C m v trng thi ca agent u c th di chuyn gia cc tin trnh v cc my. S di chuyn c to ra cc agent giao tip mt cch trong sut m c th tip tc tng tc thm ch l trong sut qu trnh di chuyn. Mt c ch t trc (subscription) cho mi agent, v thm ch l c cc ng dng bn ngoi, m mun ng k vi nn tng c thng bo v tt c cc s kin ca platform, bao gm cc s kin c lin quan n vng i v cc s kin trao i thng ip. Mt tp cc cng c ha h tr ngi lp trnh khi debug v monitor. Chng c bit quan trng v phc tp trong cc h thng a lung, nhiu tin trnh, nhiu my v d nh mt ng dng JADE in hnh. H tr cc Ontology v cc ngn ng ni dung. Vic kim tra ontology v vic m ha ni dung c thc hin t ng bi nn tng, cc nh lp trnh c th la chn cc ngn ng ni dung v ontologies yu thch. Nhng ngi lp trnh cn c th ci t nhng ngn ng mi thc hin cc yu cu ng dng c th. Mt th vin ca cc giao thc tng tc: ci m hnh cc kiu mu c trng ca truyn thng nhm t c mt hoc nhiu mc ch. Cc skeleton c lp vi ng dng l mt tp cc lp Java c sn v c th c ty. Cc giao thc tng tc cng c th c th hin v c ci t nh mt tp cc my trng thi ng thi. S tch hp vi cc cng ngh khc nhau da trn Web bao gm cc cng ngh JSP, Servlet, applet v Web Service. Nn tng cng c th c cu hnh mt cch d dng xuyn qua tng la v s dng cc h thng NAT. H tr nn tng J2ME v mi trng khng dy. JADE run-time c th dng cho cc nn tng J2ME CDC v J2ME-LCDC thng qua mt tp khng i ca cc API che ph c 2 mi trng J2ME v J2SE. Mt giao din tin trnh bn trong (in-process) cho vic khi chy v iu khin platform v cc thnh phn phn tn ca n t mt ng dng bn ngoi.

Pht trin h a agent vi Phng php lun MaSE v JADE

166

Mt nhn c th m rng c thit k cho php nhng ngi lp trnh m rng cc chc nng ca nn tng thng qua vic b sung cc dch v phn tn mc nhn.

Nh vy, c th ni JADE c rt nhiu im mnh trong vic xy dng cc ng dng a agent phn tn da trn cc la chn thit k n gin ca s tru tng ha ca agent. Phn tip theo, chng ta s tm hiu phng php lun MaSE thy c s kt hp ca n vi JADE. 7.3 PHNG PHP LUN MaSE 7.3.1 Tng quan v cc pha trong MaSE Nhng kh khn trong vic xy dng cc h thng a agent phc tp: Xc nh nhim v m h thng phi thc hin. Xc nh thc th no trong h thng ng vai tr l agent. nh ngha cc tng tc gia cc agent. c t cc giao thc phc tp v y nh ngha tng tc gia h thng vi mi trng nh ngha nhng hnh vi lin quan n cc agent

Cc phng php lun c nhim v gip cho ngi thit k gii quyt cc vn ny v phi qun l c s phc tp ny, ngoi ra cn phi lm d dng tin trnh k ngh phn mm bng cch cung cp mt tin trnh nghim ngt cho php to ra cc m hnh miu t cc kha cnh khc nhau ca phn mm. Federico Bergenti et al. cc tc gi cun sch Methodologies and software engineering for agent systems The agent-oriented software engineering handbook a ra mt tng kt v cc giai on pht trin chung cho cc phn mm hng agent gm: Phn tch - Miu t vn (thu thp yu cu) - Xem xt role ca cc agent trong vic phn tch goal - Ngn ng c t s dng cc khi nim ca agent - Cng c h tr cho cc ngn ng Thit k - Kin trc phn mm - Cc thnh phn - Cc hnh vi mong i - Cch xy dng agent t u v s dng mi trng pht trin agent Ci t - xut mt s ngn ng hng agent, cc th vin, framework v cc cng c h tr. Test - Kim tra s tha mn yu cu ban u - Phn mm c li hay khng?

Pht trin h a agent vi Phng php lun MaSE v JADE

167

7.3.2 Phn tch v thit k vi MaSE Phng php lun ny tp trung vo cc giai on phn tch v thit k - hai trong s bn giai on pht trin phn mm hng agent chung. Giai on 1. Phn tch a. Xc nh cc Goal b. p dng cc Use case c. Lm mn cc Role 2. Thit k a. To cc lp Agent b. Xy dng cc phin giao tip c. Lp rp cc lp Agent d. Thit k h thng M hnh Goal Hierarchy Use cases, Sequence Diagrams Concurrent Tasks, Role Model Agent Class Diagrams Conversation Diagrams Agent Architecture Diagrams Deployment Diagrams

Tuy cc bc c biu din mt cch tun t, nhng trn thc t, phng php lun ny l mt phng php lp. Mc ch ca n l gip ngi thit k c th t do di chuyn gia cc bc v cc pha sao cho vi mi ln di chuyn thnh cng th c thm cc chi tit c b sung vo v cui cng, mt thit k h thng hon chnh v thng nht c to ra. Mt im mnh ca MaSE l kh nng lu vt nhng thay i trong sut ton b tin trnh. Mi i tng c to ra trong cc pha phn tch v thit k c th c lu vt tin hoc li qua nhiu bc khc nhau vi cc i tng c lin quan khc. 7.3.2.1 Phn tch Pha phn tch ca MaSE to ra mt tp cc role v task miu t cch m h thng tha mn cc mc ch (goal) ca n. Mc ch l mt s tru tng ca yu cu v t c bi cc role. Thng thng, mt h thng c mt mc ch ton cc v mt tp cc mc ch con. Goal c s dng trong MaSE v chng sao chp li iu m h thng ang c gng t c v c tnh n nh qua thi gian hn l chc nng (function), tin trnh (process) hoc cc cu trc thng tin. Role miu t mt thc th thc hin mt s chc nng trong h thng. Trong MaSE, mi role c trch nhim t c hoc gip t c goal. Cch tip cn pha phn tch ca MaSE l nh ngha cc goal ca h thng t tp cc yu cu v sau nh ngha cc role cn thit t c nhng goal . nh ngha role, MaSE s dng biu Use case v biu Sequence Diagram. Sau y l chi tit cc bc trong pha phn tch. Xc nh cc Goal Bc ny c nhim v chuyn i c t h thng thnh tp cc goal h thng mt cch c cu trc. Ng cnh ban u ca h thng (initial system context) l im bt u cho pha phn tch. y chnh l c t yu cu ca phn mm vi mt tp cc yu cu c nh ngha r rng. Hai bc con trong xc nh goal l: nh ngha goal v m hnh ha goal.
Pht trin h a agent vi Phng php lun MaSE v JADE 168

nh ngha goal Mc ch ca bc ny l sao chp li bn cht ca tp yu cu ban u. Qu trnh ny bt u bng vic trch rt cc kch bn (scenario) t c t ban u v miu t goal ca scenario . Goal l hin thn ca cc yu cu then cht ca h thng. Sau khi rt ra c cc goal, th tt c cc role v task c nh ngha cc bc sau phi h tr mt goal. Nu c role hoc task no khng h tr mt goal ang tn ti, th hoc l role v task b tha hoc l mt goal mi c tm ra. M hnh ha goal Bc tip theo l phi cu trc cc goal thnh biu Goal Hierarchy Diagram. y l mt biu c hng khng c chu trnh, trong cc node biu din cc goal. pht trin biu phn cp goal, ngi phn tch phi nghin cu cc goal v tm quan trng v mi lin quan gia chng. Mi goal c mt tm quan trng, mt mc chi tit khc nhau. u tin, ta phi xc nh goal ton cc ca h thng v t gc ca biu . Sau , chng ta phn r goal thnh cc goal con. Mi goal con phi h tr goal cha v nh ngha ci g cn phi lm hon thnh goal cha. Vic phn r goal ny khng ging vi phn r chc nng (function). Goal miu t ci g (what), cn function miu t lm th no (how). Vic phn r goal kt thc khi nu phn r tip ta s thu c function thay v goal. p dng cc Use case Bc ny l mt bc then cht chuyn cc goal thnh cc role v cc task tng ng vi mi role. Cc use case c v ra t yu cu h thng v miu t cc chui cc s kin m nhng s kin nh ngha hnh vi c mong ca h thng, chng l nhng v d v cch m h thng s c x. gip xc nh cc giao tip thc s trong mt h a agent, cc use case c chuyn thnh cc biu Sequence Diagram. Sequence Diagram trong MaSE cng ging vi Sequence Diagram trong UML ngoi tr vic chng c s dng minh ha chui cc s kin gia cc role v nh ngha cc giao tip gia cc agent s ng vai tr lm cc role . Cc role c nh ngha y s hnh thnh nn tp cc role c s dng trong bc tip theo, cn cc s kin cng c s dng nh ngha cc task v cc phin hi thoi (conversation). u tin, chng ta phi trch rt cc Use Case t ng cnh ban u ca h thng. Positive use case l use case miu t nhng g xy ra trong qu trnh vn hnh h thng bnh thng. Cn negative use case th nh ngha li hoc tht bi. Lm mn cc Role Mc ch ca bc ny l chuyn biu Goal Hierarchy Diagram v biu Sequence Diagram thnh cc role v cc task tng ng vi cc role . Cc role hnh thnh nn c s cho cc lp agent v tng ng vi cc goal h thng trong pha thit k. Thng thng vic chuyn i t goal sang role l 1 1, mi goal c nh x vi mt role. Tuy nhin, c nhng tnh hung m mt role c th c trch nhim vi nhiu goal. Nhn chung, giao din vi ti nguyn bn trong hoc ti nguyn bn ngoi i hi phi c mt role ring ng vai tr giao tip vi h thng. Chng ta thng coi con ngi l ti nguyn bn
Pht trin h a agent vi Phng php lun MaSE v JADE 169

ngoi. Trong MaSE, chng ta khng m hnh mt cch chnh xc tng tc ngi my, chng ta s to ra mt role c bit ng vi giao din ngi dng. Bng cch ny, chng ta c th nh ngha cc cch m mt ngi dng c th giao tip vi h thng m khng cn nh ngha chnh giao din ngi dng . Cc ti nguyn khc nh c s d liu, cc tp tin hoc cc h thng c t trc cng c th cn mt role ring ca n. nh ngha cc role c chp li trong m hnh Role Model, c cha thng tin v cc tng tc gia cc task ca role v phc tp hn cc m hnh role truyn thng nh ca Kendall. Sau khi to cc role v xc nh cc task, ngi pht trin phi chp li hnh vi ca role bng cch nh ngha chi tit tng task mt. Mt role c th gm nhiu task. Mi task thc thi trong lung iu khin ring nhng c th giao tip vi nhau. Cc task ng thi s c nh ngha trong m hnh Concurrent Task Models v c c t nh l my hu hn trng thi. 7.3.2.2 Thit k Pha ny gm 4 bc nh sau: To cc lp agent: gn role cho cc kiu agent c th Xy dng cc phin hi thoi: nh ngha cc phin hi thi gia cc agent Lp rp cc lp agent: thit k kin trc bn trong v cc qu trnh suy lun ca cc lp agent Thit k h thng: nh ngha s lng v v tr cc agent trong h thng c trin khai

To cc lp Agent Cc lp agent c to t cc role c nh ngha trong pha phn tch. Ti y, chng ta xy dng biu Agent Class Diagram minh ha t chc ca ton b h thng agent gm cc lp agent v cc phin hi thoi gia chng. u tin, chng ta gn cc role cho mi lp agent. Nu gn nhiu role th lp agent c th thc hin chng ng thi hoc tun t. Mi role phi c gn cho t nht cho mt lp agent. Ti y, chng ta cng xc nh cc phin hi thoi m cc agent khc nhau tham gia vo. V d, nu agent 1 ng vai tr role A v agent 2 ng vai tr role B th phi c mt phin giao tip gia agent 1 v agent 2. Biu Agent Class Diagram cng ging vi biu lp trong phn tch thit k hng i tng nhng c hai khc bit chnh l lp agent c nh ngha bi cc role m n ng ch khng phi bi thuc tnh v phng thc, v cc quan h gia cc lp agent c chp li di dng cc phin hi thoi. Xy dng cc phin hi thoi Mc ch ca bc ny l xc nh chi tit ca cc phin hi thoi da trn chi tit bn trong ca cc task ng thi. Mt phin hi thoi xc nh mt giao thc gia hai agent v c m hnh ha bng 2 biu Communication Class Diagram, mt cho bn khi to v mt cho bn p ng. Bn khi to bt u phin hi thoi bng cch gi i thng ip u tin. Khi agent p ng nhn c thng ip, n so snh vi cc phin hi thoi ang hot ng ca n. Nu ph
Pht trin h a agent vi Phng php lun MaSE v JADE 170

hp, n s dch chuyn phin hi thoi thch hp sang mt trng thi mi v thc hin cc hnh ng hoc cc hot ng c yu cu bi mt chuyn dch hoc mt trng thi mi. Nu khng, n gi s thng ip ny l mt yu cu mi v so snh n vi cc phin hi thoi m n c th tham gia vo cng vi agent ang gi thng ip. Nu thy ph hp, n s bt u phin hi thoi mi. Mt khi thng tin t biu Concurrent Task Model c tch hp vo cc phin hi thoi, ngi thit k phi m bo cc yu t khc nh tnh bn vng v kh nng chu li. Lp rp cc lp agent Chi tit cc lp agent c thit k bc ny. Bc ny gm hai bc nh sau: nh ngha kin trc ca agent v nh ngha cc thnh phn kin trc. Ngi thit k c th la chn thit k kin trc v cc thnh phn kin trc t u hoc t nhng ci c sn. Cc thnh phn ny gm thuc tnh, phng thc, v c th l kin trc con. y, chng ta xy dng biu Agent Architecture Diagram. Thit k h thng y l bc cui cng ca phng php lun MaSE v s dng biu Deployment Diagrams ch ra s lng, kiu v v tr ca cc agent trong h thng. y l bc n gin nht v phn ln cng vic c thc hin cc bc trc. Ngi thit k nn nh ngha vic trin khai h thng trc khi ci t v cc agent thng yu cu thng tin ca biu Deployment Diagram, nh hostnemt hoc a ch giao tip. Biu Deployment Diagram cng mang li c hi cho ngi thit k c th ha nhp h thng vi mi trng ti a ha sc mnh x l v rng bng thng sn c. 7.4 H THNG QUN L HI THO 7.4.1 Miu t h thng Cc tc gi c th gi cc bi bo ti h thng c s d liu cc bi bo hi tho. Trong qu trnh gi, tc gi phi c thng bo li l bi bo c nhn hay cha v nhn c s hiu ca bi bo. Sau mt thi gian quy nh, bi bo s c phn phi ti cc thnh vin ban chng trnh nhng ngi c trch nhim c cc bi bo, hoc lin h vi cc phn bin v ngh h nhn c nhn xt mt s bi bo. Ngi c trch nhim nhn xt cc bi bo c th ly bi bo trc tip t c s d liu v gi bi nhn xt ca h ti im thu thp trung tm. Sau khi hon tt vic nhn xt, mt quyt nh c a ra l chp nhn hay loi b bi bo. Sau khi ra quyt nh, tc gi c thng bo v quyt nh v c yu cu a ra phin bn cui cng ca bi bo nu n c chp nhn. Nhng ngi tham gia vo h thng ny gm c: tc gi bi bo (author), ngi nhn xt (reviewer), ngi ra quyt nh (decision maker), ngi thu thp cc nhn xt (review collector).
Pht trin h a agent vi Phng php lun MaSE v JADE 171

7.4.2 Phn tch 7.4.2.1 Xc nh cc Goal V d v cc goal c rt ra t c t yu cu: Thu thp bi bo Phn phi bi bo Gn bi bo cho thnh vin PC Gn bi bo cho phn bin Gi bi nhn xt Thu thp bi nhn xt Chp nhn/hy b bi bo Thng bo cho tc gi

Biu phn cp goal (Goal Hierarchy Diagram)

Hnh 7.1: Biu phn cp goal 7.4.2.2 Lm mn cc Role Tp cc role tng ng vi cc goal trn: PaperDB (1.1.1, 1.1.2, 1.1.2.1) Partitioner (1.2.1) Assigner (1.2.2) Reviewer (1.3.1) Collector (1.4) DecisionMaker (1.5, 1.5.1)

y, cc goal 1, 1.1, 1.2 v 1.3 khng c nh x thnh cc role v chng l cc goal c th chia nh c. PaperDB role c gn cho tt c cc goal tng ng vi goal 1.1, l 1.1.1, 1.1.2 v 1.1.2.1. DecisionMaker role c gn cho c 1.5 v 1.5.1. Cc goal c lin quan thng c kt hp vi mt role. V d, thu thp bi bo, phn phi bi bo v phn phi tm tt bi bo c kt hp vi PaperDB role v chng c lin quan rt gn vi nhau v i hi cng mt kiu k thut truy cp. Role Model

Pht trin h a agent vi Phng php lun MaSE v JADE

172

Hnh 7.2: Biu Role Model PaperDB role chu trch nhim t c goal 1.1.1, 1.1.2 v 1.1.2.1. Do , hon thnh goal ny, PaperDB role phi c kh nng thu thp cc bi bo, phn phi bi bo v phn phi tm tt bi bo. Do , chng ta to ra ba task c lin quan ln nhau: Collect Papers, Distrib Papers v GetAbstracts. Cc role khng nn chia s hoc trng lp vi cc task. Cc task c chia s nn c thay th bng mt role ring. Role ny c th c kt hp thnh cc lp agent trong pha thit k. 7.4.3 Thit k 7.4.3.1 To cc lp agent Agent Class Diagram

Hnh 7.3: Biu Agent Class Diagram Biu lp agent gm tn lp v tp cc role m agent ng. Cc mi tn xc nh cc phin hi thoi v c hng t agent khi to n agent p ng. y, PCChair ng cc role: Collector, Partitioner, Decision Maker, cn PCMember ng cc vai Assigner v Reviewer. Ngoi Author cn c mt agent khc l DB cung cp giao din vi c s d liu cha cc bi bo, tm tt bi bo v thng tin v tc gi. 7.4.3.2 Xy dng cc phin hi thoi Communication Class Diagram Inform author: Bn khi to l PCChair, bn p ng l Author.

Pht trin h a agent vi Phng php lun MaSE v JADE

173

Hnh 7.4: Biu Communication Class Diagram cho PCChair

Hnh 7.5: Biu Communication Class Diagram cho Author PCChair agent gi mt thng ip n Author agent thng bo v vic chp nhn bi bo. Sau , PCChair chuyn sang trng thi ch. Nu Author vn tham gia vo bui hi tho, n gi mt thng ip chp nhn v hon tt phin hi thoi. Nu Author khng th tham gia hi tho, n tr v thng ip t chi. Sau khi nhn c thng ip t chi, PCChair thc hin hot ng updatePapers cp nht danh sch nhng ngi tham d hi tho. 7.4.3.3 Lp rp cc lp agent Agent Architecture Diagram PCChair agent c 3 thnh phn v c ci t theo kin trc ng ng. Thnh phn Partitioner nhn cc phn tm tt bi bo v s dng phng thc partitionPapers chia danh sch cc bi tm tt thnh cc tp con da trn ni dung. Sau , Partitioner gi phng thc collectReviews ca thnh phn Collector, thnh phn ny c nhim v ch v thu thp tt c cc bi nhn xt. Sau khi tt c cc bi bo c nhn xt, thnh phn Collector gi phng thc selectPapers ca thnh phn DecisionMaker, thnh phn ny c nhim v la chn cc bi bo tt nht v thng bo cho tc gi.

Pht trin h a agent vi Phng php lun MaSE v JADE

174

Hnh 7.6: Biu Agent Architecture Diagram 7.5 CI T H THNG Chy DB agent:

Hnh 7.7: Giao din DBAgent Chy Author agent:

Pht trin h a agent vi Phng php lun MaSE v JADE

175

Hnh 7.8: Giao din Author agent Chy PCMember Agent: u tin phi ng nhp (nu cha c ti khon, th to mi ti khon bng cch click nt Register)

Hnh 7.9: Giao din ng nhp ca PCMember agent


Pht trin h a agent vi Phng php lun MaSE v JADE 176

Sau khi ng nhp thnh cng c th chn cc chc nng: Assignment: gn bi bo cho ngi nhn xt Review Paper: vit nhn xt cho bi bo Make Decision: quyt nh chp nhn hay t chi bi bo

Hnh 7.10: Giao din ca chc nng gn bi bo c nhn xt

Pht trin h a agent vi Phng php lun MaSE v JADE

177

Hnh 7.11: Giao din ca chc nng nhn xt bi bo

Pht trin h a agent vi Phng php lun MaSE v JADE

178

TI LIU THAM KHO


[1] [2] [3] [4] [5] Fabio Bellifemine et al. Developing Multi-Agent Systems with JADE, John Wiley Sons, 2007 W. Branner et al. Intelligent Software Agents: Foundations and Application, Springer, 1998. S. A. DeLoach, Analysis and Design using MaSE and agentTool 12th Midwest Artificial Intelligence and Cognitive Science Conference (MAICS 2001), Ohio, March 31-April 1, 2001 M. Wooldridge, An Introduction to Multiagent Systems, Published in John Wiley & Sons, 2009. Pedro Cuesta-Morales et al., Developing Multi-Agent System Using MaSE and JADE, 2004

Pht trin h a agent vi Phng php lun MaSE v JADE

179

You might also like