INFOSYS FOX PRO API


Ovo je API koji omogucava da se preko servisa izvrsavaju aplikatvine funkciej u info programu.


PRIMER1.PRG - primer koji prikazuje ceo tok podataka od kreiranja upita na klijentu 
do obrade i vracanja rezultata u servisu. Kao primer se poziva funkcija koja vrsi 
matematicke operacije

PRIMER2.PRG - primer koji prikazuje kako se API poziva kao eksterna funkcija. API je u EXECUTE.PRG

LIBS/ - direkorijum sa bibliotekama koje su deo opsteg API-ja

MODULES/ - direktorijum za module - aplikativne funkcije


FoxPro programeri programiraju samo module.


-----------------------------

Priperi pokazuju poziv dve razlicite api obrade. Jedna je MATH koja radi osnovne racunske operacije a druga je SELECT koja radi upit nad tabelom i vraca tabelu.

Prilikom izvrsavanja PRIMER1.PRG kreiraju se dve JSON datoteke math_query.json (primer upita) i math_response.json (primer odgovora na upit), odnosno select_query.json (primer upita) i select_response.json (primer odgovora na upit)

----------------------------

Funkcija MATH je definisana u MODULES/apf_math.prg

Modul se sastoji od tri klase 

  TAPIMathParams - klasa koja definise parametre koji se salju prilikom upita
  
  TAPIMathResult - klasa koja definise strukturu u koju se upisuju reyultati obrade upita

  TAPIMathExec - klasa koja izvrsava upit i vraca rezultat obrade

Vise detalja o klasama cete naci u apf_math.prg


----------------------------

Funkcija SELECT  je definisana u MODULES/apf_select.prg

Modul se sastoji od tri klase 

  TAPISelectParams - klasa koja definise parametre koji se salju prilikom upita
  
  TAPISelectResult - klasa koja definise strukturu u koju se upisuju rezultati obrade upita

  TAPISelectExec - klasa koja izvrsava upit i vraca rezultat obrade

Vise detalja o klasama cete naci u apf_select.prg


---------------------

Kratak postupak upotrebe:

OLE dobije od PDA upit i prosledi ga aiju u obliku stringa koji sadryi JSON

API prvo kreira TAPIQueryEnvelope kojije opsta strukutra za prijem upita i u njega raspakuje primljeni JSON

TAPIQueryEnvelope sadyi podatke o konekciji, login podatke, i slicno.

U TAPIQueryEnvelope.app_option se nalazi oznaka api funkcije koja treba da se izvrsi a parametri upita se nalaze u TAPIQueryEnvelope.data kao objekat.

Na osnovu oznake funkcije API ucitava modul te funkcije (nalazi se u direktorijumu modules/), kreira Params, Result i Exec klase i izvrsava upit pokrecuci EXEC metod Exec klase kojo kao parametre prosledjuje Paams i Result.

Nakon izvrsenja obrade, u REsult klasi ce biti upisan rezultat obrade. Result je klasa jer rezultat obrad emoze da bude komleksan (da sadrzi vise podatak ukljucujuci i tabelarne podatke i objekte)

Sada API kreira objekat klase TAPIResponseEnvelope sto je opsti format ya poruke odgovora naupit. Ovaj odgovor sadryi neke sistemske podatke a u properti TAPIResponseEnvelope.data se upisuje objekat sa rezultatima obrade. Nakon toga se TAPIResponseEnvelope pretvara u string i vraca OLE servisu koji ce taj string proslediti klijentu.


--