Fundamentalna karakteristika ponude sistema Navision/Dynamics NAV/Dynamics 365 Business Central (kako god da ga nazovete) je mogućnost prilagođavanja sistema potrebama Vašeg poslovanja. Kako se ovaj sistem za planiranje resursa preduzeća (ERP) razvijao, postalo je lakše personalizovati Vaše iskustvo bez pisanja koda, ali za zaista velike promene u načinu funkcionisanja, potreban vam je programer.
Do pre nekoliko godina, ova razvojna radnja se obavljala u jeziku nazvanom C/AL, ali 2018. godine Microsoft nam je omogućio potpuno nov način rada kada je objavio novi jezik za Dynamics 365 Business Central, nazvan AL. To je rezultiralo velikom promenom u načinu na koji se razvijaju aplikacije za Business Central, kao i uticajem koji ovo ima na vaš sistem u budućnosti.
Pre nego što razmotrimo razlike između C/AL i AL, važno je razumeti zašto je Microsoft osetio potrebu za promenom. Fleksibilnost koju je omogućavao C/AL razvoj stvarala je izazove u vezi sa mogućnostima nadogradnje sistema. Ako napišete kod koji menja način rada sistema, kada dođe vreme za nadogradnju, morate proveriti da li će vaš kod raditi u novoj verziji. Ovo zahteva vreme i trud, zbog čega mnogi korisnici i dalje koriste starije verzije NAV-a. To je problem koji rešava AL.
Ključ rešenju koje AL pruža je ideja "ekstenzija" (extensions). Prethodno, u C/AL-u, sve promene koda su se obavljale u osnovnom delu sistema - bio je to jedan monolitni kod. Međutim, u AL-u, sav kod se nalazi u segmentima koji se nazivaju ekstenzije. Standardni kod za Business Central od Microsoft-a je jedna ekstenzija (zapavo, to su više ekstenzija, ali to nećemo sada razmatrati), a zatim bilo koji kod koji napišete se objavljuje u sistemu kao jedna ili više ekstenzija. Na taj način, ako želite da nadogradite osnovnu ekstenziju Business Central-a, to možete uraditi bez uticanja na drugi prilagođeni kod koji ste napisali. Sve je lepo podeljeno na segmente.
Events – događaji
Events su glavni način na koji ove ekstenzije mogu međusobno interagovati. Prvi način je kroz mehanizam koji se naziva "events" (događaji). To su mesta u kodu gde sistem šalje signal; svaka ekstenzija koja prati taj signal može naterati sistem da pokrene bilo koji kod koji želi. Na primer, događaj može biti pokrenut kada unesete broj stavke u liniju narudžbenice; ekstenzija može pretplatiti se na taj događaj tako da, čim unesete vrednost, može pokrenuti neki kod koji proverava ograničenja prodaje za tu stavku. To znači da ne morate dodavati kod u tabelu linija prodaje (kao što biste to ranije radili), umesto toga vaš kod je lepo podeljen u svojoj sopstvenoj ekstenziji. Od 2016. godine, Microsoft postepeno dodaje sve više ovih događaja u osnovni sistem, pa sada postoji događaj za gotovo sve što biste mogli poželeti da uradite.
Produžetak objekata (Extension Objects)
Drugi način na koji ove ekstenzije mogu međusobno interagovati je putem nove grupe objekata koja je uvedena u AL jeziku, a zove se "extension objects" (produžeci objekata). Recimo da želite da dodate polje u tabelu i karticu klijenta kako biste ih mogli identifikovati kao VIP klijente. U C/AL-u biste direktno dodali polje u tabelu klijenta i karticu, međutim, u AL-u možete napisati ekstenziju sa dva nova objekta. Prvi tip objekta se naziva "TableExtension" - ovde jednostavno dodate nekoliko linija koda koje opisuju polje koje želite da dodate. Drugi tip objekta se naziva "PageExtension", i opet, ovde samo opisujete promene koje želite da napravite na kartici klijenta - u ovom primeru dodajemo naše novo polje. Kada god se ekstenzija instalira, automatski će izvršiti promene na tabeli i kartici koje ovi objekti opisuju.
Rezultat razvoja na ovaj način je da vaša nova prilagođena ekstenzija ima malu zavisnost od standardnog koda koji proširujete. Nije važno da li je cela kartica klijenta redizajnirana u novoj verziji, sve dok postoji polje koje se zove "Ime", naše polje "VIP" će se automatski dodati iza njega. Slično tome, sve dok postoji događaj na koji se naš motor za promocije pretplaćuje, kod će nastaviti da radi. Naravno, postoje prilike kada Microsoft mora da napravi značajne promene u osnovnoj aplikaciji, ali kako se Business Central sve više razvija, ove promene postaju sve ređe i retke, što znači da nadogradnje postaju relativno bezbolne. AL nam nije doneo samo događaje i ekstenzije, već nam je takođe doneo i više programerskih koncepata iz drugih jezika. Na primer, dodate su stvari poput Liste (Lists) i Rečnika (Dictionaries) u jezik, koje su veoma korisne alatke za programere umesto rešenja koja su bila potrebna u C/AL-u.
Interfejsi
Jedna od velikih novih mogućnosti u jeziku AL su "Interfejsi" (Interfaces). Ova mogućnost se odnosi na sposobnost apstrakcije prilagođenog koda od osnovne funkcionalnosti. Odličan primer za to je nova funkcionalnost Cene Prodaje/Kupovine koju je Microsoft relativno nedavno dodao u Business Central. Funkcionalnost Interfejsa omogućava Business Central-u da jednostavno pita "koja je cena za ovu liniju prodaje", bez ikakvog saznanja o tome kako bi ta cena mogla biti izračunata. Programeri mogu zatim napisati sopstvenu funkcionalnost za izračunavanje cena i jednostavno je povezati sa standardnim sistemom. Slično ugovorima, sve što treba da urade je da se pobrinu da kada sistem pita "koja je cena za ovu liniju prodaje", vrate odgovarajuće podatke, a sve ostalo nastavlja da funkcioniše normalno.
Integracija e-pošte
Još jedan primer ove funkcionalnosti je nova Integracija e-pošte u Business Central-u. Ponovo, sistem nije zainteresovan kako programer šalje e-poštu, jednostavno kaže "pošalji ovu e-poruku", a zatim, u zavisnosti od toga koju ekstenziju imate instaliranu koja radi sa ovim "Interfejsom", možete slati e-poruke putem Outlook-a, Exchange-a, Gmail-a ili bilo koje druge opcije, bez da se dira osnovni kod.
Nativna podrška za JSON
Još jedan primer funkcionalnosti koje je Microsoft dodao u AL kako bi ga uskladio sa modernijim programerskim jezicima je nativna podrška za JSON. JSON je tekstualni format za opisivanje podataka (slično XML-u) koji se koristi u modernom web razvoju, a AL sada ima mogućnost čitanja i pisanja u ovom formatu, bez potrebe za proizvodima ili bibliotekama trećih strana.
Okruženje za razvoj u kojem možete pisati jezik može napraviti ogromnu razliku u brzini kojom neko može pisati i održavati odličan kod.
- C/AL Okruženje za razvoj
Za C/AL, okruženje za razvoj se nazivalo C/SIDE i bilo je integrisano u klijenta Classic NAV. Bilo je specijalno napravljeno samo za pisanje C/AL koda. Međutim, za AL, Microsoft se odlučio za korišćenje standardnih alatki umesto pravljenja nečega posebnog za Business Central.
- VSCode
Prvi alat o kojem treba govoriti je VSCode. To je uređivač koda koji se koristi ne samo za AL, već i za mnoge druge jezike (JavaScript, Go, Python itd.), i kao rezultat toga, konstantno se održava i poboljšava.
Jedna od najvažnijih mogućnosti VSCode-a je njegova sposobnost podrške za ekstenzije (ne Business Central ekstenzije, već drugačije). Ove ekstenzije pružaju širok spektar funkcionalnosti uređivaču koda, od osnovnih stvari kao što je mogućnost rada sa AL-om samim, do manjih alatki kao što su ekstenzije za pomoć pri davanju imena varijablama ili prikazu informacija o tome ko je poslednji izmenio liniju koda.
- Analiza koda
Poslednja funkcionalnost VSCode-a o kojoj želim da govorim su analizatori koda. Dok je C/SIDE mogao da vam kaže da li u vašem kodu postoji greška koja bi sprečila njegovo funkcionisanje, nije mogao da vam kaže da li je vaš kod dobar. Tu nastupaju analizatori koda u VSCode-u. To su alatke koje konstantno prate svaku liniju koda koju pišete i porede je sa skupom standarda razvoja. Ako napišete kod koji ne odgovara tim standardima, VSCode će vas upozoriti i čak predložiti ispravke. Razvojni standardi mogu obuhvatiti različite teme, od jednostavnih stvari poput imenovanja promenljivih do upozorenja ukoliko pišete kod koji koristi nešto što će postati zastarelo u budućnosti. Naravno, Microsoft pruža set ovih pravila analizatora koda kako bi osigurao da programeri rade prema industrijskim standardima.
- Izvorna kontrola (Source Control)
Nakon što napišete svoj kod u uređivaču koda (C/SIDE ili VSCode), trebate ga negde sačuvati. Ovo je još jedno područje gde postoji ogromna promena između C/AL i AL. U vreme C/AL-a, kod je bio direktno smešten unutar same baze podataka NAV/BC. Ako ste želeli da vidite kako kod izgleda u određenom trenutku, morali ste da pristupite kopiji baze podataka iz rezervne kopije i da pogledate. Međutim, u novom svetu AL-a, sav kod je jednostavno smešten u pojedinačne fajlove. Možda vam ovo izgleda kao korak unazad, ali zapravo je otvorilo vrata odličnom setu alatki pod nazivom "Izvorna kontrola" (Source Control).
Najpopularnije alatke za izvornu kontrolu su GitHub ili BitBucket. Obe su izgrađene na osnovu industrijskog standarda zvanog Git. Postoji ogromna količina knjiga i online materijala koji objašnjavaju kako Git funkcioniše, pa nećemo ulaziti u detalje ovde. Ali, da pojednostavimo, Git vam omogućava da čuvate kopije ovih fajlova sa izvornim kodom zajedno sa svakom linijom koda koja je promenjena i kada. Ovo je ogromno poboljšanje za sve programere Business Central-a. Sada mogu videti ko je šta promenio, kada i zašto. Sve te informacije čuvaju se na serveru za izvornu kontrolu (GitHub/Bitbucket), tako da ako više programera radi na istom projektu, mogu videti šta svako od njih radi i automatski rešavati probleme poput konflikata kada dva programera pokušaju da promene istu stvar u isto vreme.
- DevOps
Dodavanjem podrške za Git u AL jezik, Microsoft je takođe otvorio još jedan put za poboljšanje brzine, kvaliteta i efikasnosti razvoja - DevOps.
DevOps je način automatizacije procesa koji su potrebni pri razvijanju koda za bilo koji jezik. Posebno se odnosi na testiranje koda kako biste bili sigurni da funkcioniše, kao i na implementaciju vašeg proširenja na različite testne i produkcijske sisteme.
- AL:Go
AL:Go je set alatki za DevOps koje je napravio Microsoft, a koje rade sa GitHub-om. Sa AL:Go, kada programer završi deo razvoja, automatski se pokreću procesi za testiranje tog koda (Microsoft pruža neke standardne testove, ali programeri mogu napisati svoje sopstvene testove za tu specifičnu funkcionalnost). Kada testovi budu uspešno prošli, kod se automatski kompajlira u novu verziju proširenja koja se zatim implementira na bilo kojem okruženju koje želite. Ova automatizacija testiranja i implementacije znači da se uobičajeni problemi mogu primetiti pre nego što se bilo kakav problematičan kod približi produkcijskom sistemu. Takođe, ovo je veoma korisno kada su u pitanju nadogradnje Business Central-a. Kada Microsoft objavi novu verziju Business Central-a, AL:Go se može koristiti za testiranje svih proširenja koje ste napisali kako bi se osiguralo da ništa neće biti oštećeno. Ako se pronađu greške, programeri dobijaju sve detalje koje su im potrebni kako bi identifikovali i ispravili te probleme. Na taj način, AL:Go omogućava proveru kompatibilnosti vaših proširenja sa novom verzijom Business Central-a, čime se smanjuje rizik od neočekivanih problema pri nadogradnji.