Você está na página 1de 52

FAPESP

Orientaes para Construo de Ferramentas


(Proposta)
para o TIDIA Ae 2.0
erso !.0
Data" #!$0%$200&
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
'ist(ri)o de *e+ises
Data Verso Descrio Autor
0.1.0 Verso ini#ia$ do do#umento Todos
0.2.0 %e&inamento do es'ue$eto Tia(o
0.3.0 Correes de a#ordo #om a
responsa)i$idade dos (rupos
%omeo
0.*.0 %eestruturao de t+pi#os ,andro- .dson e Tia(o
2"0!200" 0./.0 Criao da parte de in&ra-estrutura Tia(o- C0ssio- 1enri'ue e
2os3 Au(usto
2!0!200" 0.4.0 Do#umento no &ormato o&i#ia$ do pro5eto e
reunio de outros do#umentos par#iais.
%omeo
260!200" 0.".0 Adio de #onte7do dos t+pi#os 3 e /
8Camada de 9ersist:n#ia e Inte(rao de
Ferramentas no Compat;<eis #om o ,a=ai>
Tia(o
310!200" 0.!.0 Adio de item so)re inte(rao de uma
&erramenta ,a=ai #om #omponentes Tidia.
C0ssio- 1enri'ue e 2os3
Au(usto
310!200" 0.6.0 %e<iso (ramati#a$- re<iso de &ormatao-
#riao de introduo e remoo de partes
no uti$i?adas e no pertinentes- #omo a
#on#$uso do do#umento.
%omeo
310!200" 1.0 %e<iso &ina$- promo<endo o do#umento da
#ate(oria de proposta para (uia.
.duardo Terui@a
Con&iden#ia$ FA9.,9- 90(ina 2
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
Ta,e-a de Conte.do
1.Introduo /
1.1 9rop+sito /
1.2 .s#opo /
2.Con&i(urao de Am)iente 4
1.1 2VA 4
1.2 Con&i(urando A@,BC *.1: 4
1.3 Con&i(urao do Aa<en "
1.* Insta$ando o ,u)<ersion !
1./ Tom#at !
1.4 Insta$ao do Conne#tor2 6
1." Dsando o ,VE para &a?er o doFn$oad do ,AGAI H#a&e )ran#IJ 6
1.! Con&i(urando o ar'ui<o sa=ai.properties 10
1.6 Dsando o Aa<en para o dep$o@ do ,a=ai 11
1.10 Insta$ando o .#$ipse 3.2K 8<erso est0<e$> 12
1.10.1 Adi#ionando o .#$ipse Le) Too$s 9ro5e#t 8LT9> 13
1.10.2 Adi#ionando o ,u)#$ipse ao .#$ipse 1*
1.10.3 Adi#ionando o ,prin(ID. ao .#$ipse 1*
1.10.* Importando o #+di(o-&onte do ,a=ai dentro do .#$ipse 1/
3.Camada de 9ersist:n#ia 14
1.11 Formas de persist:n#ia 1"
1.12 Dsando o 1i)ernate 1"
1.13 Dsando o pa#ote Meneri#Dao 1!
1.1* Construindo uma ap$i#ao 1!
*.FrameFor= do ,AGAI - ,er<ios 1!
1.1/ Con#eituao de ,er<ios- Componentes- Ferramentas e FrameFor= no ,a=ai 1!
1.14 Desen<o$<endo Ferramentas e Componentes ,a=ai 16
1.1" ,er<ios Dispon;<eis pe$o ,a=ai 21
1.1! Fun#tiona$ ,er<i#es 23
1.1!.1 Dni<ersa$ Components 23
1.1!.1.1 ComponentAana(er ........................................................................................................................... 23
1.1!.1.1.1 ComponentsCoader ..................................................................................................................... 24
1.1!.1.1.2 ConteNtCoaderCistener ............................................................................................................... 24
1.1!.1.1.3 ,er<erCon&i(urationCistener ........................................................................................................ 24
1.1!.1.2 Co$$a)orati<e Too$s ............................................................................................................................ 2"
1.1!.1.2.1 Too$Aana(er ............................................................................................................................... 2"
1.1!.1.2.2 A#ti<eToo$Aana(er ................................................................................................................... 2!
1.1!.1.2.3 ,essionAana(er ......................................................................................................................... 2!
1.1!.1.2.* Too$ ............................................................................................................................................. 26
1.1!.1.2./ A#ti<eToo$ .................................................................................................................................. 30
1.1!.1.2.4 ,ession ........................................................................................................................................ 30
1.1!.1.2." ConteNt,ession ............................................................................................................................. 31
1.1!.1.2.! Too$,ession .................................................................................................................................. 31
1.1!.1.2.6 ,essionOindin(Too$ ..................................................................................................................... 32
1.1!.1.2.10 ,essionOindin(Cistener ............................................................................................................. 32
1.1!.1.2.11 %e'uestFi$ter .............................................................................................................................. 32
Con&iden#ia$ FA9.,9- 90(ina 3
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
1.1!.1.3 Data)ase ............................................................................................................................................. 32
1.1!.1.3.1 ,BC,er<i#e .................................................................................................................................. 32
1.1!.1.3.2 ,BC%eader ................................................................................................................................... 3*
1.1!.1.* ,er<er 9usI ......................................................................................................................................... 3/
1.1!.1.*.1 Courier,er<i#e ............................................................................................................................. 3/
1.1!.1.*.2 De$i<er@ ........................................................................................................................................ 3/
1.1!.1.*.3 O)ser<in( Courier ........................................................................................................................ 3/
1.1!.1./ .mai$ Out ............................................................................................................................................ 34
1.1!.1./.1 Di(est ........................................................................................................................................... 34
1.1!.1./.2 Di(estAessa(e ............................................................................................................................. 34
1.1!.1./.3 Di(est,er<i#e ............................................................................................................................... 34
1.1!.1./.* .mai$,er<i#e ................................................................................................................................ 3"
1.1!.1.4 Aemor@ Ca#Ie .................................................................................................................................... 3!
1.1!.1.4.1 Ca#Ie ............................................................................................................................................ 3!
1.1!.1.4.2 Ca#Ier .......................................................................................................................................... 3!
1.1!.1.4.3 Aemor@,er<i#e ............................................................................................................................ 36
1.1!.1." Dti$ities ................................................................................................................................................ 36
1.1!.1.".1 .N#eptions .................................................................................................................................... 36
1.1!.1.".2 Id Aana(er ................................................................................................................................... 36
1.1!.1.".3 TIreadCo#a$Aana(er ................................................................................................................... 36
1.1!.1.".* Time,er<i#e ................................................................................................................................. *0
1.1!.1."./ Co(Con&i(urationAana(er ........................................................................................................... *1
1.1!.2 In&ormationa$ ,er<i#es *1
/.Inte(rao de &erramentas no #ompat;<eis #om o ,a=ai *1
1.16 Dep$o@ do ,a=ai no 2)oss *2
1.20 Inte(rao de uma &erramenta ,a=ai #om #omponentes do Tidia-Ae **
4.Tra)a$Ios Futuros /2
".%e&er:n#ias /2
Con&iden#ia$ FA9.,9- 90(ina *
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
Orientaes para Construo de Ferramentas
(Proposta) para o TIDIA Ae 2.0
!. Introduo
!.!Prop(sito
O prop+sito deste do#umento 3 orientar desen<o$<edores de so&tFare na tare&a de #onstruo de no<as
&erramentas para o sistema Tidia-Ae 2.0- no<a <erso do am)iente 'ue ser0 desen<o$<ida na Fase II do
pro5eto e #ompat;<e$ #om as inter&a#es de ser<io do ,AGAI 2.*.
As orientaes #onstantes deste do#umento &oram #ompi$adas de di<ersas &ontes do pr+prio pro5eto ,AGAI
e reinterpretadas e me$Ioradas pe$a e'uipe de pro5eto TIDIA Ae.
!.2Es)opo
.ste do#umento #ontemp$a:
Con&i(urao e preparao de um am)iente de desen<o$<imento: P indi#ado passo a passo o 'ue
de<e ser &eito para preparar uma ID. para o desen<o$<imento de no<as &erramentasQ
Deta$Iamento de ser<ios: ,er<ios de interesse aos #onstrutores de &erramentas so deta$Iados
#om suas inter&a#es e des#rio dos m3todos o&ere#idos.
Con&iden#ia$ FA9.,9- 90(ina /
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
2. Con/i0urao de Am,iente
!.!12
Veri&i'ue se a <erso da 2VA insta$ada 3 a 1./:
R5a<a -<ersion
5a<a <ersion S1./.0T11S
,e &or di&erente- desinsta$e a <erso #orrente- #aso 50 ti<er a$(uma- e )aiNe a <erso #orreta:
Ittp:5a<a.sun.#om5a<asedoFn$oadsindeNT5d=/.5sp
O)s: 9ara os usu0rios de LindoFs re#omenda-se a insta$ao em diret+rios sem espaos.
.m se(uida- 3 ne#ess0rio #on&i(urar a$(umas <ari0<eis de am)iente. A primeira 3 a 2AVAT1OA.:
1. LindoFs: 2AVAT1OA.UJ#:VdiretorioTinsta$a#aoV5d=1./.0TNNJ
2. CinuN: 2AVAT1OA.U HdiretorioTinsta$a#ao5a<aJ
Adi#ione H2AVAT1OA.)inJ ao 9atI do sistema.
A#res#ente a <ari0<e$ de am)iente 2AVATO9T, para aumentar a mem+ria dispon;<e$ para o ,a=ai:
2AVATO9T,UW-ser<er -XX:KDse9ara$$e$MC -XmN"4!m -XX: AaN9erm,i?eU12!m
-D5a<a.aFt.Iead$essUtrueW
O)s: .ssas #on&i(uraes so para desen<o$<imento- para mais in&ormaes <isite:
Ittp:)u(s.sa=aipro5e#t.or(#on&$uen#edisp$a@OOOT,a=aiK2.2Kde<e$operK2VAKtunin(
!.2Con/i0urando 23S45 6.!"
Faa o doFn$oad do A@,BC:
Ittp:de<.m@s'$.#omdoFn$oadsm@s'$*.1.Itm$
O)s.: A <erso /.0.N tam)3m &un#iona- se esta <erso esti<er insta$ada- no 3 ne#ess0rio rea$i?ar um
doFn(rade.
Insta$e #om a #on&i(urao ,tandard.
Opte pe$a insta$ao do ser<io no LindoFs
,e$e#ione a ini#ia$i?ao autom0ti#a 8ou ento ini#ie o A@,BC antes de tentar rodar o ,a=ai>.
In#$ua o diret+rio )in no 9AT1.
Eo use uma #onta anYnima.
Con&iden#ia$ FA9.,9- 90(ina 4
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
Co$o'ue o passFord de root #omo Sm@s'$pFd1S.
Con&i(ure o )an#o de dados para o ,a=ai
%ode o se(uinte #omando no prompt:
mysql -u root -p
Digite a senha do root, e em seguida rode o script abaixo:
create database sakai default character set utf8;
grant all on sakai.* to sakaiuser@'localhost' identified by
'sakaipassword';
grant all on sakai.* to sakaiuser@'127.0.0.1' identified by
'sakaipassword';
quit
8Op#iona$> Faa o doFn$oad do Buer@ OroFser.

Ittp:de<.m@s'$.#omdoFn$oads'uer@-)roFser1.1.Itm$
!.#Con/i0urao do 2a+en
Faa o doFn$oad do Aa<en 1.0.2.
O)s.: Testes #om <erses superiores no &oram )em su#edidos- portanto a#onse$Iamos usar essa <erso.
Ittp:ma<en.apa#Ie.or(ma<en-1.NstartdoFn$oad.Itm$
Des#ompa#te o ar'ui<o no diret+rio de sua pre&er:n#ia.
,ete as <ari0<eis de am)iente:
MAVEN_!ME"caminho_para_ma#en
MAVEN_!$%&"'-(ms)*+m -(mx*,)m -((:$erm&i-e"+.m -((:Max$erm&i-e",)/m'
Adi#ione ao 9AT1:
0MAVEN_!ME1bin
Con&iden#ia$ FA9.,9- 90(ina "
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
!.6Insta-ando o Su,+ersion
Insta$e o su)<ersion de a#ordo #om o site:
Ittp:su)<ersion.ti(ris.or(pro5e#tTpa#=a(es.Itm$
De pre&er:n#ia ao )in0rio- mas se )aiNar o &onte- re#ompi$e-o #om as opes:
--2ith-ssl e Z2ith-libs3
Con&i(ure a <ari0<e$ de am)iente:
,DOV.%,IOET1OA.U1diretorio_instalacao1sub#ersion-,3)34
Adi#ione ao 9AT1:
0&56VE7&8!N_!ME1bin
!.7Tom)at
Faa o doFn$oad do Tom#at /./ 8no m0Nimo a <erso /./.2/- a <erso /./.24 e a <erso 4 no &un#ionam>:
Ittp:tom#at.apa#Ie.or(doFn$oad-//.#(i
O)s: Aos usu0rios do LindoFs:
De<em #erti&i#ar-se 'ue no eNistem espaos no patI para o Tom#at.
De<em )aiNar o ar'ui<o ?ipado ao in<3s de insta$ar o ser<io. Isto &a#i$ita a #on&i(urao e
<isua$i?ao dos $o(s.
Aodi&i'ue o ar'ui<o con91ser#er3xml para a#eitar #ara#teres uni<ersais:
Adi#ione 578Encoding":5%;-/: ao e$emento Conne#tor:
<=onnector port":/>/>: 578Encoding":5%;-/: 333
,ete a <ari0<e$ de am)iente:
=A%A?8NA_!ME"caminho_para_tomcat
Adi#ione ao 9AT1:
0=A%A?8NA_!ME1bin
Con&iden#ia$ FA9.,9- 90(ina !
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
9ara Aa#CinuN #on&i(ure o ar'ui<o catalina3sh no diret+rio tom#at)in #om:
eNport 2AVATO9T,US-ser<er -XX:KDse9ara$$e$MC -XmN"4!m -XX:AaN9erm,i?eU140m
-D5a<a.aFt.Iead$essUtrue
9ara LindoFs #rie o ar'ui<o seten<.)at- tam)3m no diret+rio tom#at)in- e #o$o'ue ne$e:
set 2AVATO9T,U-ser<er -XX:KDse9ara$$e$MC -XmN"4!m -XX:AaN9erm,i?eU140m
-D5a<a.aFt.Iead$essUtrue
Di#as para os usu0rios de CinuN:
Eo D)untu- insta$ar o tom#at a partir de doFn$oad da p0(ina do &a)ri#ante e no <ia apt-(et
8s@napti#>- pois a insta$ao se tornar0 mais &0#i$Q
Dar permisses de es#rita ao usu0rio donoeNe#utor do pro#esso do Tom#at nas pastas $o(s-
Fe)apps- temp e For= 'ue esto a)aiNo de CATACIEAT1OA.Q
Criar a pasta #omponents so) a pasta prin#ipa$ do Tom#at 8CATACIEAT1OA.> e dar permisso
de es#rita ao usu0rio dono do pro#esso.
!.8Insta-ao do Conne)tor$1
9ara &a?er a #oneNo do sa=ai #om o ser<idor A@,BC3 ne#ess0rio um dri<er 2DOC. As <erses 'ue podem
ser uti$i?adas do Conne#tor2 dependem da <erso do A@,BC insta$ada:
Caso a <erso do A@,BC insta$ada se5a a *.1- a <erso do Conne#tor2 'ue de<e ser insta$ada de<e ser a
3.1.12K e pode ser en#ontrada em:
Ittp:de<.m@s'$.#omdoFn$oads#onne#tor53.1.Itm$
Caso a <erso do m@,BC es#o$Iida para a insta$ao &or a /.0.N a <erso do Conne#tor2 de<e ser a /.0.*K e
pode ser en#ontrada em:
Ittp:de<.m@s'$.#omdoFn$oads#onne#tor5/.0.Itm$
Ap+s o doFn$oad do dri<er apropriado eNtraia o ar'ui<o Hm@s'$-#onne#tor-5a<a-[<ersion\-)in.5arJ para a
pasta 0=A%A?8NA_!ME1commom1lib 8RCATACIEAT1OA. 3 o diret+rio rai? do Tom#at>.
!.&9sando o S: para /a;er o do<n-oad do SA=AI >)a/e ,ran)?@
V0 para um diret+rio tempor0rio e ap$i'ue o #omando s<n:
#Ie#=out Ittps:sour#e.sa=aipro5e#t.or(s<n#a&e)ran#Ies2-*-N
O)s.: Apenas testado em $inuN.
Con&iden#ia$ FA9.,9- 90(ina 6
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
Caso 'ueria pro#urar uma <erso di&erente da <erso 2-*-N <isite:
Ittps:sour#e.sa=aipro5e#t.or(s<n#a&e
O pr+prio pro(rama do su)<ersion #riar0 um diret+rio #om o nome da <erso- #aso 'ueira mudar o nome do
diret+rio- apenas insira o nome no &ina$ da ur$ #omo em:
#Ie#=out Ittps:sour#e.sa=aipro5e#t.or(s<n#a&e)ran#Ies2-*-N diretorioTdese5ado
.sse diret+rio #riado ser0 #onsiderado o diret+rio rai? do sa=ai e ser0 re&eren#iado #omo sakai-src por este
do#umento.
!.%Con/i0urando o arAui+o saBai.properties
Crie uma pasta dentro do diret+rio rai? do tom#at 80=A%A?8NA_!ME> #om o nome Hsa=aiJ. Dentro desta
pasta #opie o sa=ai.properties #ontido no sa@ai-src1re9erence1docs1 8diret+rio do &onte do ,a=ai>3 .ste ar'ui<o 50 <em
pr3-#on&i(urado por de&au$t para usar o 1,BCDO. Vamos a$ter0-$o para usar o A@,BC.
O)s.: 9ara$e$amente o ar'ui<o sa=ai.properties pode ser en#ontrado em:
Ittps:sour#e.sa=aipro5e#t.or(s<nre&eren#etrun=do#ssa=ai.properties
Comente as se(uintes $inIas do ser<idor 1,BCDO #omo a)aiNo:
]] 1,BCDO settin(s - on )@ de&au$t
]<endor^or(.sa=aipro5e#t.ser<i#e.&rameFor=.s'$.,'$,er<i#eUIs'$d)
]dri<erC$assEame^5a<aN.s'$.OaseData,our#eUor(.Is'$d).5d)#Dri<er
]Ii)ernate.dia$e#tUor(.Ii)ernate.dia$e#t.1,BCDia$e#t
]<a$idationBuer@^5a<aN.s'$.OaseData,our#eUse$e#t 1 &rom ,_,T.ATD,.%,
] tFo Is'$d) stora(e options: &irst &or in-memor@ 8no persisten#e )etFeen runs>- se#ond &or dis= )ased
]ur$^5a<aN.s'$.OaseData,our#eU5d)#:Is'$d):.
]ur$^5a<aN.s'$.OaseData,our#eU5d)#:Is'$d):R`sa=ai.Iomead)sa=ai.d)
Des#omente as se(uintes $inIas:
]] A@,BC settin(s - ma=e sure to a$ter as appropriate
<endor^or(.sa=aipro5e#t.d).api.,'$,er<i#eUm@s'$
dri<erC$assEame^5a<aN.s'$.OaseData,our#eU#om.m@s'$.5d)#.Dri<er
Ii)ernate.dia$e#tUor(.Ii)ernate.dia$e#t.A@,BCDia$e#t
ur$^5a<aN.s'$.OaseData,our#eU5d)#:m@s'$:12".0.0.1:3304sa=aib
useDni#odeUtruec#Iara#ter.n#odin(UDTF-!
<a$idationBuer@^5a<aN.s'$.OaseData,our#eUse$e#t 1 &rom DDAC
de&au$tTransa#tionIso$ation,trin(^5a<aN.s'$.OaseData,our#eUT%AE,ACTIOET%.ADTCOAAITT
.D
O)s.: #aso o ser<idor no este5a rodando $o#a$mente mude o 8$ de 12".0.0.1 para o 8$ #orreto do ser<idor
#om o ,MOD.
Con&iden#ia$ FA9.,9- 90(ina 10
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
.dite as $inIas a)aiNo para #on&i(urar o usu0rio e senIa do ,MOD a ser uti$i?ado:
] TIe username and passFord. TIe de&au$ts are &or tIe out-o&-tIe-)oN 1,BCDO. CIan(e to mat#I
@our setup.
username^5a<aN.s'$.OaseData,our#eUsa=aiuser
passFord^5a<aN.s'$.OaseData,our#eUsa=aipassFord
O)s.: O usu0rio e a senIa a#ima so as mesmas #riadas para o ,a=ai no t+pi#o HCon&i(urando A@,BC *.1J.
A primeira <e? 'ue o sa=ai &or ini#iado o atri)uto a)aiNo de<e en#ontrar-se des#omentado:
auto.dd$Utrue
.$e 3 um 9lag de #riao de ta)e$as e demais #on&i(uraes ini#iais do )an#o. Ap+s a primeira ini#ia$i?ao
do sistema- #omente o mesmo #omando.
!.C9sando o 2a+en para o dep-o3 do SaBai

O ar'ui<o build3properties do Aa<en de<e ser #riado para a #ompi$ao e dep$o@ do ,a=ai. .$e de<e ser
#riado no diret+rio Iome do seu usu0rio.
Eo FindoFs e$e de<e ser #riado no diret+rio:
#:VDo#uments and ,ettin(sVEOA.TD,DA%IOV)uid.properties
Eo $inuN:
IomeEOA.TD,DA%IO)ui$d.properties
Ap+s a #riao do )ui$d.properties- insira as se(uintes $inIas de #+di(o:
ma<en.repo.remote U Ittp:sour#e.sa=aipro5e#t.or(ma<en
ma<en.tom#at.Iome U DiretorioTdeTinsta$a#aoTtom#at
,e um proN@ esti<er sendo uti$i?ado a#res#ente os se(uintes #omandos:
ma<en.proN@.Iost U FFF.@our.proN@.Iost
ma<en.proN@.port U !0
ma<en.proN@.username U @ourTusername
ma<en.proN@.passFord U @ourTpassFord
ma<en.proN@.non9roN@1osts U $o#a$Iost

A)ra um prompt de #omandos 8.N.: #md no FindoFs ou )asI no $inuN>- <0 at3 o diret+rio rai? do sa=ai
8sa=ai-sr#> e eNe#ute o #omando:
ma<en )$d dp$
Con&iden#ia$ FA9.,9- 90(ina 11
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
A primeira <e? o ma<en demorar0 a$(o em torno de / a 10 minutos para &a?er o doFn$oad de todos os
ar'ui<os ne#ess0rios. Veri&i'ue 'ue o #omando terminou #om su#esso
Ini#ie o tom#at #om o #omando:
RCATACIEAT1OA.)instartup
A(uarde at3 o tom#at ini#iar 8pode $e<ar a$(uns minutos>.
A)ra um )roFser e entre no endereo a)aiNo para <er se o tom#at est0 eNe#utando:
Ittp:$o#a$Iost:!0!0
A(ora entre no endereo a)aiNo para <er se o ,a=ai est0 eNe#utando:
Ittp:$o#a$Iost:!0!0porta$
,e tudo deu #erto- &aa o $o(in no ,a=ai #om o usu0rio: admin- senIa: admin.
!.!0Insta-ando o E)-ipse #.2D (+erso estE+e-)
Faa o doFn$oad da mais no<a <erso est0<e$ do .#$ipse em:
Ittp:FFF.e#$ipse.or(
O)s.: ,e <o#: ti<er a$(uma <erso do .#$ipse 3.1.N 50 insta$ada 3 a#onse$I0<e$ )aiNar uma <erso mais atua$
do .#$ipse do 'ue atua$i?0-$a.
O)s.: ,e <o#: ainda no )aiNou o .#$ipse- 3 a#onse$I0<e$ )aiNar o Le)Too$s 9$at&orm: A$$-in-one pa#=a(e
para o .#$ipse 3.2 'ue in#$ui o .#$ipse e todos os pa#otes de &erramentas Fe) 8Fe)too$s> ne#ess0rios 83 )em mais
r0pido e &0#i$ do 'ue )aiNa-$os separadamente>. ,e &i?er isso- <o#: pode pu$ar o passo de insta$ao das Le)Too$s
8passo 2.10.1>.
.Ntraia o ar'ui<o 'ue &oi )aiNado no diret+rio opt.
Dsu0rios do LindoFs podem eNtrair no diret+rio #:V.
Dsu0rios do Aa# de<em usar o insta$ador e #o$o#a-$o em App$i#ations.
.Ne#ute o .#$ipse para <eri&i#ar se est0 &un#ionando 8 opte#$ipsee#$ipse >.
Dsu0rios do LindoFs: #:Ve#$ipseVe#$ipse.eNe para eNe#utar o e#$ipse.
o Eota: se no &un#ionar pode ser a$(um pro)$ema #om a insta$ao do 5a<a.
A #on&i(urao padro de mem+ria do .#$ipse 3 muito )aiNa para a(dentar o n7mero de ap$i#aes Fe) da
insta$ao #omp$eta do ,a=ai.
3. Fe#Ie o .#$ipse #aso e$e este5a eNe#utando.
*. .dite o ar'ui<o e#$ipse.ini no diret+rio onde <o#: eNtraiuinsta$ou o .#$ipse.
/. A$tere as #on&i(uraes onde est0:
Con&iden#ia$ FA9.,9- 90(ina 12
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
-<mar(s
-Xms*0m
-XmN2/4m
9ara:
-<mar(s
-Xms2/4m
-XmN"4!m
Eo LindoFs 3 a#onse$I0<e$ editar esse ar'ui<o usando o Lord9ad ao in<3s do )$o#o de notas.
Dsu0rios do Aa# de<ero pro#eder #om a$(uns passos eNtras para editar o e#$ipse.ini:
1. D: um Contro$-#$i#= no ;#one do .#$ipse App$i#ation e se$e#ione ,IoF 9a#=a(e Contents.
2. D: dois #$i'ues em Contents &o$derD.
3. D: dois #$i'ues na pasta Aa#O,- o ar'ui<o e#$ipse.ini de<e estar a$i.
*. CaminIo do ar'ui<o: e#$ipse.#$ipse.appContentsAa#O,e#$ipse.ini
/. A5uste a 2VA.
O <a$or padro da 2VA ser0 a'ue$e da 2%.- mas 3 a#onse$I0<e$ mud0-$o para o da 2DG.
1. Ini#ie o .#$ipse se e$e no esti<er eNe#utando.
2. ,e$e#ione LindoF -\ 9re&eren#es -\ 2a<a -\ Insta$$ed 2%.s.
3. ,e$e#ione a 2%. 'ue est0 insta$ada atua$mente.
*. C$i'ue no )oto .dit.
/. C$i'ue em OroFse e na<e(ue at3 o diret+rio rai? onde o 5a<a est0 insta$ado 8por eNemp$o-
opt5a<a>.
4. C$i'ue em OG para sa$<ar e em se(uida OG para &ina$i?ar.
!.!0.!Adi)ionando o E)-ipse Fe, Too-s ProGe)t (FTP)
O LT9 pode ser en#ontrado em:
Ittp:FFF.e#$ipse.or(Fe)too$s
Insta$ao manua$ 8mais r0pida>:
1. Ittp:FFF.e#$ipse.or(Fe)too$s
2. Faa o DoFn$oad do LT9 1./K para seu des=top.
3. Fe#Ie o .#$ipse.
*. .Ntraia o pa#ote )aiNado no diret+rio de insta$ao do .#$ipse.
/. Ini#ie o .#$ipse.
Insta$ao usando o atua$i?ador do .#$ipse 8.#$ipse updater> 8mais &0#i$>:
1. Ini#ie o e#$ipse.
2. ,e$e#ione 1e$p -\ ,o&tFare Dpdates -\ Find and Insta$$.
3. ,e$e#ione ,ear#I &or neF &eatures to insta$$- #$i'ue em EeNt.
*. .s#o$Ia .#$ipse.or( Dpdate ,ite e #$i'ue em FinisI.
Con&iden#ia$ FA9.,9- 90(ina 13
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
/. ,e$e#ione LT9 0." 8ou uma <erso mais no<a- se Iou<er>.
4. Eota: ,e isso no esti<er na $ista- use a se(uinte D%C de update:
Ittp:doFn$oad.e#$ipse.or(Fe)too$supdates
". C$i'ue em ,e$e#t %e'uired.
!. C$i'ue em EeNt e si(a as instrues de insta$ao.
6. A#eite os termos e #$i'ue em FinisI.
10. C$i'ue em Insta$$ A$$.
11. %eini#ie a ap$i#ao #aso isso se5a re'uerido.
Le)Too$s 9$at&orm: A$$-in-one 8da maneira mais r0pida>:
1. Isso s+ de<e ser usado se <o#: ainda no ti<er o .#$ipse insta$ado.
2. V0 em: Ittp:FFF.e#$ipse.or(Fe)too$s
3. C$i'ue em doFn$oads do $ado direito da p0(ina.
*. C$i'ue na <erso mais atua$ do )ui$d 1./.
/. Eota: Aparentemente no I0 um pa#ote a$$-in-one para a <erso 1./.3 por isso re#omenda-se
uti$i?ar o pa#ote 1./.2 nesse #aso
4. Co#a$i?e os pa#otes A$$-in-one e d: o doFn$oad do mais apropriado para sua p$ata&orma.
". .Ntraia o pa#ote para onde 'uer 'ue <o#: 'uiser para insta$ar o e#$ipse 8norma$mente no seu dri<e
rai?>.
!. Ini#ie o .#$ipse.
!.!0.2Adi)ionando o Su,)-ipse ao E)-ipse
9ara insta$ar o p$u(in si(a os passos a)aiNo:
1 Ini#ie o e#$ipse.
2 ,e$e#ione 1e$p -\ ,o&tFare Dpdates -\ Find and Insta$$.
3 ,e$e#ione ,ear#I &or neF &eatures to insta$$- #$i'ue em EeNt.
* C$i'ue em EeF %emote ,ite.
/ .ntre #om o nome ,u)#$ipse.
4 .ntre #om a D%C Ittp:su)#$ipse.ti(ris.or(updateT1.2.N .
,e <o#: est0 usando o .#$ipse 3.1 ou uma <erso mais <e$Ia- <o#: de<e usar ao in<3s
disso a D%C Ittp:su)#$ipse.ti(ris.or(updateT1.0.N
Eote: Contudo- re#omenda-se 'ue atua$i?e seu e#$ipse para a <erso 3.2K.
" C$i'ue em FinisI.
! Aar'ue a #aiNa ,u)#$ipse e #$i'ue em EeNt.
6 A#eite os termos- #$i'ue em EeNt- #$i'ue em FinisI- #$i'ue em Insta$$ A$$.
10 %eini#ia o am)iente 'uando per(untado.
11 Adi#ione )in e tar(et para serem i(norados pe$o s<n ($o)a$ do .#$ipse 8Op#iona$>. Isso o poupar0
de ter 'ue &a?er #ommit nos diret+rios )in e tar(et 'uando <o#e adi#ionar pro5etos no s<n.
11.1 C$i'ue em LindoF -\ 9re&eren#es
11.2 ,e$e#ione Team -\ I(nored %esour#es
11.3 C$i'ue em Add 9attern e entre em S)inS
11.* C$i'ue em Add 9attern e entre em Star(etS
11./ C$i'ue em App$@ e ento OG
!.!0.#Adi)ionando o Sprin0IDE ao E)-ipse
O ,prin(ID. pode ser en#ontrado em:
Con&iden#ia$ FA9.,9- 90(ina 1*
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
Ittp:sprin(ide.or(pro5e#t
9ara insta$ar o p$u(in si(a os passos a)aiNo:
1. Ini#ie o .#$ipse.
2. ,e$e#ione 1e$p -\ ,o&tFare Dpdates -\ Find and Insta$$.
3. ,e$e#ione ,ear#I &or neF &eatures to insta$$- #$i'ue em EeNt.
*. C$i'ue em EeF %emote ,ite.
/. .ntre #om ,prin( ID. updatesite para o nome.
4. .ntre #om Ittp:sprin(ide.or(updatesite para a D%C.
". C$i'ue em OG.
!. Aar'ue a #aiNa S,prin( ID. updatesiteS e #$i'ue em FinisI.
6. Aar'ue a #aiNa ,prin( ID. e #$i'ue em EeNt.
10. A#eite os termos da $i#ena- #$i'ue em EeNt- #$i'ue em FinisI e #$i'ue em Insta$$ A$$.
11. %eini#ie o am)iente 'uando &or so$i#itado.
!.!0.6Importando o )(di0oH/onte do SaBai dentro do E)-ipse
9ara importar o #+(ido &onte pre<iamente )aiNado do ,a=ai si(a os passos a)aiNo:
1 Ini#ie o .#$ipse se e$e no esti<er em eNe#uo.
2 Crie um no<o For=spa#e para o ,a=ai.
3 C$i'ue em Fi$e -\ ,Fit#I Lor=spa#e.
* .ntre #om SL,-,a=aiS no $u(ar do diret+rio padro HFor=spa#eJ.
/ C$i'ue em OG 8o e#$ipse <ai reini#iar>.
4 Os passos se(uintes de<ero ser &eitos dentro do For=spa#e L,-,a=ai.
" Adi#ione as )i)$iote#as do reposit+rio do Aa<en 8Aa<en %epositor@ $i)raries> no #$asspatI.
! ,e$e#ione LindoF -\ 9re&eren#es -\ 2a<a -\ Oui$d 9atI -\ C$asspatI Varia)$es.
6 Adi#ione a <ari0<e$ do #$asspatI AAV.ET%.9O #om o #aminIo para onde est0 o reposit+rio do
ma<en.
10 O #aminIo de<eria ser: RD,.%T1OA..ma<enrepositor@.
11 Tro'ue para a perspe#ti<e 2a<a 8LindoF -\ Open 9erspe#ti<e -\ 2a<a>.
12 Asse(ure-se 'ue <o#: se en#ontra no pa#=a(e eNp$orer.
13 ,e$e#ione o menu 9ro5e#t e desmar'ue Oui$d automati#a$$@.
1* ,e$e#ione Fi$e -\ Import -\ Menera$ -\ .Nistin( 9ro5e#ts into Lor=spa#e.
1/ .ntre #om o #aminIo #omp$eto para o diret+rio #om o #+di(o &onte do sa=ai 8sakai-src> #omo
sendo o diret+rio rai?.
14 C$i'ue em Dese$e#t A$$ para desmar#ar todos os pro5etos.
1" ,e$e#ione os se(uintes pro5etos 8<o#: s+ pre#isa da maioria das A9Is- a$(uns uti$it0rios e todos os
pro5etos d)>:
a$ias-api
announ#ement-api
ar#Ii<e-api
autI?-api
#m-api
#omponent-api
#ontent-api
#ourier-api
d)-api
d)-imp$
d)-uti$
emai$-api
entit@-api
Con&iden#ia$ FA9.,9- 90(ina 1/
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
e<ent-api
5s&
messa(e-api
master
site-api
site-mana(e-api
too$-api
user-api
user-uti$
uti$-api
uti$-uti$
<e$o#it@
1! C$i'ue em FinisI para importar os pro5etos se$e#ionados.
16 Isso poder0 $e<ar a$(um tempo.
20 Ini#ia$mente <o#: poder0 ter a$(umas &a$Ias de )ui$d na maioria dos pro5etos ,a=ai. Isso o#orre
por'ue <o#: est0 &a?endo )ui$din( na ordem padro e suas depend:n#ias se en#ontram em uma
ordem di&erente. Isso <em sendo par#ia$mente a5ustado no ,a=ai 2.2.
21 Cimpe todos os 9ro5etos do ,a=ai.
22 ,e$e#ione 9ro5e#t -\ C$ean.
23 ,e$e#ione C$ean a$$ pro5e#ts.
2* Aar'ue ,tart a )ui$d immediate$@.
2/ C$i'ue em OG.
24 Oui$d A$$ 89ro5e#t -\ Oui$d A$$>.
2" %epita este passo at3 'ue os erros desapaream 8no de<e passar de umas 3 ou * <e?es>.
2! 1a<er0 #entenas de Farnin(s- por isso no pre#isa se preo#upar #om isso.
26 Ci(ando no<amente os Automati# )ui$ds.
30 ,e$e#ione 9ro5e#t e Oui$d automati#a$$@.
#. Camada de PersistIn)ia
O ,a=ai tem um mode$o de persist:n#ia #entra$i?ado- onde todas as &erramentas e o sistema em si usam a
mesma )ase de dados. A #on&i(urao de produo 3 tipi#amente #$usteri?ada- ou se5a- 3 )astante dependente da
)ase de dados. Ferramentas 'ue no se #$usteri?am- pro<a<e$mente no sero adotadas pe$a distri)uio o&i#ia$ do
,a=ai.
O sistema de ar'ui<os 3 usado para persist:n#ia de dados <o$umosos #omo )$o)s ou ar'ui<os. .sses dados
so disponi)i$i?ados <ia Le)Da<.
O #ontro$e de #on&i(uraes da )ase de dados esto #on#entrados nos ar'ui<o sa=ai.properties $o#a$i?ado
no diret+rio de insta$ao do Tom#at- no diret+rio ,a=ai.
DeiNe sempre 8eN#eto em produo> a propriedade Hauto.d$$UtrueJ. Dessa &orma- se as ta)e$as do ,a=ai
ainda no &oram #riadas- e$as sero.
O 1,BCD 3 o )an#o padro #on&i(urado- e$e arma?ena os dados apenas em mem+ria por de&au$t. 9ara usar
a persist:n#ia em ar'ui<os- des#omente a se(uinte propriedade do sa=ai.properties:
ur$^5a<aN.s'$.OaseData,our#eU5d)#:Is'$d):R`sa=ai.Iomead)sa=ai.d)
Deta$Ies de #on&i(urao para outros )an#os podem ser en#ontrados em:
Con&iden#ia$ FA9.,9- 90(ina 14
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
Ittp:#on&$uen#e.sa=aipro5e#t.or(#on&$uen#edisp$a@DOCInsta$$KMuideK-KDOKe2!2.*e26
Apenas 3 )ases de dados so suportadas atua$mente pe$o ,a=ai: 1,BCDO- A@,BC e Ora#$e. A adoo de
outras )ases 3 um tra)a$Io 0rduo- pois (rande parte do #+di(o de a#esso a )an#o est0 em ,BC nati<o.
!.!!Formas de persistIn)ia
A persist:n#ia pode ser &eita de 3 maneiras:
2DOC: Oastante tra)a$Ioso- de )aiNa porta)i$idade- mas propor#iona maior #ontro$e.
,prin( 2DOC: Tra)a$Ioso- porta)i$idade ra?o0<e$- mas propor#iona maior #ontro$e.
1i)ernate: Aenos tra)a$Ioso- mais port0<e$- propor#iona #ontro$e #on&i(ur0<e$.
O 1i)ernate 3 a &orma de persist:n#ia mais re#omendada para o ,a=ai de<ido a &a#i$idade de
desen<o$<imento e #ontro$e moderado. 9or3m- no 3 per&eito- pode ser tra)a$Ioso de mapear os o)5etos- a
#on&i(urao ini#ia$ no pode ser a$terada dinami#amente- $a?@ #o$$e#tions no so to $a?@ assim- et#..
O 1i)ernate 3 3 usado a partir do ,a=ai 2.2- <erses anteriores usa<am o 1i)ernate 2.
A$(umas di#as ao se usar o &rameFor=:
Eo use tipos primiti<os para mapear propriedades em o)5etos persistentes. Mera$mente no I0
pro)$emas #om isso- mas 'uando uma propriedade do )an#o est0 EDCC- no 3 poss;<e$ mapear
para tipos primiti<os- somente para o)5etos.
Eo atri)ua <a$ores nas propriedades dos 9O2O,. O &rameFor= espera 'ue todos os atri)utos dos
o)5etos este5am no ini#ia$i?ados.
,e <o#: ti<er a$(um o)5eto no sa$<o sendo re&eren#iado por outro- pro#ure primeiro sa$<ar esse
o)5eto e s+ depois sa$<ar o seu parente. O 1i)ernate tem <0rias opes em #as#ata 'ue a&irmam
rea$i?ar essa tare&a- mas 3 me$Ior simp$i&i#ar. A mesma #oisa na de$eo.
Dse Ids no primiti<os em #Ia<es prim0rias dos o)5etos persistentes. P mais e&i#iente e 3 uma )oa
id3ia para a (rande maioria dos DOs. Dse Con( ou ,trin( para resu$tados me$Iores.
!.!29sando o 'i,ernate
.Nistem )asi#amente 3 maneiras de usar o 1i)ernate no ,a=ai:
Criar um ,essionFa#tor@ usando #on&i(uraes dentro da sua &erramenta. Vo#: de<e usar esse
m3todo 'uando 3 pre#iso se #one#tar a uma )ase de dados eNterna. Eo use essa opo para se
#one#tar f )ase de dados interna do ,a=ai. 9ara mais in&ormaes a#esse:
Ittp:FFF.Ii)ernate.or(Ii)Tdo#sre&eren#eenItm$session-#on&i(uration.Itm$
Criar um ,essionFa#tor@ a partir do ,essionFa#tor@Oase ($o)a$ do ,a=ai. .sse no 3 o m3todo
re#omendado- mas se <o#: ti<er apenas um pro5eto no Aa<en ento <o#: poderia usar esse
m3todo. .sse so$uo &un#iona )em para &erramentas simp$es- por3m para mais #omp$eNas de<e-
se usar o m3todo a)aiNo.
Adi#ionar os seus 1OAs ao ,essionFa#tor@ ($o)a$ do ,a=ai usando Adde)$e,essionFa#tor@Oean.
.sse 3 o m3todo mais re#omendado. Fun#iona )em para a maioria- eN#eto para as ap$i#aes mais
simp$es. %e'uer 'ue a &erramenta &aa o dep$o@ parte na pasta sIared e na pasta #omponents- por
isso pode se tornar #omp$eNo para &erramentas pe'uenas.
Con&iden#ia$ FA9.,9- 90(ina 1"
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
!.!#9sando o pa)ote Jeneri)Dao
O Meneri#Dao 3 uma #amada de a)strao 'ue possi)i$ita o uso do 1i)ernate #om seus o)5etos persistentes
sem pre#isar es#re<er um 7ni#o DAO. P a$tamente #on&i(ur0<e$ e estend;<e$ e no tem depend:n#ia a$(uma do
1i)ernate nas suas inter&a#es. Aais in&ormaes de uso podem ser en#ontradas nos 5a<ado#s:
Ittp:sour#e.edte#I.<t.eduma<en(eneri#-dao
,eu uso 3 demonstrado no eNemp$o Tas=Cist. 9ode ser en#ontrado a)aiNo:
Ittps:sour#e.sa=aipro5e#t.or(#ontri)tas=$isttrun=
!.!6Construindo uma ap-i)ao
Dma simp$es ap$i#ao de a#esso f #amada de persist:n#ia pode ser #onstru;da se(uindo a
apresentao a)aiNo:
http://bugs.sakaiproject.org/confluence/download/attachments/18439/SakaiPersistenceAndHibernate.ppt?
version=1
9ara$e$amente- o es'ue$eto de uma ap$i#ao #om a#esso a persist:n#ia- dentre outras #oisas- pode
ser #onstru;da #om p$u(in do ,a=ai para o .#$ipse. .s#o$Ia a #riao de uma ap$i#ao C%DD. Dma )oa
noo de estrutura de &erramenta e maneiras de a#esso ao )an#o pode ser o)tida o)ser<ando a estrutura
#riada.
6. Framework do SA=AI H Servios
!.!7Con)eituao de Ser+iosK ComponentesK Ferramentas e Frame<orB no
SaBai
Os ser<ios e #omponentes do ,a=ai so um #on5unto de imp$ementaes de a$(uma A9I do ,a=ai- ou se5a-
uma #o$eo de Oeans do ,prin(. As &erramentas ,a=ai ser<em somente #omo inter&a#e (r0&i#a 8MDI> e no
podem &a?er nenIum tipo de persist:n#ia diretamente. A persist:n#ia &i#a a #ar(o do #omponente pr+prio
para este ser<io. 20 os #omponentes- por sua <e?- no &a?em 'ua$'uer tipo de ser<io de inter&a#e (r0&i#a
#omo 1TAC- por eNemp$o- por3m podem a#essar outros ser<ios por meio das A9Is dispon;<eis. O
FrameFor= ,a=ai possi)i$ita 'ue ser<ios e #omponentes se5am re(istrados para 'ue possam &orne#er
&un#iona$idades #omuns sem- ne#essariamente- #onIe#er o dom;nio de seus o)5etos 8OA,AAE- 200"a>.
Cada #omponente do ,a=ai pu)$i#a os seus ser<ios usando o ar'ui<o H#omponents.Nm$J da &orma #omo o
,prin( &a?. .stes #omponentes so ini#iados 'uando o ,a=ai 3 ini#ia$i?ado e suas depend:n#ias so
reso$<idas automati#amente e ao mesmo tempo 8OA,AAE- 200"a>.
As A9Is do ,a=ai so de&inidas em termos de inter&a#es 2a<a- para as 'uais eNiste uma 7ni#a
imp$ementao para #ada inter&a#e da A9I no ,a=ai. O nome do Oean ,prin( no #onteNto ,prin( do ,a=ai
8#omponents.Nm$> 3 sempre o nome da inter&a#e #omp$eto- in#$uindo o8s> seu8s> pa#ote8s>. 9or eNemp$o- o
ser<io DserDire#tor@,er<i#e possui a se(uinte entrada no ar'ui<o #omponents.Nm$:
<bean id="org.sakaiproject.user.api.UserDirectoryService
Con&iden#ia$ FA9.,9- 90(ina 1!
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
class="org.sakaiproject.user.impl.DbUserService"
init-method="init" destroy-method="destroy"
singleton="true"
......
<property name="autoDdl value=!"auto.ddl#$%
<property name="cache&inutes value='$%
<%bean
Figura 1: Exemplo de Definio de Servio no Sakai (BASMAN, !!"a#$
!.!8Desen+o-+endo Ferramentas e Componentes SaBai
O ,a=ai uti$i?a um #on5unto de te#no$o(ias para o desen<o$<imento de suas &erramentas- )em #omo o
&orne#imento de ser<ios. A Fi(ura 2 apresenta as te#no$o(ias uti$i?adas pe$o ,a=ai em #amadas.
Figura 2: Te#no$o(ias Dti$i?adas pe$o ,a=ai 8OA,AAE- 200")>.
9er#e)e-se na Fi(ura 2 'ue as te#no$o(ias en<o$<idas para o &un#ionamento do ,a=ai so:
g 2a<a: <erso /.0 ou superior. 2a<a %untime .n<ironment 82%.> para insta$ao e uso e 2a<a De<e$opment
Git 82DG> para o desen<o$<imento de &erramentas ,a=aiQ
Con&iden#ia$ FA9.,9- 90(ina 16
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
g Apa#Ie 1TT9 eou Tom#at: ser<idor Apa#Ie 1TT9 em #on5unto #om os m+du$os modT5= para o
Container Tom#at /./ ou superiorQ
g 2,F- Veo#it@ e %,F: para o desen<o$<imento de MDIQ e
g A@,BC ou Ora#$e: para a persist:n#ia de dados.
Com )ase nas te#no$o(ias en<o$<idas- a estrutura do ,a=ai 3 apresentada na Fi(ura 3 a se(uir.
Figura 3: .strutura ,a=ai 8OA,AAE- 200")>.
Como pode ser <isto na Fi(ura 3- a estrutura do ,a=ai est0 di<idida em duas partes prin#ipais:
Apresentao: A apresentao permite a interao de #$ientes por meio de a$(umas te#no$o(ias
#omo- por eNemp$o- Le) ,er<i#es 8ANis> e por meio de )roFsers <ia %,F e 2,FQ
,er<ios: A #amada de ser<ios 3 &ormada por ser<ios #omuns 8)an#o de dados e =erne$> a$3m de
outros ser<ios 'ue podem ser adi#ionados 8otIer ser<i#es>.
Dessa &orma- 3 poss;<e$ #onstruir &erramentas ,a=ai #om )ase nas te#no$o(ias e estrutura en<o$<idas.
Dma &erramenta ,a=ai 3 a$(o )em pare#ido #omo um ser<$et- por3m #om a$(umas pe#u$iaridaes #omo
8OA,AAE- 200"aQ OA,AAE- 200")>:
g O #onteNo ,prin( da &erramenta 3 automati#amente adi#ionado ao #onteNto ,prin( ($o)a$- assim os
ser<ios ,a=ai podem ser diretamente re&eren#iados no ,prin(Q
g Os 2A%s do ,prin( no de<em ser in#$u;dos na ap$i#ao- uma <e? 'ue e$es 50 este5am #omparti$Iados
8pasta ,Iared do Container Tom#at>.
Con&iden#ia$ FA9.,9- 90(ina 20
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
Assim- eNiste um 7ni#o #onteNto da ap$i#ao ,a=ai ($o)a$ e #omparti$Iado 'ue possui todos os )eans 'ue
representam os ser<ios ,a=ai. 9ara o desen<o$<imento da inter&a#e (r0&i#a da &erramenta ,a=ai 3 poss;<e$
uti$i?ar %,F Z7easonable &er#er ;aces 8%,FLIGI- 200"> 'ue 3 um &rameFor= opensour#e de
pro(ramao Le) desen<o$<ido uti$i?ando o ,prin(. O %,F &orne#e um temp$ate puro em X1TAC e um
tratamento #omp$eto de #i#$o de <ida. A$3m disso- o %,F uti$i?a A5aN e C,,- assim os desen<o$<edores no
pre#isam tratar 1ttp,er<$et%e'uestWs- D%Cs ou ta(s 1TAC. 9ermite- tam)3m- pro(ramao pura )aseada
no mode$o de )eans- assim #omo 2,F 8JavaServer Faces>- a$3m de uma ar'uitetura a$tamente modu$ar e
p$u(0<e$.
O uso do %,F em &erramentas ,a=ai 3 simp$es- uma <e? 'ue e$e 3 desen<o$<ido usando o ,prin( o 'ue
torna seu uso r0pido e direto. Cada entidade %,F 3 um )ean ,prin( e os ser<ios pode ser in5etados em
'ua$'uer $u(ar. 9or eNemp$o- para #riar uma entidade %,F 9rodu#er de<e-se adi#ionar o se(uinte #+di(o ao
ar'ui<o #omponents.Nm$:
<bean
class=org.sakaiproject.myproject.tool.producers.(ello)orld*roducer$
<property name=userDirectoryService$
re+="org.sakaiproject.user.api.UserDirectoryService$
<%bean
Figura 3: .Nemp$o de De&inio de uma .ntidade %,F 8OA,AAE- 200"a>.
Dessa &orma- as &erramentas e ser<ios do ,a=ai se #omuni#am #om )ase nos #Iama os ClassLoaders. Os
ClassLoaders so a #Ia<e para a &$eNi)i$i?ao em 2a<a. Eo Container Tom#at- os ClassLoaders &ormam
uma 0r<ore #omo mostra a &i(ura a se(uir.
Figura 4: C$assCoaders no Container Tom#at 8OA,AAE- 200")>.
Ea Fi(ura *- Le)aap1 e Le)app2 representam as &erramentas ,a=ai. Os #omponentes e A9Is &i#am
$o#a$i?ados na pasta ,Iared. Assim- 'ua$'uer &erramenta imp$antada no Container ,a=ai 8Fi(ura *> tem
a#esso aos ser<ios e #omponentes insta$ados.
O desen<o$<imento de #omponentes ,a=ai est0 di<idido em duas partes 8OA,AAE- 200")>:
O desen<o$<imento do m+du$o A9I: #ont3m norma$mente inter&a#es 2a<a e #onstantes 'ue &ormam um
2A% 'ue 3 en<iado f 0rea #omparti$IadaQ
O desen<o$<imento do m+du$o Imp$: 'ue #ont3m a imp$ementao das inter&a#es da A9I- a$3m de outras
#oisas. Cont3m tam)3m um ar'ui<o #omponents.Nm$ 'ue pu)$i#a os )eans de imp$ementao para o
#onteNto ,prin( #omparti$Iado. Tam)3m &orma um 2A% 'ue 3 en<iado f 0rea de #omponentes.
9ara a #riao de #omponentes e &erramentas eNiste um p$u(in para o .#$ipse #Iamado App Oui$der. Dm
tutoria$ de insta$ao e uso do App Oui$der est0 dispon;<e$ em ,a=ai 8200">.
!.!& Ser+ios DisponL+eis pe-o SaBai
Os ser<ios do ,a=ai esto di<ididos em <0rias #ate(orias #omo mostra a Fi(ura /:
Con&iden#ia$ FA9.,9- 90(ina 21
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
Con&iden#ia$ FA9.,9- 90(ina 22
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
Figura 5: ,er<ios do FrameFor= ,a=ai.
As sees a se(uir apresentam uma des#rio de #ada um dos ser<ios dispon;<eis em
Functionnal e Informational Services.
!.!% Fun)tiona- Ser+i)es
!.!%.!9ni+ersa- Components
,o os #omponentes )0si#os para todas as &erramentas ,a=ai em n;<e$ de ser<ios.
1.18.1.1 ComponentManager
O ,a=ai Component Aana(er 3 um ser<io 'ue usa as #apa#idades de um managedbean do ,prin( para
#riar e manter um re(istro de #omponentes 'ue mapeiam as inter&a#es de uma A9I para sua imp$ementao
#orrespondente. .ssa ati<idade pode ser #omparada a um poss;<e$ domain name resolver para
inter&a#es de uma A9I. .sse ser<io 3 simi$ar ao OGI O,ID $oader 'ue pro<: )us#a para imp$ementaes
de uma inter&a#e em parti#u$ar. Os e<entos 'ue de<em o#orrer para o Component Aana(er operar in#$uem:
1. Buando uma ap$i#ao Fe) #om #omponentes 8imp$ementaes de uma inter&a#e em parti#u$ar> ini#ia-
se- um ser<$et espe#ia$ na ap$i#ao #Iamado de Components,er<$et $: um ar'ui<o de #on&i(urao e
re(istra os #omponentes #ontidos no ser<$et.
2. Buando &erramentas 8ou outros #onsumidores da A9I> so #arre(ados- o ComponentAana(er $o#a$i?a a
imp$ementao para as inter&a#es re'uisitadas. O ComponentAan(er usa o re(istro para imp$ementaes
pr3re(istradas. 10 di<ersos m3todos 'ue eNe#utam essa pro#ura in#$uindo o Service Injection e o Service
Locator 8des#ritos adiante>
3. A &erramenta &a? #Iamadas para a imp$ementao da A9I atra<3s dos $imites da ap$i#ao Fe). Isso
a#onte#e pois a inter&a#e da A9I e seus o)5etos retornados so de&inidos em um espao #omparti$Iado- o
crosswebapplication. Como a &erramenta e a imp$ementao da A9I operam em di&erentes ap$i#aes
Fe)- e$as podem ter di&erentes #on&i(uraes para seus ar'ui<os 5ar. Dm eNemp$o disso 3 'uando uma
&erramenta ne#essita de uma <erso de um uti$it0rio #omo o Xer#es en'uanto uma A9I ne#essita outra
<erso.
O desen<o$<imento de e$ementos de ap$i#aes por meio de di<ersas ap$i#aes Fe) pode o#asionar
es&oro adi#iona$ e a Ia)i$idade de di&erentes e$ementos possu;rem di&erentes ar'ui<os de #on&i(urao 5ar
3 a$tamente <a$iosa para manteno da #on&ia)i$idade de todo o sistema. Ea <erso 1.0 do ,a=ai 3 poss;<e$
re#uperar o Component %e(istr@ uti$i?ando o Component ,er<$et.
Encontrando implementaes de servios do Sa!ai
10 duas maneiras de $o#a$i?ar a imp$ementao de uma inter&a#e em parti#u$ar: Service Locator e
Service Injection. O ,a=ai Component Aana(er apoia tanto o service injection 'uanto o service
location #omo me#anismos para reso$<erem a re&er:n#ia de imp$ementaes de uma A9I. O padro
ser<i#e in5e#tion 3 re#omendado e mais port0<e$.
" #adr$o Servi%e &o%a'or
O padro Service Locator 3 uti$i?ado onde uma &erramenta &a? uma #Iamada eNp$i#;ta para re#uperar a
imp$ementao para uma inter&a#e. 9or eNemp$o:
,mport org.sakaiproject.service.+rame-ork.component.cover..omponent&anager/
Con&iden#ia$ FA9.,9- 90(ina 23
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
0ogger logger = 10ogger2 .omponent&anager.get10ogger2/
O &ra(mento a#ima &a? #om 'ue o #+di(o dependa de um ComponentAana(er em parti#u$ar de<ido f
de#$arao de import eNp$;#ita na assinatura do m3todo. Dm padro #omum 'uando uti$i?ado o service
locator 3 es#onder o ser<i#e $o#ator uti$i?ando outro padro- #Iamado Cover #attern. A #o)ertura
est0ti#a simp$esmente possui um m3todo para todo m3todo na #amada in&erior da inter&a#e Z dentro de #ada
m3todo- o ser<i#e $o#ator 3 #Iamado- e ento o m3todo 3 #Iamado na imp$ementao retornada pe$o
ser<i#e $o#ator. Eo ,a=ai 3 uti$i?ado a strin( cover no nome do pa#ote para indi#ar 'uando esse padro
est0 em uso. Isso a5uda a manter #o)erturas est0ti#as separadas de inter&a#es- o)5etos e imp$ementaes de
inter&a#e.
" padr$o Servi%e (n)e%'ion
Dma a)orda(em mais port0<e$ 3 uti$i?ar m3todos setter de 2a<aOeans para Hin5etarJ a imp$ementao de
uma #$asse. Isso 3 #Iamado #omo o padro Service Injection- pois o m3todo set 3 usado para in5etar a
imp$ementao atua$ da inter&a#e ap+s o )ean da &erramenta ter sido #onstru;do. Dessa maneira no I0
depend:n#ia no 2a<a so)re a assinatura do m3todo do ComponentAana(er ou do nome do pa#ote 2a<a.
public void set0ogger10ogger logger2"
this.logger = logger/
#
Eo ,a=ai 2a<a FrameFor= <erso 1.0- I0 duas maneiras de indi#ar 'ua$ ser<i#e in5e#tion 3 dese5ado.
Buando um ser<i#e re'uer ser in5etado #om outro ser<i#e- o ser<i#e in5e#tion 3 um e&eito #o$atera$ da
#riao do )ean do ser<io. Dm eNemp$o de ar'ui<o #omponents.Nm$ se(ue a)aiNo:
<beans
<bean id="org.sakaiproject.service.common.id.,d&anager"
class="org.sakaiproject.component.common.id.Sakai,d&anager"
initmethod="
init"
destroymethod="
destroy"
singleton="true"
<property name="logger"
<re+ bean="3org.sakaiproject.service.+rame-ork.log.0ogger3"%
<%property
<%bean
<%beans
Eesse eNemp$o est0 sendo #riado e re(istrado o Id%anager bean ao mesmo tempo- in5etando nesse )ean a
imp$ementao do Co((er. 9ara uma &erramenta T99 #ompat;<e$- o ser<i#e in5e#tion 3 des#rito no ar'ui<o
&a#es#on&i(. Nm$:
<+acescon+ig
<managedbean
<description4ool 5ean +or announcements<%description
<managedbeanname
6nnouncement4ool<%managedbeanname
<managedbeanclass
org.sakaiproject.tool.annc.6nnouncement4ool
<%managedbeanclass
<managedproperty
<descriptionService Dependency7 logging service<%description
<propertyname
Con&iden#ia$ FA9.,9- 90(ina 2*
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
logger<%propertyname
<value
38".omponents9"org.sakaiproject.service.+rame-ork.log.0ogger":#3
<%value
<%managedproperty
<%managedbean
<%+acescon+ig
O ,er<i#e In5e#tion permite ao &rameFor= possuir #ontro$e #omp$eto so)re as imp$ementaes usadas em
tempo de eNe#uo e #onsumidas no #+di(o 2a<a. A$3m disso- o uso do ser<i#e in5e#tion simp$i&i#a a
#onstruo de testes de unidade #omo testes de unidade pro<er o #+di(o #om uma imp$ementao &a$sa ou
su)stituta #omo parte da operao de teste.
.sto sendo in<esti(ados outros me#anismos #omo o 2a<a Eamin( and Dire#tor@ Inter&a#e 82EDI> #omo
uma maneira de identi&i#ar re&er:n#ias a A9I atra<3s de #onteNtos de ap$i#aes Fe).
De maneira (era$- a inter&a#e Component Aana(er pro<: a#esso a o)5etos sin($eton- 'ue #orrespondem a
um #omponente 8ser<ios- re#ursos- et#>. Os m3todos 'ue #ompe a inter&a#e so:
%e#upera um #omponente dado um nome de #$asse
*+)e%' ge'(,la-- ifa%e#: %e#upera um sin($eton asso#iado #om a inter&a#e da #$asse pro<ida. .sse
sin($eton 3 uma insthn#ia de um o)5eto 'ue imp$ementa a inter&a#e indi#ada.
%e#upera um #omponente dado um nome de inter&a#e
*+)e%' ge'(S'ring ifa%eName#: %e#upera um sin($eton asso#iado #om o nome de inter&a#e
pro<ida. .sse sin($eton 3 uma insthn#ia de um o)5eto 'ue imp$ementa a inter&a#e indi#ada. Dm eNemp$o de
nome de inter&a#e 3 or(.sa=aipro5e#t.api.=erne$.session.,ession Aana(er.
Veri&i#a a eNist:n#ia de um #omponente dado o nome de uma #$asse
+oolean %on'ain-(,la-- ifa%e#: %etorna true se o sin($eton asso#iado #om a inter&a#e pro<ida 3
re(istrado #om o Component Aana(er e eNiste.
Veri&i#a se um #omponente eNiste dado um nome de inter&a#e
+oolean %on'ain-(S'ring ifa%eName#: %etorna true se o sin($eton asso#iado #om o nome de
inter&a#e pro<ido est0 re(istrado #om o Component Aana(er e eNiste. Dm eNemp$o de nome de inter&a#e 3
or(.sa=aipro5e#t.api.=erne$.too$.Too$Aana(er
%e#upera o #on5unto de #omponentes re(istrados
Se' ge'.egi-'ered(n'erfa%e-(#: %etorna o #on5unto de #omponentes re(istrados atua$mente
#arre(ados e dispon;<eis #omo o)5etos sin($eton. .sse 3 um #on5unto de nomes de inter&a#e. O #on5unto
pode ser uti$i?ado para des#o)rir a imp$ementao de uma inter&a#e #onIe#ida.
Carre(a uma #omponente eNistente dada uma #$asse
void load,omponen'(,la-- ifa%e, *+)e%' %omponen'#: .m a$(uns #asos- uma insthn#ia de
uma imp$ementao de ser<io pode ser #riada por outros m3todos a$3m dos do Componet Coader . .sse
m3todo pode ser usado para re(istrar essa insthn#ia #omo um sin($eton e asso#i0-$o #om a inter&a#e
&orne#ida
Carre(a um #omponente eNistente dado o nome de uma #$asse
void load,omponen'(S'ring ifa%eName, *+)e%' %omponen'#: .m a$(uns #asos- a insthn#ia
de uma imp$ementao de um ser<i#e pode ser #riada por m3todos di&erentes dos do Componente Coader.
.sse m3todo pode ser usado para re(istrar essa insthn#ia #omo um sin($eton e asso#ia-$o #om o nome de
inter&a#e dado.
Con&iden#ia$ FA9.,9- 90(ina 2/
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
Fe#Ia o Component Aana(er
void %lo-e(#: .sse m3todo 3 #Iamado para &e#Iar o Component Aana(er. .$e- por sua <e?- &e#Ia o
#onteNto da ap$i#ao ,prin(.
%e#upera as propriedades de #on&i(urao
/roper'ie- ge',onfig(#: .sse m3todo pode ser usado para a#essar <0rias propriedades de
#on&i(urao suportadas pe$o ,a=ai.
1.1!.1.1.1 ComponentsCoader
.ste #omponente 8inter&a#e 2a<a> de&ine um m3todo para #arre(ar todos os #omponentes re(istrados
dispon;<eis- a$3m de #riar o)5etos Singletons 8,AGAI- 200/>:
void load(ComponentManager mgr, String componentsRoot);
onde:
mgr 3 uma insthn#ia de ComponentAana(erQ
components&oot 3 o #aminIo #anYni#o para o diret+rio onde os #omponentes se en#ontram.
O <a$or de components&oot 3 re#uperado por meio da instruo:
System.getProperty(sakai.components.root);
1.1!.1.1.2 ConteNtCoaderCistener
.sta #$asse uti$it0ria '(tilit) "bject* representa uma eNtenso da #$asse Conte+tLoaderListener do
,prin( e in#rementade#rementa o n7mero de &i$Ios do #omponente Component%anager 8,AGAI- 200/>.
,ua A9I 3 &ormada pe$os se(uintes m3todos:
Cria um ConteNtCoader
p!lic createConte"t#istener();
Ini#ia$i?a o #onteNto rai? da ap$i#ao Le)
p!lic void conte"t$nitiali%ed(ServletConte"t&vent event);
.n#erra o #onteNto rai? da ap$i#ao Le)
p!lic void conte"t'estroyed(ServletConte"t&vent event);
1.1!.1.1.3,er<erCon&i(urationCistener
.ssa inter&a#e &orne#e in&ormaes so)re #omo o ser<idor est0 #on&i(urado 8,AGAI- 200")>.
,ua A9I 3 &ormada pe$os se(uintes m3todos:
String getServer$d(): a#essa o 7ni#o id do ser<idorQ
String getServer$nstance(): a#essa o id da 7ni#a insthn#ia do ser<idorQ
String getServer$d$nstance(): a#essa o id #om)inado de ser<idorinsthn#iaQ
String getServer(ame(): a#essa o nome DE, do ser<idorQ
String getServer)rl(): a#essa a D%C para o ser<idor rai?Q
String get*elp)rl(String +elpConte"t) : a#essa a D%C para o ser<io de a5uda do
ser<idorQ
Con&iden#ia$ FA9.,9- 90(ina 24
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
String get,ccess)rl(): a#essa a D%C para a#essar ser<ios no ser<idorQ
String get,ccessPat+(): a#essa o #aminIo do ser<io de a#esso no ser<idor re$ati<o a D%C
)ase para o ser<idorQ
String getPortal)rl(): a#essa a D%C para o ser<io de porta$ do ser<idorQ
String get-ool)rl(): a#essa a D%C para o ser<io de en#aminIamento do ser<idorQ
String get.ate/aySite$d(): a#essa o id do site para o (ateFa@ p7)$i#oQ
String get#ogged0t)rl(); a#essa a D%C para usar #omo redire#ionamento 'uando o usu0rio
e&etuar $o(inQ
String get)ser*ome)rl(): acessa a D%C para o diret+rio Iome do usu0rioQ
String getSakai*omePat+(): a#essa o #aminIo para o Hsa=ai IomeJ no ser<idor de ap$i#aoQ
String getString(String name) : a#essa a$(um <a$or nomeado de uma #on&i(urao #omo
uma ,trin(Q
String getString(String name, String d1lt) : a#essa a$(um <a$or nomeado de uma
#on&i(urao #omo uma ,trin(Q
,tring23 getStrings(String name) : a#essa a$(um <a$or nomeado de uma #on&i(urao
#omo um arra@ de ,trin(sQ
int get$nt(String name, int d1lt) : a#essa a$(um <a$ue nomeado de #on&i(urao
#omo um intQ
!oolean get4oolean(String name, !oolean d1lt) : a#essa a$(um <a$ue nomeado de
#on&i(urao #omo um )oo$eanQ
#ist get-ool0rder(String category) : a#essa a $ista de ids de &erramentas desta
#ate(oriaQ
#ist get-oolsRe5ired(String category) : a#essa a $ista de de ids de &erramentas 'ue
so re'ueridas por esta #ate(oriaQ
#ist get'e1alt-ools(String category> : a#essa a $ista de ids de &erramentas 'ue so
se$e#ionadas por padro para esta #ate(oriaQ
#ist6String7 get-oolCategories(String category); a#essa a $ista de #ate(orias de
&erramentas para um dado tipo de siteQ
Map6String, #ist6String77 get-oolCategories,sMap(String category):
a#essa um map de #ate(orias de ids de &erramentas para este tipo de siteQ
Map6String, String7 get-ool-oCategoryMap(String category) : a#essa um
map de #ate(orias de ides de &erramentas para este tipo de site.
1.18.1.2 Collaborative Tools
1.1!.1.2.1 Too$Aana(er
Inter&a#e #om o pape$ de re(istrar as &erramentas dispon;<eis na insta$ao do ,a=ai. Tam)3m 3 usado para
des#o)rir #oisas #omo o $o#a$ do usu0rio atua$ 8,ite- et#> e in&ormaes so)re as &erramentas do ,a=ai.
A A9I Too$Aana(er possui os se(uintes m3todos:
void register(-ool tool) : adi#iona a &erramenta ao re(istroQ
Con&iden#ia$ FA9.,9- 90(ina 2"
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
void register('ocment tool8ml) : adi#iona o do#umento XAC ao re(istro- usando a
&erramenta de es'uema XACQ
void register(9ile tool8ml9ile) : adi#iona as &erramentas de&inidas no ar'ui<o XAC ao
re(istroQ
<oid re(ister8Input,tream too$Xm$,tream> : adi#iona as &erramentas no stream ao re(istroQ
-ool get-ool(String id) : )us#a uma &erramenta no re(istro por meio do seu idQ
Set 1ind-ools(Set categories, Set key/ords) : )us#a um #on5unto de &erramentas
se(undo as #ate(orias e as palavras:c+aves indicadas;
Too$ (etCurrentToo$8>: a#essa a &erramenta asso#iada #om a re'uisiotIread #orrenteQ
Placement getCrrentPlacement(): a#essa a &erramenta do tipo #lacement asso#iada #om
a re'uisiotIread #orrente.
9ara a#essar a Too$Aana(er pode-se uti$i?ar o &rameFor= ,prin( para in5etar o ser<io. 9ara
adi#ionar um )ean do tipo Too$Aana(er 3 ne#ess0ria a se(uinte entrada:
<bean id="org.sakaiproject.yourapp.logic.;our6pp.lass"
class="org.sakaiproject.yourapp.logic.impl.;our6pp.lass,mpl"
<property name="tool&anager"
re+="org.sakaiproject.tool.api.4ool&anager" %
<%bean
,our-ppClassImpl 3 a #$asse #on#reta 'ue imp$ementa a inter&a#e Too$Aana(er 'ue possui um atri)uto
#Iamado too$Aana(er 'ue- por sua <e?- 3 do tipo Too$Aana(er. Dessa &orma- 3 poss;<e$ a#essar a
Too$Aana(er #om o m3todo get-oolManager().
1.1!.1.2.2 A#ti<eToo$Aana(er
Inter&a#e 'ue estende Too$Aana(er e introdu? suporte f ati<idades espe#;&i#as de ,er<$ets. Os m3todos
adi#ionais so:
#ist6-ool7 parse-ools(9ile tool8ml9ile) : &a? o parse de um ar'ui<o de re(istro de
&erramentas e retorna uma $ista de &erramentas re(istradasQ
#ist6-ool7 parse-ools('ocment tool8ml) : &a? o parse de um ar'ui<o de re(istro e
retorna uma $ista de &erramentas re(istradasQ
#ist6-ool7 parse-ools($nptStream tool8mlStream) : &a? o parse de um ar'ui<o e
retorna uma $ista de &erramentas re(istradasQ
,ctive-ool get,ctive-ool(String id) : )us#a uma &erramenta no re(istro #om o id
indi#adoQ
String get#ocali%ed-oolProperty(String tool$d, String key) : retorna a
propriedade $o#a$i?ada da &erramenta.
1.1!.1.2.3 ,essionAana(er
Con&iden#ia$ FA9.,9- 90(ina 2!
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
.sta inter&a#e permite o a#esso fs &erramentas espe#;&i#as para #ada usu0rio por meio de Ittp da A9I dos
,er<$ets. O (eren#iamento de sesso pode ser &eito #om a in5eo do ser<io no ,prin(. 9ara adi#ionar um
)ean ,essionAana(er do tipo _ourAppC$assImp$ 3 ne#ess0ria a se(uinte entrada:
<bean id="org.sakaiproject.yourapp.logic.;our6pp.lass"
class="org.sakaiproject.yourapp.logic.impl.;our6pp.lass,mpl"
<property name="session&anager"
re+="org.sakaiproject.tool.api.Session&anager" %
<%bean
.m se(uida 3 ne#ess0rio #riar um atri)uto do tipo ,essionAana(er no )ean da se(uinte maneira:
private Session&anager session&anager =
org.sakaiproject.tool.cover.Session&anager.get,nstance12/
public void setSession&anager1Session&anager session&anager2 "
this.session&anager = session&anager/
#
A A9I do ,essionAana(er possui <0rios m3todos- $istados a se(uir:
Session getSession(String session$d) : a#essa a sesso #onIe#ida #om o id
in&ormadoQ
Session startSession(): ini#ia uma no<a sessoQ
Session startSession(String id) : ini#ia uma no<a seo usando o id in&ormadoQ
Session getCrrentSession(): a#essa a sesso asso#iada f re'uisiotIread #orrenteQ
String getCrrentSession)ser$d(): a#essa o id do usu0rio da sesso #orrenteQ
-oolSession getCrrent-oolSession(): a#essa a sesso da &erramenta asso#iada #om a
re'uisiotIread #orrenteQ
void setCrrentSession(Session s) : de&ine a sesso in&ormada #omo a sesso #orrenteQ
void setCrrent-oolSession(-oolSession s) : de&ine a sesso #omo a sesso de
&erramenta atua$ para a re'uisiotIreadQ
int get,ctive)serCont(int secs) : retorna o n7mero de usu0rios #om sesses
re#entemente ati<as de a#ordo #om a 'uantidade de se(undos in&ormada.
1.1!.1.2.* Too$
A inter&a#e Too$ mode$a a inter&a#e do usu0rio para a produo de &erramentas. Os seus atri)utos so
imut0<eis.
A A9I de Too$ possui <0rios m3todos- $istados a se(uir:
String get$d(): a#essa o id da &erramentaQ
Con&iden#ia$ FA9.,9- 90(ina 26
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
String get*ome(): a#essa o $o#a$ da &erramentaQ
String get-itle(): a#essa o t;tu$o da &erramentaQ
String get'escription(): a#essa a des#rio da &erramentaQ
Properties getRegisteredCon1ig(): a#essa as propriedade de #on&i(urao de re(istro de
uma &erramentaQ
Properties getMta!leCon1ig(): a#essa as propriedades de #on&i(urao 'ue podem ser
#on&i(uradas no re(istro da &erramentaQ
Properties get9inalCon1ig(): a#essa as propriedade de #on&i(urao 'ue so #onstantesQ
Set get;ey/ords(): a#essa as pa$a<ras-#Ia<e re(istradas para a &erramentaQ
Set getCategories(): a#essa as #ate(orias re(istradas para a &erramentaQ
1.1!.1.2./ A#ti<eToo$
.sta inter&a#e 3 uma eNtenso de Too$ 'ue introdu? ser<ios espe#;&i#os a ,er<$ets. ,ua A9I
possui <0rios m3todos $istados a se(uir:
void 1or/ard(*ttpServletRe5est re5, *ttpServletResponse res,
Placement placement, String toolConte"t, String toolPat+) t+ro/s
-ool&"ception: in<o#a a &erramenta para manipu$ar #omp$etamente a re'uisioQ
void inclde(*ttpServletRe5est re5, *ttpServletResponse res,
Placement placement, String toolConte"t, String toolPat+) t+ro/s
-ool&"ception: in<o#a a &erramenta para manipu$ar a re'uisio produ?indo um &ra(mentoQ
void +elp(*ttpServletRe5est re5, *ttpServletResponse res, String
toolConte"t, String toolPat+) t+ro/s -ool&"ception: in<o#a a &erramenta para
manipu$ar #omp$etamente a re'uisio.
1.1!.1.2.4 ,ession
.sta inter&a#e mode$a uma sesso para usu0rios &inais no ,a=ai para a A9I de ,er<$ets. A A9I de ,ession
possui os se(uintes m3todos:
0!<ect get,ttri!te(String name) : retorna o o)5eto asso#iado #om o nome in&ormado
na sessoQ
&nmeration get,ttri!te(ames(): retorna um .numeration de ,trin(s #ontendo os nomes
de todos os o)5etos asso#iados f sessoQ
long getCreation-ime(): retorna a Iora em 'ue a sesso &oi #riadaQ
String get$d(): retorna a strin( #ontendo o id da sessoQ
long get#ast,ccessed-ime(): retorna a 7$tima Iora 'ue o #$iente en<iou uma re'uisio
asso#iada a sessoQ
int getMa"$nactive$nterval(): retorna o inter<a$o m0Nimo de tempo em se(undos 'ue o
,a=ai mant3m a sesso a)ertaQ
-oolSession get-oolSession(String placement$d) : )us#a ou #ria uma sesso de
&erramenta #om o id in&ormadoQ
Conte"tSession getConte"tSession(String conte"t$d) : )us#a ou #ria uma sesso
de #onteNto para o id do #onteNto in&ormadoQ
Con&iden#ia$ FA9.,9- 90(ina 30
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
String get)ser&id(): retorna o id da or(ani?ao do usu0rio asso#iado #om a sessoQ
String get)ser$d(): retorna o id do usu0rio autenti#ado na sessoQ
void invalidate(): destr+i a sesso #orrenteQ
void clear(): $impa os atri)utos da sessoQ
void clear&"cept(Collection names) : $impa os atri)utos da sesso- menos a'ue$e
nomeados na #o$eoQ
void remove,ttri!te(String name) : remo<e o o)5eto #om o nome espe#i&i#adoQ
void set,ctive(): mar#a a sesso #omo ainda ati<aQ
void set,ttri!te(String name, 0!<ect vale) : asso#ia um o)5eto ao nome
espe#i&i#ado na sessoQ
void setMa"$nactive$nterval(int interval) : de&ine o inter<a$o m0Nimo para
in<a$idar uma sessoQ
void set)ser&id(String eid) : de&ine o id da or(ani?ao asso#iado a sessoQ
void set)ser$d(String id) : de&ine o usu0rio asso#iado #om a sesso.
1.1!.1.2."ConteNt,ession
.sta inter&a#e mode$a uma sesso 1ttp para o usu0rio &ina$ em um #onteNto #omo um ,er<$etConteNt. A
A9I do ConteNt,ession possui <0rios m3todos- $istados a se(uir:
void clear,ttri!tes(); remo<e todos os atri)utos da sessoQ
0!<ect get,ttri!te(String name); retorna o o)5eto asso#iado #om o nome espe#i&i#ado
da sessoQ
&nmeration get,ttri!te(ames(); retorna um .numeration de ,trin(s #ontendo os nomes
de todos os o)5etos asso#iados a sessoQ
long getCreation-ime(); retorna a Iora em 'ue a sesso &oi #riadaQ
String get$d(); retorna a ,trin( #ontendo o id asso#iado a sessoQ
long get#ast,ccessed-ime(); retorna a 7$tima Iora 'ue o #$iente en<iou uma re'uisio
asso#iada a sessoQ
String getConte"t$d(); retorna a ,trin( #ontendo o identi&i#ador de #onteNto para a sessoQ
String get)ser&id(); retorna o id do usu0rio asso#iado a sessoQ
String get)ser$d(); retorna o usu0rio autenti#ado #om a sessoQ
void remove,ttri!te(String name); remo<e o o)5eto asso#iado #om o nome
espe#i&i#ado da sessoQ
void set,ttri!te(String name, 0!<ect vale); asso#ia um o)5eto f sesso usando
o nome espe#i&i#ado.
1.1!.1.2.!Too$,ession
.sta inter&a#e mode$a uma &erramenta para usu0rios &inais espe#;&i#as para uso em uma sesso. A A9I da
inter&a#e in#$ui <0rios m3todos- $istados a se(uir:
g void clear,ttri!tes(): remo<e todos os atri)utos da sessoQ
Con&iden#ia$ FA9.,9- 90(ina 31
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
g 0!<ect get,ttri!te(String name) : retorna o o)5eto asso#iado #om um nome
espe#i&i#ado na sessoQ
g &nmeration get,ttri!te(ames(): retorna um .numeration de ,trin( #ontendo os nomes de
todos os o)5etos asso#iados a sessoQ
g long getCreation-ime(): retorna a Iora em 'ue a sesso &oi #riadaQ
g String get$d(): retorna uma ,trin( #ontendo o identi&i#ador 7ni#o da sessoQ
g long get#ast,ccessed-ime(): retorna a 7$tima <e? 'ue um #$iente en<iou uma re'uisio para
uma &erramenta de sessoQ
g String getPlacement$d(): retorna uma ,trin( #ontendo o identi&i#ador da &erramenta da sessoQ
g String get)ser&id(): retorna o id do usu0rio asso#iado #om a sessoQ
g String get)ser$d(): retorna o usu0rio autenti#ado asso#iado #om a sessoQ
g void remove,ttri!te(String name) : remo<e o o)5etos asso#iado ao nome espe#i&i#ado
na sessoQ
g void set,ttri!te(String name, 0!<ect vale) : asso#ia um o)5eto usando o nome
espe#i&i#ado a sesso.
1.1!.1.2.6,essionOindin(Too$
.sta inter&a#e representa os e<entos 'ue so en<iados aos o)5etos 'uando estes so asso#iados a sesso ou
desasso#iados de uma sesso. A A9I da inter&a#e in#$ui <0rios m3todos- $istados a se(uir:
String get(ame(): retorna o nome ao 'ua$ o atri)uto est0 asso#iado ou desasso#iado da sessoQ
= Session getSession(): retorna a sesso 'ue asso#ia ou desasso#ia o <a$or do atri)utoQ
0!<ect get>ale(): retorna o <a$or do atri)uto 'ue &oi adi#ionado- remo<ido ou su)stitu;do.
1.1!.1.2.10,essionOindin(Cistener
.sta inter&a#e #ausa f um o)5eto a noti&i#ao de sua asso#iaodesasso#iao em uma sesso. A A9I da
inter&a#e in#$ui <0rios m3todos- $istados a se(uir:
void vale4ond(Session4inding&vent event) : noti&i#a o o)5eto 'ue est0 sendo
asso#iadoQ
void vale)n!ond(Session4inding&vent event) : noti&i#a o o)5eto 'ue est0 sendo
desasso#iado da sesso.
1.1!.1.2.11%e'uestFi$ter
Eo possui do#umentao dispon;<e$.
1.18.1.3 Database
1.1!.1.3.1,BC,er<i#e
O ser<io ,'$,er<i#e pro<: a#esso a um poo$ de #oneNes para )ase de dados ,BC. Os o)5etos do tipo
Conne#tion (eren#iados por esse ser<io so o)5etos 5a<a.s'$.Conne#tion padro. A se(uir so des#ritos os
m3todos dessa inter&a#e:
Con&iden#ia$ FA9.,9- 90(ina 32
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
,onne%'ion +orro0,onne%'ion(# '1ro0- S2&Ex%ep'ion: A#essa um o)5eto Conne#tion
dispon;<e$ ou re#entemente #riado a partir do poo$ de&au$t. 9oder0 esperar um tempo at3 'ue um este5a
dispon;<e$. %etorna o o)5eto Conne#tion e (era uma eN#eo #aso a #oneNo no possa ser entre(ue.
void re'urn,onne%'ion(,onne%'ion %onn#: Ci)era uma #oneNo a )ase de dados ,e o parhmetro
da #oneNo 3 nu$$- 3 i(norada.
+oolean 'ran-a%'(.unna+le %all+a%k, S'ring 'ag#: .Ne#uta #+di(os em uma transao.
O #+di(o 3 #a$$)a#=. Bua$'uer #Iamada para esse ser<io ser0 &eita dentro da transao se e$as no
&orne#erem sua pr+pria #oneNo. ,e a transao &a$Ia de<ido a um deadloc@- sero &eitas tentati<as de
re#uper0-$a. %etorna true #aso tudo o#orra norma$mente. Mera um ,'$,er<i#eDead$o#=.N#eption o m3todo
&or en#errado de<ido a um dead$o#=- e tam)3m (erar0 um ,'$,er<i#eDni'ueVio$ation.
&i-' d+.ead(S'ring -3l#: C: um #ampo da )ase de dados- a partir de m7$tip$os re(istros- retornado
#om um arra@ de ,trin(s- um por re(istro. %etorna uma $ista de ,trin(s do #ampo de um re(istro
en#ontrado- ou <a?io se nenIum &oi en#ontrado.
&i-' d+.ead(S'ring -3l, *+)e%'45 field-, S3l.eader reader#: 9ro#essa uma #onsu$ta-
preen#Iendo os #ampos- e retorna os resu$tados #omo um Cist- um por #ampo $ido. ,e o $eitor 3 &orne#ido-
ser0 #Iamado para #ada re(istro para preparar o O)5e#t 'ue ser0 #o$o#ado na Cist. 9or outro $ado- o
primeiro #ampo de #ada re(istro- #omo um ,trin(- ser0 #o$o#ado na $ista. %etorna a $ista de e$ementos $idos-
um por re(istro.
&i-' d+.ead(,onne%'ion %onn, S'ring -3l, *+)e%'45 field-, S3l.eader reader#: 9ro#essa
uma #onsu$ta- preen#Iendo os #ampos- e retorna os resu$tados #omo um Cist- um por #ampo $ido. ,e o
$eitor 3 &orne#ido- ser0 #Iamado para #ada re(istro para preparar o O)5e#t 'ue ser0 #o$o#ado na Cist. 9or
outro $ado- o primeiro #ampo de #ada re(istro- #omo um ,trin(- ser0 #o$o#ado na $ista. %etorna a $ista de
e$ementos $idos- um por re(istro.
void d+.eadBinar6(S'ring -3l, *+)e%'45 field-, +6'e45 value#: C: um #ampo da )ase de
dados- de m7$tip$os re(istros- #on#atenando os <a$ores )in0rios no parhmetro <a$ue.
void d+.eadBinar6(,onne%'ion %onn, S'ring -3l, *+)e%'45 field-, +6'e45 value#: C: um
#ampo da )ase de dados- de m7$tip$os re(istros- #on#atenando os <a$ores )in0rios no parhmetro <a$ue.
(npu'S'ream d+.eadBinar6(S'ring -3l, *+)e%'45 field-, +oolean +ig# '1ro0-
Server*verloadEx%ep'ion: C: um #ampo re(istro da )ase de dados- retornando o stream do resu$tado
re(istro #ampo. O stream mant3m o #oneNo a)erta Z ento de<e ser &e#Iada ou &ina$i?ada rapidamente.
Cana uma ,er<erO<er$oad.N#eption- se a $eitura no pode ser #omp$etada de<ida a &a$ta de #oneNes
$i<res 8se a espera 3 &a$sa>.
&ong d+(n-er'(,onne%'ion %aller,onne%'ion, S'ring -3l, *+)e%'45 field-, S'ring
au'o,olumn#: .Ne#uta uma #onsu$ta HinsertJ s'$- retornando um poss;<e$ #ampo autoupdate #om o <a$or
Con(. O nome do #ampo da )ase de dados 'ue possuir0 um autoupdate Z ser0 retornado o <a$or uti$i?ado
8use nu$$ para desa)i$itar esse re#urso>. %etorna o <a$or autoupdate- ou nu$$.
&ong d+(n-er'(,onne%'ion %aller,onne%'ion, S'ring -3l, *+)e%'45 field-, S'ring
au'o,olumn, (npu'S'ream la-', in' la-'&eng'1#: .Ne#uta uma #onsu$ta HinsertJ s'$- retornando
um poss;<e$ #ampo autoupdate #om <a$ro Con(- #om um parametro stream adi#iona$. %etorna o <a$or do
autoupdate ou nu$$.
+oolean d+7ri'e(S'ring -3l#: .Ne#uta uma #onsu$ta HFriteJ s'$. %etorna true se eNe#utada #om
su#esso- &a$so #aso #ontr0rio.
+oolean d+7ri'e(S'ring -3l, S'ring var#: .Ne#ute uma #onsu$ta HFriteJ no s'$ Z sem resposta.
Dma #ampo Con( 3 #on&i(urado para HbJ preen#Ie-o #om o parhmetro <ar. %etorna true se eNe#utado #om
su#esso- &a$so #aso #ontr0rio.
Con&iden#ia$ FA9.,9- 90(ina 33
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
+oolean d+7ri'eBinar6(S'ring -3l, *+)e%'45 field-, +6'e45 var, in' off-e', in' len#:
.Ne#ute uma #onsu$ta HFriteJ no s'$ Z sem resposta. Dma #ampo Con( 3 #on&i(urado para HbJ preen#Ie-o
#om o parhmetro <ar. %etorna true se eNe#utado #om su#esso- &a$so #aso #ontr0rio.
+oolean d+7ri'e(S'ring -3l, *+)e%'45 field-#: .Ne#ute uma #onsu$ta HFriteJ no s'$ Z sem
resposta. Dma #ampo Con( 3 #on&i(urado para HbJ preen#Ie-o #om o parhmetro <ar. %etorna true se
eNe#utado #om
su#esso- &a$so #aso #ontr0rio.
+oolean d+7ri'e(,onne%'ion %onne%'ion, S'ring -3l, *+)e%'45 field-#: .Ne#ute uma
#onsu$ta HFriteJ no s'$ Z sem resposta. Dma #ampo Con( 3 #on&i(urado para HbJ preen#Ie-o #om o
parhmetro <ar. %etorna true se eNe#utado #om su#esso- &a$so no #ontr0rio.
+oolean d+7ri'eFail2uie'(,onne%'ion %onne%'ion, S'ring -3l, *+)e%'45 field-#: .Ne#uta
uma #onsu$ta HFriteJ s'$ Z sem resposta- uti$i?ando um #on5unto de #ampos a partir de um arra@ e uma
#oneNo dados- no re(istrando erros em #aso de &a$Ia. %etorna true se eNe#utada #om su#esso- &a$so #aso
#ontr0rio.
+oolean d+7ri'e(S'ring -3l, *+)e%'45 field-, S'ring la-'Field#: .Ne#uta uma #onsu$ta
HFriteJ s'$ Z sem resposta- uti$i?ando um #on5unto de #ampos a partir de um arra@ mais a$(uns parametros.
%etorna true se eNe#utado #om su#esso- &a$so #aso #ontr0rio.
void d+.eadBlo+And8pda'e(S'ring -3l, +6'e45 %on'en'#: C: um #ampo OCOO a partir da
)ase de dados de um re(istro- e atua$i?a seus )@tes #om o parhmetro #ontent.
,onne%'ion d+.ead&o%k(S'ring -3l, S'ringBuffer field#: C: um #ampo a partir da )ase de
dados- de um re(istro- e retorna o <a$or en#ontrado- e tra<a para update. %etorna a #oneNo mantendo a
tra<a.
void d+8pda'e,ommi'(S'ring -3l, *+)e%'45 field-, S'ring var, ,onne%'ion %onn#:
%ea$i?a o #ommit do update tra<ado na #oneNo espe#i&i#ada.
void d+,an%el(,onne%'ion %onn#: Can#e$a o update 'ue &oi tra<ado na #oneNo espe#i&i#ada.
9regorian,alendar ge',al(#: A#essa o #a$end0rio usado para pro#essar o)5etos do tipo Time para
,'$. %etorna o #a$end0rio usado no pro#essamento de o)5etos Time para ,'$.
S'ring ge':endor(#: %etorna uma strin( indi#ando o &orne#edor da )ase de dados Hora#$eJ- Hm@s'$J
ou HIs'$d)J.
void ddl(,la--&oader loader, S'ring re-our%e#: Carre(a e eNe#uta o ar'ui<o nomeado usando
um #$ass $oader dados- #omo um dd$ #Ie#= #reate. A primeira $inIa no #oment0rio 8WW> ser0 eNe#utada e- se
eNe#utada #om su#esso- todas $inIas no #oment0rio sero eNe#utadas. De#$araes ,BC de<em estar em
uma 7ni#a $inIa- e de<e possuir WQW #omo terminadores.
&ong ge'Nex'Se3uen%e(S'ring 'a+leName, ,onne%'ion %onn#: %e#upera o pr+Nimo <a$or
a partir de uma se'd:n#ia- para as te#no$o(ias 'ue suportam se'd:n#ias. 9ara outras- retorna nu$$. %etorna
um Inte(er 'ue 3 o pr+Nimo e$emento a se'd:n#ia.
S'ring ge'Boolean,on-'an'(+oolean value#: %e#upera a de#$arao ,BC para um Ooo$ean ou
um #ampo Oit para esse <a$or.
1.1!.1.3.2,BC%eader
,'$%eader 3 uma inter&a#e para o)5etos 'ue podem $er e$ementos de uma re'uisio ,'$ de um %esu$t,et
*+)e%' readS3l.e-ul'.e%ord(.e-ul'Se' re-ul'#: C: #ampos a partir de um %esu$t,et #riando
um o)5eto 'ue 3 retornado.
Con&iden#ia$ FA9.,9- 90(ina 3*
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
1.18.1.4Server Push
1.1!.1.*.1Courier,er<i#e
Courier,er<i#e 3 a inter&a#e para um ser<io ,a=ai no 'ua$ 3 poss;<e$ empurrar mensa(ens a partir do
#omponentes do ser<idor ,a=ai para a inter&a#e do usu0rio no na<e(ador. P usado (era$mente por uma
&erramenta em parti#u$ar para atua$i?0-$a em resposta a uma mudana posta pe$o ser<idor. Dm endereo
identi&i#a uma 5ane$a do #$iente em parti#u$ar: &undem-se a sesso Dsa(e- o endereo das 5ane$as do porta$ e
possi<e$mente o id da &erramenta 8para 5ane$as &$utuantes de &erramentas>. Dm o)5eto De$i<er@ #aptura o
endereo- o 1TAC .$ement Id en<o$<ido- e 'uais'uer outros deta$Ies de um tipo em parti#u$ar de entre(a.
10 uma strin( de&inida na inter&a#e 'ue ser<e para en#ontrar o respe#ti<o ser<io no ,er<i#eAana(er:
static +inal String S<=>,.<?@6&< = .ourierService.class.get@ame12/
A)aiNo se(uem os m3todos da inter&a#e:
void deliver(Deliver6 deliver6#: .n&i$eira um entre(a para uma 5ane$a #$iente identi&i#ada em um
o)5eto De$i<er@. A &ormato da entre(a 3 determinada pe$o tipo de o)5eto De$i<er@ en<iado.
void %lear(S'ring addre--, S'ring elemen'(d#: Cimpa 'ua$'uer re'uisio de entre(a pendente
para uma 5ane$a #$iente para o e$emento passado pe$o parhmetro e$ementId.
void %lear(S'ring addre--#: Cimpa 'ua$'uer re'uisio de entre(a pendente para a sesso da 5ane$a
#$iente.
&i-' ge'Deliverie-(S'ring addre--#: A#essa e desin&i$eira as entre(as en&i$eiradas para uma 5ane$a
#$iente em parti#u$ar. %etorna a $ista de o)5eto De$i<er@ endereadas para a sesso da 5ane$a #$iente.
!oolean +as'eliveries(String address): Veri&i#a a eNist:n#ia de 'uais'uer entre(as
en&i$eiradas para uma sesso de uma 5ane$a #$iente. %etorna true se I0 entre(as para a 5ane$a #$iente- &a$so
no #aso #ontr0rio.
1.1!.1.*.2De$i<er@
De$i<er@ 3 a inter&a#e #entra$ para e$ementos en<iados para o ser<io Courier 'ue representam <0rios
arran5os de entre(a para 5ane$as #$ientes. Address 3 o endereo de uma 5ane$a #$iente. ,e(ue os m3todos da
inter&a#e:
g <oid setAddress8,trin( address>: Con&i(ura o endereo de entre(a.
g ,trin( (etAddress8>: A#essa o endereo de entre(a. %etorna o endereo de entre(a.
g <oid set.$ement8,trin( id>: Con&i(ura o 1TAC .$ement Id 'ue 3 re&eren#iado na entre(a.
g ,trin( (et.$ement8>: A#essa o 1TAC .$ement Id 'ue 3 re&eren#iado nesse entre(a. %etorna o 1TAC
.$ement Id
g <oid a#t8>: .Ne#uta 'ua$'uer ao prede&inida. Eota: 3 eNe#utada na mesma sesso na 'ua$ est0 sendo
entre(ue.
g ,trin( #ompose8>: Compe uma mensa(em 5a<as#ript para entre(a na 5ane$a #$iente do na<e(ador.
%etorna a mensa(em 5a<as#ript para en<iar f 5ane$a #$iente do na<e(ador.
1.1!.1.*.3O)ser<in( Courier
O)ser<in(Courier 3 um o)ser<ador 'ue usa o Courier,er<i#e para noti&i#ar 'uando I0 mudanas.
Con&iden#ia$ FA9.,9- 90(ina 3/
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
+oolean %1e%k(*+)e%' arg#: Veri&i#a se 'ueremos pro#essar ou i(norar um update passado pe$o
parhmetro ar(. %etorna true para #ontinuar- &a$so para en#errar a operao.
void di-a+le(#: Desa)i$ita.
void ena+le(#: 1a)i$ita.
S'ring ge'Deliver6(d(#: %etorna o id de entre(a.
S'ring ge'Elemen'(d(#: %etorna o id do e$emento.
+oolean ge'Ena+led(#: %etorna o status de Ia)i$itao.
S'ring ge'&o%a'ion(#: %etorna a $o#a$i?ao do 'ue o o)ser<ador est0 o)ser<ando.
void )u-'Delivered(#: A#eita noti&i#ao 'ue o e$emento a#a)ou de ser entre(ue. ,e I0 re'uisies
pendentes de entre(a- e$as so ?eradas.
void -e'Deliver6(d(S'ring id#: Con&i(ura o id de entre(a.
<oid set.$ementId8,trin( id>: Con&i(ura o e$emento de entre(a.
1.18.1.5Email ut
1.1!.1./.1Di(est
Di(est arma?ena #on5untos de mensa(ens para um dado usu0rio 8id>. A se(uir os m3todos dispon;<eis nessa
#$asse.
S'ring ge'(d(#: A#essa o id do usu0rio para esta di(est. %etorna o id do usu0rio.
&i-' ge'Me--age-(;ime period#: A#essa a $ista de mensa(ens 8Di(estAessa(e>- por um per;odo.
%etorna a $ista de mensa(ens 8ta$<e? <a?ia>.
&i-' ge'/eriod-(#: A#essa a $ista de de per;odos 8,trin(- Time9eriod strin(>. %etorna a $ista de
per;odos 8,trin(- Time9eriod strin(>.
1.1!.1./.2Di(estAessa(e
Di(estAessa(e 3 uma mensa(em em uma di(est. A se(uir esto $istados os m3todos da inter&a#e:
S'ring ge';o(#: A#essa o HparaJ 8user id> da mensa(em. %etorna o HparaJ 8to> 8user id> da mensa(em.
void -e';o(S'ring 'o#: Con&i(ura o HparaJ 8user id> da mensa(em.
S'ring ge'Su+)e%'(#: A#essa o assunto da mensa(em. %etorna o assunto da mensa(em.
void -e'Su+)e%'(S'ring -u+)e%'#: Con&i(ura o assunto da mensa(em
S'ring ge'Bod6(#: A#essa o #orpo da mensa(em. %etorna o #orpo da mensa(em.
void -e'Bod6(S'ring +od6#: Con&i(ura o #orpo da mensa(em.
1.1!.1./.3Di(est,er<i#e
O Di(est,er<i#e #o$e#iona #on5untos de mensa(ens para di&erentes usu0rios- e en<ia-as periodi#amente.
Conte7do est0ti#o da inter&a#e:
.ssa strin( pode ser usada para en#ontrar o ser<io no ,er<i#eAana(er.
-'a'i% final S'ring SE.:(,E<NAME = Dige-'Servi%e$%la--$ge'Name(#>
Con&iden#ia$ FA9.,9- 90(ina 34
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
.ssa strin( ini#ia as re&er:n#ias para re#ursos nesse ser<io.
-'a'i% final S'ring .EFE.EN,E<.**; = ?dige-'?>
.<ento para adi#ionar um di(est
-'a'i% final S'ring SE,8.E<ADD<D(9ES; = ?dige-'$add?>
.<ento para atua$i?ar um di(est
-'a'i% final S'ring SE,8.E<ED(;<D(9ES; = ?dige-'$upd?>
.<ento para remo<er um di(est
-'a'i% final S'ring SE,8.E<.EM*:E<D(9ES; = ?dige-'$del?>
A3todos da inter&a#e:
Dige-' ge'Dige-'(S'ring id# '1ro0- (d8nu-edEx%ep'ion: A#essa uma di(est asso#iada #om o
id passado por parhmetro. %etorna o o)5eto Di(est. Cana uma eN#eo IdDnused.N#eption se no I0 um
o)5eto di(est #om o id passado no parhmetro.
&i-' ge'Dige-'-(#: A#essa todos os o)5etos di(ests. %etorna a $ista de todos os di(ests de&inidos.
void dige-'(S'ring 'o, S'ring Su+)e%', S'ring +od6#: Adi#iona uma no<a mensa(em para o
di(est- #riando uma se ne#ess0rio. .ssa &unes retorna distanteQ o di(est ser0 adi#ionado to $o(o 'uanto
poss;<e$.
Dige-'Edi' add(S'ring id# '1ro0- (d8-edEx%ep'ion: Adi#iona uma no<a di(est #om a id
passada pe$o parhmetro. De<em ser eNe#utados um #ommit8>- remo<e 8> ou #an#e$ 8> ap+s sua eNe#uo.
%etorna um no<o o)5eto Di(est.dit para edio. Cana um IdDser.N#eption se esses di(est 50 eNistem.
Dige-'Edi' edi'(S'ring id# '1ro0- (n8-eEx%ep'ion: %e#upera um o)5eto Di(est )$o'ueado
para edio. 9ode ser um no<o. De<em ser eNe#utados um #ommit8>- #an#e$8> ou remo<e8> ap+s sua
eNe#uo. %etorna um o)5eto Di(est.dit para edio. A eN#eo InDse.N#eption 3 $anada #aso o o)5eto
di(est est0 )$o'ueado para outro usu0rio.
void %ommi'(Dige-'Edi' edi'#: .n<ia as mudanas &eitas para um o)5eto Di(est.dit- e $i)era o
)$o'ueio. O Di(est.dit 3 desa)i$itado- e no 3 uti$i?ado ap+s a #Iamada desse m3todo.
void %an%el(Dige-'Edi' edi'#: Can#e$a as mudanas &eitas por um o)5eto Di(est.dit- $i)era o
)$o'ueio. O Di(est.dit 3 desa)i$itado e no uti$i?ado ap+s a #Iamada desse m3todo.
void remove(Dige-'Edi' edi'#: %emo<e o o)5eto Di(est.dit do parhmetro Z de<e ser tra<ado a
partir de um edit8>. O Di(est.dit 3 desa)i$itado e no mais uti$i?ado ap+s a #Iamada f esse m3todo.
1.1!.1./.*.mai$,er<i#e
.mai$,er<i#e 3 uma inter&a#e para en<io de emai$s.
void -endMail((n'erne'Addre-- from, (n'erne'Addre--45 'o, S'ring -u+)e%', S'ring
%on'en', (n'erne'Addre--45 1eader;o, (n'erne'Addre--45 repl6;o, &i-'
addi'ional@eader-#: Cria e en<ia um mensa(em (en3ri#a de teNto AIA. para o endereo des#rito pe$o
parhmetro to.
void -end(S'ring fromS'r, S'ring 'oS'r, S'ring -u+)e%', S'ring %on'en', S'ring
1eader;oS'r, S'ring repl6;oS'r, &i-' addi'ional@eader-#: Cria e en<ia uma mensa(em (en3ri#a
de teNto AIA. para o endereo des#rito pe$o parhmetro to.
void -end;o8-er-(,olle%'ion u-er-, ,olle%'ion 1eader-, S'ring me--age#: .n<ia uma
mensa(em simp$es para um #on5unto de usu0rios.
Con&iden#ia$ FA9.,9- 90(ina 3"
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
1.18.1.!Memor" Ca#he
1.1!.1.4.1Ca#Ie
.sta inter&a#e representa um #a#Ie 'ue arma?ena o)5etos re&eren#iados por #Ia<es #om tamanIo $imitado.
A A9I da inter&a#e in#$ui <0rios m3todos- $istados a se(uir:
g void pt(0!<ect key, 0!<ect payload, int dration): arma?ena um o)5etoQ
g void pt(0!<ect key, 0!<ect payload) : arma?ena um o)5eto 'ue no eNpira
automati#amenteQ
g !oolean contains;ey&"pired0r(ot(0!<ect key) : testa se uma entrada no #a#Ie
eNpirou ou noQ
g !oolean contains;ey(0!<ect key) : testa se uma entrada no #a#Ie eNpirouQ
g void e"pire(0!<ect key) : eNpira um o)5etoQ
g 0!<ect get&"pired0r(ot(0!<ect key) : )us#a uma entrada de um o)5eto no #a#IeQ
g 0!<ect get(0!<ect key) : )us#a um o)5eto no #a#Ie se no eNpirouQ
g #ist get,ll(): )us#a todas as entradas 'ue no eNpiraramQ
g #ist get,ll(String pat+) : )us#a todos as entradas no eNpiradas no #aminIo espe#i&i#adoQ
g #ist get;eys(): )us#a todas as #Ia<es do #a#IeQ
g #ist get$ds(): )us#a todas as #Ia<es do #a#Ie de re#ursos modi&i#ados se(undo os seus IdsQ
g void clear(): $impa todas as entradasQ
g void remove(0!<ect key) : remo<e a entrada do #a#IeQ
g void disa!le(): desa)i$ita o #a#IeQ
g void ena!le(): Ia)i$ita o #a#IeQ
g !oolean disa!led(): in&orma se o #a#Ie est0 desa)i$itadoQ
g !oolean isComplete(): retorna se o #a#Ie est0 #omp$etoQ
g void setComplete(): de&ine 'ue o #a#Ie est0 #omp$eto #ontendo todas as entradas poss;<eisQ
g !oolean isComplete(String pat+) : retorna se o #a#Ie est0 #omp$eto para um n;<e$ de
re&eren#ia na Iierar'uiaQ
g void setComplete(String pat+) : de&ine o #a#Ie #omo #omp$etado para um n;<e$ de
Iierar'uiaQ
g void +old&vents(): de&ine o #a#Ie para arma?enar pro#essamentos em )at#IQ
g void process&vents(): restaura o pro#essamento norma$ de e<entos do #a#IeQ
g void destroy(): $impa todas as entradas e da um sIutdoFn no #a#IeQ
g void attac+'erivedCac+e('erivedCac+e cac+e) : aneNa o Deri<edCa#Ie ao #a#Ie.
1.1!.1.4.2Ca#Ier
P a inter&a#e usada por 'ua$'uer o)5eto 'ue 3 arma?enado no #a#Ie. A A9I da inter&a#e in#$ui <0rios
m3todos- $istados a se(uir:
Con&iden#ia$ FA9.,9- 90(ina 3!
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
void resetCac+e(): $impa tudo 'ue esti<er no #a#IeQ
long getSi%e(): retorna o tamanIo do #a#Ier em termos de mem+ria usadaQ
String get'escription(): retorna a des#ri#ao do #a#Ier.
1.1!.1.4.3Aemor@,er<i#e
P a inter&a#e para o uso de mem+ria do ,a=ai. A A9I da inter&a#e in#$ui <0rios m3todos- $istados a se(uir:
long get,vaila!leMemory(): retorna a 'uantidade de mem+ria dispon;<e$Q
void resetCac+ers() t+ro/s MemoryPermission&"ception: #ausa perda de
mem+ria a ser usada para a $impe?a de #a#Ies op#ionaisQ
void registerCac+er(Cac+er cac+er) : re(istra #omo um usu0rio do #a#IeQ
void nregisterCac+er(Cac+er cac+er) : retira o o)5eto do re(istro do #a#IeQ
Cac+e ne/Cac+e(Cac+eRe1res+er re1res+er, String pattern) : #onstr+i um
#a#IeQ
Cac+e ne/*ardCac+e(Cac+eRe1res+er re1res+er, String pattern) : #onstr+i
um #a#Ie espe#ia$Q
Cac+e ne/Cac+e(Cac+eRe1res+er re1res+er, long sleep) : #onstr+i um #a#Ie e
automati#amente atua$i?a o tratamentoQ
Cac+e ne/*ardCac+e(Cac+eRe1res+er re1res+er, long sleep) : #onstr+i um
#a#IeQ
Cac+e ne/*ardCac+e(long sleep, String pattern) : #onstr+i um #a#IeQ
Cac+e ne/Cac+e(): #onstr+i um #a#Ie #om tratamento autom0ti#oQ
Cac+e ne/*ardCac+e(): #onstr+i um #a#Ie se tratamento autom0ti#oQ
MltiRe1Cac+e ne/MltiRe1Cac+e(long sleep) : #onstr+i um #a#Ie mu$tire&eren#iadoQ
String getStats(): retorna o status da mem+ria dos usu0rios.
1.18.1.$%tilities
Dti$ities do ,a=ai di<idem-se em duas #ate(orias: ser<ios e #$asses. ,er<ios so de&inidos por inter&a#es e
possuem um (eren#iador- en'uanto o resto no possui um (eren#iador- mas eNistem #omo #$asses iso$adas.
1.1!.1.".1.N#eptions
Eo eNiste do#umentao dispon;<e$.
1.1!.1.".2Id Aana(er
IdAana(er 3 a inter&a#e de tra)a$Io para a A9I do ,a=ai Id Aana(er (erar ids 7ni#os. A se(uir a assinatura
do m3todo dessa #$asse.
String create)id(): A$o#a um Id 7ni#o e o retorna.
1.1!.1.".3TIreadCo#a$Aana(er
Con&iden#ia$ FA9.,9- 90(ina 36
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
TIreadCo#a$Aana(er pro<: re(istro e des#o)erta de o)5etos #er#ados pe$a re'uisio atua$ de
pro#essamento ou tIread. C$ientes 'uem possuem o)5etos podem #on&i(urar ou re#uper0-$os a sua <ontade
Z O ,a=ai FrameFor= asse(ura 'ue todo o #on5unto de o)5etos perten#entes ao pro#essamento atua$ 3 $impo
'uando o pro#essamento da re'uisio 3 #omp$etado.
void -e'(S'ring name, *+)e%' value#: Amarra esse o)5eto so) o nome passado por parhmetro
#om a tIread atua$- ou remo<e-o se o <a$or 3 nu$$.
void %lear(#: %emo<e todos os o)5etos amarrados para tIread atua$.
*+)e%' ge'(S'ring name#: .n#ontra o o)5eto nomeado perten#ente a tIread atua$. %etorna o o)5eto
dado pe$o parhmetro nome- ou nu$$ se no en#ontrado.
1.1!.1.".*Time,er<i#e
O tipo strin( para essa Hap$i#aoJ: no de<e ser a$terado no de#orrer do tempo assim #omo pode ser
arma?enado em <0rias partes de entidades persistentes.
-'a'i% final S'ring A//&(,A;(*N<(D = ?-akai:'ime?>
ii 9re&eren#es =e@ &or userWs time ?one i
pu+li% -'a'i% final S'ring ;(MEA*NE<BEC = ?'imeDone?>
;ime ne0;ime(#: .e#upera um o)5eto time e retorna-o.
;ime ne0;ime9m'(S'ring value#: %e#upera um o)5eto time e o #on&i(ura a partir do <a$or da
strin( passada no parhmetro em nosso &ormato.
;ime ne0;ime(long value#: %e#upera um o)5eto time- seta-o a partir do <a$or- passado por
parhmetro- $on( em mi$isse(undos desde o <a$or Hepo#J.
;ime ne0;ime(9regorian,alendar %al#: %e#upera um o)5eto time- )aseado no tempo
#on&i(urado no #a$endar.
;ime ne0;ime9m'(in' 6ear, in' mon'1, in' da6, in' 1our, in' minu'e, in' -e%ond, in'
milli-e%ond#: %e#upera um o)5eto time- a partir de <a$ores inteiros indi<iduais- em medidas MAT.
;ime ne0;ime9m'(;imeBreakdo0n +reakdo0n#: %e#upera um o)5eto time e o #on&i(ura a
partir da parhmetro )rea=doFn 8<a$ores Mmt>.
;ime ne0;ime&o%al(in' 6ear, in' mon'1, in' da6, in' 1our, in' minu'e, in' -e%ond, in'
milli-e%ond#: %e#upera um o)5eto time e o #on&i(ura a partir de <a$ores inteiros indi<iduais- <a$ores
$o#ais.
;ime ne0;ime&o%al(;imeBreakdo0n +reakdo0n#: %e#upera um o)5eto time e o #on&i(ura a
partir do parhmetro )rea=doFn 8<a$ores $o#ais>.
;imeBreakdo0n ne0;imeBreakdo0n(in' 6ear, in' mon'1, in' da6, in' 1our, in'
minu'e, in' -e%ond, in' milli-e%ond#: .e#upera um o)5eto TimeOrea=doFn e o #on&i(ura a partir de
inteiros indi<iduais.
;ime.ange ne0;ime.ange(;ime -'ar', ;ime end, +oolean -'ar'(n%luded, +oolean
end(n%luded#: %e#upera um o)5eto Time%an(e- a partir de partes.
;ime.ange ne0;ime.ange(S'ring value#: %e#upera um Time%an(e- a partir de nosso &ormato
de strin(.
;ime.ange ne0;ime.ange(;ime -'ar'AndEnd#: %e#upera Time%an(e- a partir de um tempo
simp$es.
Con&iden#ia$ FA9.,9- 90(ina *0
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
;ime.ange ne0;ime.ange(long -'ar', long dura'ion#: %e#upera um Time%an(e- a partir
de <a$ores $on( de in;#io e durao.
;ime.ange ne0;ime.ange(;ime -'ar', ;ime end#: %e#upera um Time%an(e- a partir de
dois tempos- in#$usi<e.
;imeAone ge'&o%al;imeAone(#: A#essa o Timejone $o#a$ e a retorna.
+oolean %lear&o%al;imeAone(S'ring u-er(d#: Cimpa ?ona de tempo $o#a$ para um usu0rio em
espe#;&i#o. %etorna true em #aso de su#esso.
9regorian,alendar ge',alendar(;imeAone Done, in' 6ear, in' mon'1, in' da6, in'
1our, in' min, in' -e%, in' m-#: %e#upera um #a$end0rio e o #on&i(ura para a ?ona espe#i&i#ada no
parhmetro e os demais <a$ores.
+oolean differen'(;ime a, ;ime +#: Compara dois tempo por di&erenas. Am)os podem ser nu$$.
%etorna true se os tempos so di&erentes ou retorna &a$so #aso #ontr0rio.
1.1!.1."./Co(Con&i(urationAana(er
Co(Con&i(urationAana(er pro<: #ontro$e em tempo de eNe#uo so)re o a#esso a mensa(ens de $o((in(.
+oolean -e'&og&evel(S'ring level, S'ring logger# '1ro0- &og/ermi--ionEx%ep'ion:
Con&i(ura o n;<e$ de $o((in( para um $o((er. O n;<e$ de $o((in(: OFF k T%AC. k
D.ODM k IEFO k LA%E k .%%O% k FATAC k ACC. %etorna true em #aso de su#esso- &a$so se
no 8pode ser um n;<e$ ruim- ou um $o((er no eNiste>. Cana uma eN#eo #aso o usu0rio atua$ no tenIa
permisso #on&i(urada para esse n;<e$ de $o(.
!.!%.2In/ormationa- Ser+i)es
Ver deta$Ies em 8,AGAI- 200"d>.
7. Inte0rao de /erramentas no )ompatL+eis )om o SaBai
A mi(rao de a$(umas &erramentas do Tidia-A. para o ,a=ai pode ser )astante #omp$i#ada. Como o
Tidia-A. #onta #om um ser<idor de ap$i#ao 22.. #omp$eto 82)oss>- a$(umas das suas &erramentas usam re#ursos
'ue no esto dispon;<eis no ser<idor de ap$i#ao do ,a=ai 8Tom#at>. A$(uns desses re#ursos podem ser os .2Os-
2A,- et#.
.n'uanto os re#ursos ne#ess0rios para o &un#ionamento da &erramenta no so disponi)i$i?ados para a
p$ata&orma ,a=ai- pode-se esta)e$e#er um #ana$ de #omuni#ao #om o Tidia-A.. Tendo em mente 'ue esta 3 uma
medida pa$iati<a- pois as &erramentas de<em o)ede#er os #rit3rios adotados pe$a &ase II do pro5eto.
10 duas possi)i$idades de inte(rao: tra?er o ,a=ai para dentro do 2)ossQ ou &a?er #om 'ue as &erramentas
,a=ai no Tom#at #Iamem um ser<idor remoto 2)oss. Fi?emos uma tentati<a- #om a primeira possi)i$idade- )aseada
nas in&ormaes &orne#idas pe$o Andr3 Constantino da ,i$<a do n7#$eo de Campinas. .ssa so$uo #onsiste na
mi(rao do ,a=ai para o 2)oss.
A id3ia 3 )astante interessante. Ter;amos um ser<idor de ap$i#ao #om as duas ap$i#aes- &a?endo #om
'ue e$as se #omuni'uem HinternamenteJ. Dm 7ni#o ser<idor de ap$i#ao seria usado para desen<o$<imento. 9or3m-
a <erso do 2)oss 3 superior f <erso usada no Tidia- o 'ue pode tra?er a$(uns pro)$emas de #ompati)i$idade fs
&erramentas. A$3m disso- no sa)emos #omo o ,a=ai se #omporta nesse no<o am)iente- pois no ti<emos tempo de
rea$i?ar testes mais #omp$etos.
Con&iden#ia$ FA9.,9- 90(ina *1
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
!.!CDep-o3 do SaBai no 1,oss
9ara o dep$o@ do ,a=ai no 2)oss- 3 ne#ess0rio 'ue os passos 2.1 a 2.6 do t+pi#o de Con&i(urao de
Am)iente tenIam sido rea$i?ados #om su#esso.
Faa o doFn$oad do 2)oss *.2.1.MA:
Ittp:$a)s.5)oss.#om5)ossasdoFn$oads
O)s: 9ara a <erso 2.* do ,a=ai- 3 ne#ess0ria esta <erso do 2)oss. Isto pode #ausar a$(uma
in#ompati)i$idade #om a &erramenta Tidia-A.- tendo em <ista 'ue a <erso uti$i?ada 3 a *.0.2. .ste estudo de<e ser
&eito para #ada &erramenta.
Des#ompa#te o ar'ui<o no diret+rio de insta$ao da sua pre&er:n#ia. CIamaremos a'ui o $o#a$ de
insta$ao do 2)oss de 2OO,,T1OA..
Faa o doFn$oad do dri<er A@,'$ /.0.NN:
Ittp:de<.m@s'$.#omdoFn$oads#onne#tor5/.0.Itm$
,a$<e o 5ar na pasta 2OO,,T1OA.ser<erde&au$t$i).
A)ra o ar'ui<o de #on&i(urao $o#a$i?ado em sa=ai-sr#d)d)-imp$pa#=sr#Fe)appL.O-
IEF#omponents.Nm$. A$tere o ar'ui<o #omo indi#ado a)aiNo:
[l-- TIe &u$$@ 'ua$i&ied 2a<a #$ass name o& tIe 2DOC dri<er to )e used. --\
[propert@ nameUSdri<erC$assEameS\
[<a$ue\#om.m@s'$.5d)#.Dri<er[<a$ue\
[propert@\
[l-- TIe #onne#tion D%C to )e passed to our 2DOC dri<er to esta)$isI a
#onne#tion. --\
[propert@ nameUSur$S\
[<a$ue\5d)#:m@s'$:$o#a$Iost:3304sa=ai[<a$ue\ sa=ai data)ase name in @our A_,BC
[propert@\
[l-- TIe #onne#tion username to )e passed to our 2DOC dri<er to esta)$isI a
#onne#tion. --\
[propert@ nameUSusernameS\
[<a$ue\sa=aiuser[<a$ue\ user #ode o& @our A@,BC
[propert@\
[l-- TIe #onne#tion passFord to )e passed to our 2DOC dri<er to esta)$isI a
#onne#tion. --\
[propert@ nameUSpassFordS\
[<a$ue\passFord[<a$ue\ passFord o& @our A@,BC
[propert@\
As se(uintes $inIas &a?em #om 'ue o 2)oss i(nore sua imp$ementao 2,F nati<a. Isto 3 ne#ess0rio- pois o
,a=ai 2.* usa 2,F 1.1 e o 2)oss 2,F 1.2.
[#onteNt-param\
Con&iden#ia$ FA9.,9- 90(ina *2
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
[param-name\or(.5)oss.5)oss&a#es.LA%TODEDC.,T2,FTIA9C[param-name\
[param-<a$ue\true[param-<a$ue\
[#onteNt-param\
%epita isso no ar'ui<o sr#VFe)appVL.O-IEFVFe).Nm$ das se(uintes pastas:
mai$too$Vmai$too$
ospAcommonAtool
ospAjs+AeBample
ospAportalAtool
ospApresentationAtool
ospAreportsAtool
ospA-iCardAtool
podcastsApodcasts
blogAtool
calendarAcalendar-summary-toolAtool
chatAchat-toolAtool
gradebookAtestservice-tool
gradebookAappAsakai-tool
helpAhelp-tool
js+AeBample
msgcntrAmessage+orums-app
podcastsApodcasts-app
postemApostem-app
presentationAtool
pro+ileApro+ile-app
rosterAroster-app
samplesAsample-tool-js+
jobschedulerAscheduler-tool
sectionsAsections-app
syllabusAsyllabus-app
toolAtool-toolAsu
userAuser-tool-admin-pre+sAadmin-pre+s
userAuser-tool-pre+sAtool
usermembershipAtool
samAsamigo-appAsakai-samigo
A)ra o prompt no diret+rio sa=ai-sr# e eNe#ute o se(uinte #omando:
ma<en sa=ai
Ao &im de um HOui$d ,u##ess&u$J- todos os ar'ui<os ne#ess0rios ao dep$o@ do ,a=ai &oram
#o$o#ados no CATACIEAT1OA.- diret+rio de insta$ao do Tom#at. Os se(uintes passos #opiam os
ar'ui<os do ,a=ai do CATACIEAT1OA. para o 2OO,,T1OA..

Copie a pasta #omponents 8e todos seus ar'ui<os> de CATACIEAT1OA. para a pasta
2OO,,T1OA.ser<erde&au$t.
Con&iden#ia$ FA9.,9- 90(ina *3
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
Copie todos os ar'ui<os .Far de CATACIEAT1OA.Fe)apps para a pasta
2OO,,T1OA.ser<erde&au$tdep$o@.
A$(uns #omponentes do ,a=ai ainda no puderam ser portados- por isso eN#$ua os se(uintes
ar'ui<os:
mai$too$.Far
osp-presentation-too$.Far
osp-reports-too$.Far
Copie o ar'ui<o sa=ai-da<-ser<er-sa=aiT2-1-1.5ar de CATACIEAT1OA.ser<er$i) para
2OO,,T1OA.$i).
Copie todos os 5ars da pasta CATACIEAT1OA.sIared$i) para
2OO,,T1OA.ser<erde&au$t$i).
Copie todos os 5ars da pasta CATACIEAT1OA.#ommon$i) para
2OO,,T1OA.ser<erde&au$t$i).
Crie uma no<a pasta Hsa=aiJ em 2OO,,T1OA.ser<erde&au$t.
Copie o ar'ui<o sa=ai.properties da pasta CATACIEAT1OA.sa=ai para a pasta
2OO,,T1OA.ser<erde&au$tsa=ai.
Ini#ie o 2)oss e <eri&i'ue 'ue o sa=ai est0 no ar. Mera$mente a p0(ina ini#ia$ en#ontra-se em:
Ittp:$o#a$Iost:!0!0porta$
!.20Inte0rao de uma /erramenta SaBai )om )omponentes do TidiaHAe
1. Criamos um no<o site #Iamado Teste1e$$o 8Lor=,ite ,etup \ EeF \ 9ro5e#t Le)site \ Teste1e$$o> e
permitimos 'ue outros usu0rios a&i$iem-se.
2. Criamos um no<o pro5eto 1e$$o Lor$d uti$i?ando o p$u(in ,a=ai App Oui$der.89ro5e#t Eame: Ie$$oFor$d-
=e@ name: 1e$$oLor$d- pa#=a(e pre&iN: or(.sa=aipro5e#t- 9ro5e#t T@pe: 2,9- Imp$ementation: 1e$$o Lor$d
app>
Con&iden#ia$ FA9.,9- 90(ina **
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
3. Adi#ionamos duas depend:n#ias do ,a=ai e duas do Tidia-Ae no ar'ui<o too$pro5e#t.Nm$ 8Cista(em 1>
<dependency>
<groupId>sakaiproject</groupId>
<artifactId>sakai-user-api</artifactId>
<version>${sakai.version}</version>
</dependency>
<dependency>
<groupId>sakaiproject</groupId>
<artifactId>sakai-entity-api</artifactId>
<version>${sakai.version}</version>
</dependency>
<dependency>
<groupId>tidia</groupId>
<artifactId>comm</artifactId>
<version>client</version>
<type>jar</type>
<properties>
<war.bundle>true</war.bundle>
</properties>
</dependency>
<dependency>
<groupId>tidia</groupId>
<artifactId>jbossall</artifactId>
<version>client</version>
<type>jar</type>
<properties>
<war.bundle>true</war.bundle>
</properties>
</dependency>
*. Criamos uma pasta tidia5ars no nosso reposit+rio $o#a$ 8Iomeusuario.ma<enrepositor@tidia5ars> e
#o$o#amos os 5ars re&eren#iados do Tidia 85)ossa$$-#$ient.5ar e #omm-#$ient.5ar> nesta pasta.
4. Criamos uma pasta $i) no diret+rio too$sr#Fe)appL.O-IEF e #o$o#amos as depend:n#ias do Tidia-
Ae: 5)ossa$$-#$ient.5ar e #omm-#$ient.5ar ne$a.
". Adi#ionamos esses 5ars ao )ui$d patI da ap$i#ao no .#$ipse.
!. Criamos uma #$asse CommConne#tion para rea$i?ar a #oneNo #om o .2O do ser<io de #omuni#ao do
Tidia-Ae. .sta #$asse &a? o $oo=up do .2O e retorna uma re&er:n#ia a e$e por meio do m3todo
(etCommConn8>. 8Cista(em 2>
6. Eo ar'ui<o 1e$$oLor$d.5sp 8Cista(em 3> uti$i?amos um o)5eto #o<er do ,a=ai para o)ter uma
re&er:n#ia do ser<io de usu0rios 8DserDire#tor@,er<i#e>.
10. O)temos 'uais usu0rios esto #adastrados em nosso site 8#onteNto>.
11. O)temos uma re&er:n#ia do )ean CIanne$A(t e o uti$i?amos para #riar um #ana$ e
adi#ionar os parti#ipantes do site a esse #ana$.
12. Imprimimos uma mensa(em 8se o)ti<emos su#esso> di?endo 'ua$ o id do #ana$
#riado e 'ue os usu0rios &oram adi#ionados a e$e.
13. Fa?emos )ui$d e dep$o@ da &erramenta.
Con&iden#ia$ FA9.,9- 90(ina */
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
1*. %e(istramos a &erramenta Ie$$oFor$d no site #riado pre<iamente 8.dit site \ .dit too$s \ mar'ue
Ie$$oFor$d> e testamos a &erramenta.
1/. O)ser<amos 'ue o id do #ana$ #riado 3 131 8neste eNemp$o> e 'ue os parti#ipantes &oram adi#ionados
#om su#esso.
Listagem 1:
[bNm$ <ersionUS1.0S en#odin(USDTF-!Sb\
[l-- TIis &i$e (enerated )@ ,a=ai App Oui$der -Aj --\
[pro5e#t Nm$nsUSIttp:ma<en.apa#Ie.or(9OA3.0.0S Nm$ns:NsiUSIttp:FFF.F3.or(2001XAC,#Iema-instan#eS
Nsi:s#IemaCo#ationUSIttp:ma<en.apa#Ie.or(9OA3.0.0 Ittp:ma<en.apa#Ie.or(ma<en-<3T0T0.NsdS\
[pomVersion\3[pomVersion\
[eNtend\....masterpro5e#t.Nm$[eNtend\
[name\sa=ai-Ie$$oFor$d-too$[name\
[(roupId\sa=aipro5e#t[(roupId\
[id\sa=ai-Ie$$oFor$d-too$[id\
[#urrentVersion\R`sa=ai.<ersiona[#urrentVersion\
[or(ani?ation\
[name\,a=ai 9ro5e#t[name\
[ur$\Ittp:sa=aipro5e#t.or([ur$\
[or(ani?ation\
[in#eption_ear\2004[in#eption_ear\
[l-- _ou must dep$o@ @our too$ as a Far &i$e --\
[properties\
[dep$o@.t@pe\Far[dep$o@.t@pe\
[properties\
[dependen#ies\
[l-- TIe sa=aipro5e#t p$u(in $etWs us )ui$d our too$ FitIout )ui$din(
tIe entire sa=ai #ode )ase --\
[dependen#@\
[(roupId\sa=aipro5e#t[(roupId\
[arti&a#tId\sa=ai[arti&a#tId\
[<ersion\R`sa=ai.p$u(in.<ersiona[<ersion\
[t@pe\p$u(in[t@pe\
[dependen#@\
[dependen#@\
[(roupId\sa=aipro5e#t[(roupId\
[arti&a#tId\sa=ai-user-api[arti&a#tId\
[<ersion\R`sa=ai.<ersiona[<ersion\
[dependen#@\
[dependen#@\
[(roupId\sa=aipro5e#t[(roupId\
[arti&a#tId\sa=ai-entit@-api[arti&a#tId\
[<ersion\R`sa=ai.<ersiona[<ersion\
[dependen#@\
Con&iden#ia$ FA9.,9- 90(ina *4
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
[l-- Fe are runnin( a Fe)app in tom#at so Fe need tIe ser<$et api --\
[dependen#@\
[(roupId\ser<$etapi[(roupId\
[arti&a#tId\ser<$etapi[arti&a#tId\
[<ersion\2.*[<ersion\
[dependen#@\
[l-- Le need tIis spe#ia$ pa#=a(e to run tIe 5sps in ,a=ai --\
[dependen#@\
[(roupId\or(.sa=aipro5e#t[(roupId\
[arti&a#tId\sa=ai-Fe)app-too$[arti&a#tId\
[<ersion\2.2.N[<ersion\
[properties\
[Far.)und$e\true[Far.)und$e\
[properties\
[ur$\Ittps:sour#e.sa=aipro5e#t.or(ma<enor(.sa=aipro5e#t5ars[ur$\
[dependen#@\
[l-- 2,9 ta($i) dependen#ies --\
[dependen#@\
[(roupId\5st$[(roupId\
[arti&a#tId\5st$[arti&a#tId\
[<ersion\1.1.2[<ersion\
[t@pe\5ar[t@pe\
[properties\
[Far.)und$e\true[Far.)und$e\
[properties\
[dependen#@\
[dependen#@\
[(roupId\ta($i)s[(roupId\
[arti&a#tId\standard[arti&a#tId\
[<ersion\1.1.2[<ersion\
[t@pe\5ar[t@pe\
[properties\
[Far.)und$e\true[Far.)und$e\
[properties\
[dependen#@\
[dependen#@\
[(roupId\tidia[(roupId\
[arti&a#tId\#omm[arti&a#tId\
[<ersion\#$ient[<ersion\
[t@pe\5ar[t@pe\
[properties\
[Far.)und$e\true[Far.)und$e\
[properties\
[dependen#@\
[dependen#@\
Con&iden#ia$ FA9.,9- 90(ina *"
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
[(roupId\tidia[(roupId\
[arti&a#tId\5)ossa$$[arti&a#tId\
[<ersion\#$ient[<ersion\
[t@pe\5ar[t@pe\
[properties\
[Far.)und$e\true[Far.)und$e\
[properties\
[dependen#@\
[l-- Various ,a=ai dependen#ies --\
[dependen#@\
[(roupId\sa=aipro5e#t[(roupId\
[arti&a#tId\sa=ai-uti$[arti&a#tId\
[<ersion\R`sa=ai.<ersiona[<ersion\
[properties\
[Far.)und$e\true[Far.)und$e\
[properties\
[dependen#@\
[l-- Commons 2A%, put in sIared$i) )@ ,a=ai --\
[dependen#@\
[(roupId\#ommons-$o((in([(roupId\
[arti&a#tId\#ommons-$o((in([arti&a#tId\
[<ersion\1.0.*[<ersion\
[dependen#@\
[dependen#ies\
[)ui$d\
[sour#eDire#tor@\sr#5a<a[sour#eDire#tor@\
[resour#es\
[resour#e\
[dire#tor@\R`)asedirasr#5a<a[dire#tor@\
[in#$udes\
[in#$ude\iii.Nm$[in#$ude\
[in#$udes\
[resour#e\
[resour#es\
[)ui$d\
[pro5e#t\
Listagem 2:
pa#=a(e or(.sa=aipro5e#t.Ie$$oFor$d.too$Q
import 5a<a.uti$.1asIta)$eQ
import 5a<aN.namin(.ConteNtQ
import 5a<aN.namin(.Initia$ConteNtQ
Con&iden#ia$ FA9.,9- 90(ina *!
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
import 5a<aN.rmi.9orta)$e%emoteO)5e#tQ
import )r.&apesp.tidia.ae.e$earnin(.#omm.preparation.spe#.CIanne$A(tQ
import )r.&apesp.tidia.ae.e$earnin(.#omm.preparation.spe#.CIanne$A(t1omeQ
pu)$i# #$ass CommConne#tion `
pri<ate stati# CIanne$A(t #Im U nu$$Q
pri<ate <oid $oad8> `
tr@ `
1asIta)$e en< U neF 1asIta)$e8>Q
en<.put8ConteNt.IEITIACTCOET.XTTFACTO%_- Sor(.5np.inter&a#es.Eamin(ConteNtFa#tor@S>Q
en<.put8ConteNt.D%CT9GMT9%.FIX.,- Sor(.5)oss.namin(:or(.5np.inter&a#esS>Q
en<.put8ConteNt.9%OVID.%TD%C- S5np:10.0.116.12:1066S>Q
Initia$ConteNt #tN U neF Initia$ConteNt8en<>Q

CIanne$A(t1ome Iome U nu$$Q
O)5e#t re& U #tN.$oo=up8Se5)CIanne$A(rS>Q
Iome U 8CIanne$A(t1ome> 9orta)$e%emoteO)5e#t.narroF8re&-

CIanne$A(t1ome.#$ass>Q
#Im U Iome.#reate8>Q
a #at#I8.N#eption e> `
e.print,ta#=Tra#e8>Q
,@stem.out.print$n8SFa$Ia na #oneNo #om o ser<io de #omuni#ao.S>Q
a
a
pu)$i# CIanne$A(t (etCommConn8> `
i&8#Im UU nu$$>
$oad8>Q
return #ImQ
a
a
Listagem 3:
[bNm$ <ersionUS1.0S en#odin(USI,O-!!/6-1S b\
[e^ pa(e $an(ua(eUS5a<aS #ontentT@peUSteNtItm$Q #IarsetUI,O-!!/6-1S
pa(e.n#odin(USI,O-!!/6-1Se\
[l-- [e^ pa(e error9a(eUSerror.5spS e\ --\
[e^ ta($i) pre&iNUS#S uriUSIttp:5a<a.sun.#om5sp5st$#oreS e\
[e^ ta($i) pre&iNUS&mtS uriUSIttp:5a<a.sun.#om5sp5st$&mtS e\
[e^ ta($i) pre&iNUS&nS uriUSIttp:5a<a.sun.#om5sp5st$&un#tionsS e\
[e^ ta($i) pre&iNUSNS uriUSIttp:5a<a.sun.#om5sp5st$Nm$S e\
Con&iden#ia$ FA9.,9- 90(ina *6
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
[e-- TIis &i$e (enerated )@ ,a=ai App Oui$der --e\
[lDOCT_9. Itm$ 9DOCIC S-L3CDTD X1TAC 1.0 Transitiona$.ES
SIttp:FFF.F3.or(T%NItm$1DTDNItm$1-transitiona$.dtdS\
[e^pa(e importUSor(.sa=aipro5e#t.user.api.DserDire#tor@,er<i#eSe\
[e^pa(e importUSor(.sa=aipro5e#t.Ie$$oFor$d.too$.CommConne#tionSe\
[e^pa(e importUS5a<a.rmi.%emote.N#eptionSe\
[e^pa(e importUS)r.&apesp.tidia.ae.#ommon.#omm.o)5e#t.iSe\
[e^pa(e importUS)r.&apesp.tidia.ae.e$earnin(.#omm.preparation.spe#.CIanne$A(tSe\
[e^pa(e importUSor(.sa=aipro5e#t.user.api.DserSe\
[e^pa(e importUS5a<aN.5ms.,essionSe\
[Itm$ Nm$nsUSIttp:FFF.F3.or(1666NItm$S\
[Iead\
[meta Ittp-e'ui<USContent-T@peS #ontentUSteNtItm$Q #IarsetUI,O-!!/6-1S \
[s#ript sr#US$i)rar@5sIeads#ripts.5sS $an(ua(eUS2a<a,#riptS t@peUSteNt5a<as#riptS\[s#ript\
[$in= mediaUSa$$S Ire&US$i)rar@s=intoo$T)ase.#ssS re$USst@$esIeetS t@peUSteNt#ssS\
[$in= mediaUSa$$S Ire&US$i)rar@s=inde&au$ttoo$.#ssS re$USst@$esIeetS t@peUSteNt#ssS\
[$in= mediaUSa$$S Ire&US#ss1e$$oLor$d.#ssS re$USst@$esIeetS t@peUSteNt#ssS\
[tit$e\1e$$o Lor$d[tit$e\
[Iead\
[)od@ on$oadUS[eU re'uest.(etAttri)ute8Ssa=ai.Itm$.)od@.on$oadS> e\S\
[di< #$assUSport$etOod@S\
[I3\1e$$o Lor$d[I3\
[e
DserDire#tor@,er<i#e u U or(.sa=aipro5e#t.user.#o<er.DserDire#tor@,er<i#e
.(etInstan#e8>Q
i& 8u UU nu$$>
out.print$n8SEo (oS>Q
5a<a.uti$.Cist $ U u.(etDsers8>Q
5a<a.uti$.Cist Iumans U neF 5a<a.uti$.Arra@Cist8>Q
i& 8$.si?e8> UU 0>
out.print$n8SCista ?eradaS>Q
e$se `
5a<a.uti$.Iterator it U $.iterator8>Q
FIi$e 8it.IasEeNt8>> `
or(.sa=aipro5e#t.user.api.Dser user U 8or(.sa=aipro5e#t.user.api.Dser> it
.neNt8>Q
i& 8user.(etT@pe8>.e'ua$s8Sre(isteredS>>
Iumans.add8user>Q
a
CIanne$A(t #Im U nu$$Q
CommConne#tion #onn U neF CommConne#tion8>Q
Con( #IanId U nu$$Q
Con&iden#ia$ FA9.,9- 90(ina /0
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
i& 8#onn.(etCommConn8> lU nu$$> `
#Im U #onn.(etCommConn8>Q
Cria um no<o #ana$:
tr@ `
#IanId U #Im.#reateCIanne$8Constants.TO9IC- nu$$>Q
a #at#I 8%emote.N#eption e> `
e.print,ta#=Tra#e8>Q
,@stem.out.print$n8SEo &oi poss;<e$ #riar #ana$S>Q
a
out.print$n8SCana$ #riado: S K #IanId>Q
a
5a<a.uti$.Iterator iter U Iumans.iterator8>Q
5a<a.uti$.Cist parti#ipants U neF 5a<a.uti$.Arra@Cist8>Q
FIi$e 8iter.IasEeNt8>> `
Dser usuario U 8Dser> iter.neNt8>Q
9arti#ipant9rops part U neF 9arti#ipant9rops8>Q
part.setConsumer8true>Q
part.setDura)$e,u)s#ription8true>Q
part.setAessa(e,e$e#tor8nu$$>Q
part.setEoti&i#ationInterest8true>Q
part.set9arti#ipantId8neF Con(8neF 5a<a.uti$.Date8>
.(etTime8>>>Q
part.set9rodu#er8true>Q
part.setEoCo#a$8&a$se>Q
part.setA#=noF$ed(eAode8,ession.ADTOTACGEOLC.DM.>Q
part.set9arti#ipantEi#=8usuario.(etDisp$a@Eame8>>Q
parti#ipants.add8part>Q
a
)oo$ean resu$t U #Im.add9arti#ipants8#IanId- parti#ipants>Q
i&8resu$t>
out.print$n8S9arti#ipantes adi#ionados ao #ana$.S>Q
e$se
out.print$n8SEo &oi poss;<e$ adi#ionar os parti#ipantes ao #ana$.S>Q
a
e\
Con&iden#ia$ FA9.,9- 90(ina /1
TIDIA - Ae
Verso: 1.0
Orientaes para Construo de Ferramentas para o TIDIA Ae 2.0 Data: 310!200"
[di<\
[)od@\
[Itm$\
8. Tra,a-?os Futuros
Desen<o$<imento de um p$u(in para o .#$ipse 'ue permita a #onstruo de &erramentas para o sistema
Tidia-Ae de modo &a#i$itado 8Li?ard>.
&. *e/erIn)ias
OA,AAE- A. %e#ap o& ,a=ai ,er<i#es Z ,a=ai ELD Lor=sIop- 200"a. Dispon;<e$ em:
Ittp:)u(s.sa=aipro5e#t.or(#on&$uen#edoFn$oadatta#Iments32"12%e#apKo&K,a=aiK,er<i#es.ppt
OA,AAE- A. %e#ap o& ,a=ai ,er<i#es Z ,a=ai ELD Lor=sIop- 200"). Dispon;<e$ em:
Ittp:)u(s.sa=aipro5e#t.or(#on&$uen#edoFn$oadatta#Iments32"12Introdu#tionKtoK,a=aiKandK,a=aiK,
er<i#es.ppt
%,FLIGI Z TIe %,F FrameFor=- 200" Z Dispon;<e$ em:
Ittp:FFF2.#aret.#am.a#.u=rs&Fi=i
,a=ai App Oui$der Z %A too$- 200"a Dispon;<e$ em:
Ittp:)u(s.sa=aipro5e#t.or(#on&$uen#edisp$a@OOOT,a=aiKAppKOui$der
,a=ai Gerne$ Ound$e Z ,er<i#e Aanua$ Components- 200/ Dispon;<e$ em:
Ittp:)u(s.sa=aipro5e#t.or(#on&$uen#edoFn$oadatta#Iments104!!,GOAanua$Components<2.pd&b
<ersionU1
,a=ai Z Fun#tiona$ ,er<i#es Do#umentation- 200") Z Dispon;<e$ em:
Ittp:)u(s.sa=aipro5e#t.or(#on&$uen#edisp$a@.ECFun#tiona$K,er<i#esKDo#umentation
,a=ai Z Dsin( tIe Too$Aana(er ,er<i#e Z 200"# Z Dispon;<e$ em:
Ittp:)u(s.sa=aipro5e#t.or(#on&$uen#edisp$a@OOOTDsin(KtIeKToo$Aana(erK,er<i#e
,a=ai Z Fun#tiona$ ,er<i#es Do#umentation- 200"d Z Dispon;<e$ em:
Ittp:)u(s.sa=aipro5e#t.or(#on&$uen#edisp$a@.ECIn&ormationa$K,er<i#esKDo#umentation
,a=ai 9ro(rammers Aanua$Z Dispon;<e$ em:
Ittp:)u(s.sa=aipro5e#t.or(#on&$uen#edisp$a@OOOT,a=aiK9ro(rammerKAanua$
TIree La@s o& Dsin( 1i)ernate in ,a=aiZ Dispon;<e$ em:
Ittp:)u(s.sa=aipro5e#t.or(#on&$uen#edoFn$oadatta#Iments1!*36,a=ai9ersisten#eAnd1i)ernate.pptb
<ersionU1
Con&iden#ia$ FA9.,9- 90(ina /2

Você também pode gostar