SlideServe
Menu
Préférences
© SlideServe · v2026

Report poziv arhitektura III

gay-moses avatar
24 diapositives · 420 Views · Nov 28, 2014

Report poziv arhitektura III. Kratki opis interakcije report/forms servisa u 10g. Stari način pozivanja reporta – 6i. param_list_id_L := Get_Parameter_List('INPUT_PARAMS');. ADD_PARAMETER(param_list_id_l, 'P_DATUM_OD', TEXT_PARAMETER, datum1_l); /* P - PLAN */

Report poziv arhitektura III - slide 1
01 / 24Report poziv arhitektura III
1 / 17

Télécharger la présentation

Report poziv arhitektura III
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Report poziv arhitektura III Kratki opis interakcije report/forms servisa u 10g

  2. Stari način pozivanja reporta – 6i

  3. param_list_id_L := Get_Parameter_List('INPUT_PARAMS'); ADD_PARAMETER(param_list_id_l, 'P_DATUM_OD', TEXT_PARAMETER, datum1_l); /* P - PLAN */ ADD_PARAMETER(param_list_id_l, 'P_DATUM_DO', TEXT_PARAMETER, datum2_l); Forma datum1_l := TO_CHAR(:parametri.datum1, 'DD.MM.RRRR.'); datum2_l := TO_CHAR(:parametri.datum2, 'DD.MM.RRRR.'); Param_lista report_l := RUN_REPORT_OBJECT ('NEKI_REPORT', param_list_id_l); Pozovi report, poziv ide na report server

  4. Sav kod zajedno • param_list_id_L := Get_Parameter_List('INPUT_PARAMS'); • datum1_l := TO_CHAR(:parametri.datum1, 'DD.MM.RRRR.'); • datum2_l := TO_CHAR(:parametri.datum2, 'DD.MM.RRRR.'); • ADD_PARAMETER(param_list_id_l, 'P_DATUM_OD', TEXT_PARAMETER, datum1_l); /* P - PLAN */ • ADD_PARAMETER(param_list_id_l, 'P_DATUM_DO', TEXT_PARAMETER, datum2_l); • report_l := RUN_REPORT_OBJECT ('NEKI_REPORT', param_list_id_l);

  5. Pitanja?

  6. Način rada reporta sa 10g

  7. Zašto uopće mijenjati kod? • Report sada radi kao web servis. • Kako radi kao web servis, tako i forme više nisu usko vezane za reporte(i ostali programi mogu pristupati). • Parametarska forma koja je ponuđena ne radi kako bismo htjeli – potpuno je nefleksibilna. Savjetovanjem sa Uljanikom i sa Login-om, došli smo do zaključka da ćemo koristiti Custom parametarsku formu. • “The most secure approach for calling Reports from Forms on theWeb is to use the Oracle Application Server 10g reports Services in combination with RUN_REPORT_OBJECT. Because the user’s database connection is implicitly passed from Forms to Reports on the server, there is no risk of interception as if it were passed in a URL.” – iz Oracle Application Server 10J - Integrating Oracle Reports in Oracle Forms Services applications

  8. Primjer • report_id Report_Object; • ReportServerJob VARCHAR2(100); • BEGIN • report_id:= find_report_object(‘MyReport1’); • SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_COMM_MODE,SYNCHRONOUS); • SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_DESTYPE,CACHE); • SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_SERVER,’Repsrv’); • SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_OTHER,'p_deptno='||:Dept.De • ptno||' paramform=no'); • ReportServerJob:=run_report_object(report_id); • END; • Vidimo da se parametri prenose zajedno sa report “objektom”

  9. Parametarska forma Forma Prijenos parametra? Report

  10. Library migracija Podaci???? data_mode  NO_SHARE_LIBRARY_DATA (The default.) At runtime, Oracle Forms will not share data between forms that have identical libraries attached (at design time). SHARE_LIBRARY_DATA At runtime, Oracle Forms will share data between forms that have identical libraries attache.

  11. desetg.add___parameter(param_list_id_l, 'P_DATUM_OD', TEXT_PARAMETER, datum1_l); desetg.add___parameter(param_list_id_l, 'P_DATUM_DO', TEXT_PARAMETER, datum2_l); desetg.postavi_param_listu(param_list_id_l); CALL_FORM(lower('param_forma'), HIDE, DO_REPLACE, NO_QUERY_ONLY, SHARE_LIBRARY_DATA); --Generirano iz JDAPI-a... desetg.postavi_report_ime(lower('GAS5540')); param_list_id_L := Get_Parameter_List('INPUT_PARAMS'); Library migracija Param_lista

  12. Pročitaj parametre CALL_FORM(lower('param_forma'), HIDE, DO_REPLACE, NO_QUERY_ONLY, SHARE_LIBRARY_DATA); --Generirano iz JDAPI-a... Poziva report SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_OTHER,hidden_action||'&paramform=no');

  13. Što se time postiglo?

  14. Što je postignuto? • Sada se svi report objekti nalaze u jednoj formi – param_forma.fmb • Postignuta je velika brzina prijenosa parametra u odnosu na druge solucije • Postignuta je modularnost, dobili smo još jedan abstraktni modul kojim “pomičemo” odgovornosti sa obje strane na domenu na kojoj treba biti. Ovo se prvobitno odnosi na forme koje pozivaju reporte. Sada, ako nastane neka promjena na reportima, nema potrebe pretraživati po svim formama, nego je sve na jednom mjestu • Smanjen je utjecaj mogućih grešaka – ako postoji greška u pozivu nije u nikakvom triggeru niti bug-u forme – moguće ali manje vjerovatno • Zadržan je isti format/dizajn formi od prije tako da se sada mogu migrirati forme sa 6i direktno dok mogu još uvijek izmjene biti “ubačene” kroz alat za migraciju

  15. Pitanja?

  16. Problematika URL encodinga • Problem nastaje kada se neki posebni znakovi šalju preko tih URL-ova • U svim primjerima koje Oracle daje šalju jednostavne parametre • U MISH aplikaciji, na drugu ruku, potpuno je uobičajeno poslati skoro pa čitav where uvijet • Neke su forme ispravljane na način da se where uvijeti “prebace” u report. Time se izbjegava slanje “posebnih znakova” preko URL-a • To nije moguće svugdje!

  17. Dobar slučaj

  18. Loš slučaj

  19. Zaključak? • Riješiti problem URL encodinga... Time se omogućuje slobodno slanje “biblija” preko parametra(što ne znači da je to dobro). • Primjer je GAS5380 – Ulaz/Izlaz artikala. (Primjer na desktopu) • Postoji još puno formi koje koriste čitave where uvijete za poziv reporta

  20. RWWebService • Web servis “Interface” • Omogućava par jendnostavnih metoda: • getAPIVersion() • getServerInfo(String serverName, String authId) • getJobInfo(Integer jobId, String serverName, String authId) • killJob(Integer jobId, String serverName, String authId) • runJob(String commandLine, Boolean synchronous)

  21. Zašto nova implementacija? • “Zastarijela” tehnologija – PL/SQL, treba puno više vremena potrošiti na izradu/održavanje/testiranje library-a. • Nedostatak dokumentacije Oracle-a – ne postoji dokument koji spominje “URL encoding”, kamoli još da je vezan za report server. • Jedna izmjena/testiranje zahtijeva sljedeće: • Zagasiti browser • Napraviti izmjenu • Kompajlirati • Napraviti executable • Kopirati u folder gdje se pokreće • Pokrenuti “attach debugger” • Pokrenuti browser sa opcijom “&debug=yes” • Ponovno u formi upisati detalje vezane za “konekciju” na debugger • Upisati user podatke • Ići na formu • Vratiti se na debugger • Doći na problematični slog • Pogledati vrijednosti(za neke vrijednosti niti ne postoji “watch”)

  22. Zašto nova implementacija? • JavaBean se puno lakše testira – imamo TDD, sve što forma treba je poslati par parametra • Nakon par napisanih testova možemo lako ustanoviti gdje je greška/bug • “Logika” poziva povučena je u Bean

  23. Primjer pozivanja • server=rep_iii-server-2_as10g report=test.rdf destype=file desname=output.pdf desformat=pdf userid=hnbgastro/hnbgastro@iii-11g • Problema je vidljiv. Sve se šalje preko XML-a. Da li je sa sigurnosne strane ovo dobra solucija? Sigurno da je lakše i jednostavnije, ali da li je i sigurnije?