S aplikacemi, které se obejdou bez jakékoliv integrace, se již
dnes často nesetkáme. Zajištění propojení s externími systémy či službami se
tak stává pro vývojáře a programátory jednou z největších výzev. Znamená to
opustit důvěrně známé vody vlastního kódu a spoléhat se na nabízená rozhraní a
k nim dostupnou dokumentaci. Jedná se tak zpravidla o časově náročnou
záležitost a čas jsou peníze.
To si uvědomila i společnost CData a přišla s řešením, které
je jednoduché, a především rychle aplikovatelné. Myšlenku, na které je
technologie konektorů založena, nejlépe charakterizuje slogan, který má
společnost CData na svých webových stránkách: "Dívejte se na svět jako na
databázi".
CData vytvořila mezivrstvu, která využívá nativní API
integrovaných systémů, aby ji následně uživatelům zpřístupnila, jako by se
jednalo o standardní relační databázi, se kterou lze komunikovat s využitím
standardního jazyka SQL. Tím odpadá nutnost studovat nové protokoly či API,
které se navíc neustále vyvíjí a mění. Speciálně pro vývojová prostředí Delphi a C++Builder pak
vznikla (a je dále rozšiřována) sada ovladačů pro použití s populární technologií
FireDAC.
Použití v aplikaci
Instalace jednotlivých konektorů jsou dostupné přímo z
prostředí Delphi, C++Builderu nebo RAD Studia. Stačí spustit "GetIt
Package Manager", (Hlavní nabídka prostředí -> Tools -> GetIt) a pro
rychlejší nalezení požadovaného ovladače použít filtrování (je zde přímo
kategorie "Connectors") nebo vyhledávání. Následně již jen spustíte
instalaci zvoleného ovladače kliknutím na tlačítko "INSTALL".
Po dokončení instalace nalezneme vybrané konektory v paletě
nástrojů, v sekci "FireDAC Links".
Práci s konektory si můžeme ukázat na propojení s emailovou
službou Seznam. Založíme novou aplikaci VCL a pro uživatelské rozhraní použijeme
komponenty "FDConnecion", "FDTable", "DBMemo",
"ComboBox", "FDGUIxWaitCursor", "DataSource" a
"DBGrid".
Pro vlastní připojení k serverům společnosti Seznam použijeme
komponentu TFDConnection, kterou si pojmenujeme například "EmailCnn":
procedure TwMain.btnConnectClick(Sender: TObject);
begin
EmailCnn.Connected
:= False;
EmailCnn.Params.Clear;
EmailCnn.Params.Add('DriverID=CData.Email');
EmailCnn.Params.Add('User=adresa@email.cz');
EmailCnn.Params.Add('Password=heslo');
EmailCnn.Params.Add('Server=imap.seznam.cz');
EmailCnn.Params.Add('SMTPServer=77.75.76.48');
EmailCnn.Params.Add('Port=993');
EmailCnn.Params.Add('MaxItems=10');
EmailCnn.Params.Add('SMTPPort=465');
EmailCnn.Params.Add('IncludeMessage=True');
EmailCnn.Params.Add('IsHTML=False');
EmailCnn.Connected
:= True;
FDTable.Connection
:= EmailCnn;
end;
Po úspěšném připojení je třeba zvolit, která data má aplikace
zobrazovat. V praxi to znamená vybrat si z tabulek, které jsou pro daný systém (v
našem případě email) definovány. Zde se buď musíme podívat do dokumentace, zvolit
tabulku dle názvu v okně ObjectInspector (musí být vybrána komponenta
"FDTable" a připojena k aktivní "FDConnection"), nebo můžeme
využít vlastností technologie FireDAC, načíst dostupné tabulky z „metadat“ a
nechat výběr na uživateli.
procedure TwMain.ComboBox1Click(Sender: TObject);
var
tbName: String;
i: Integer;
begin
tbName :=
ComboBox1.Text;
FDQuery1.Active :=
False;
FDQuery1.SQL.Clear;
if tbName.Length
> 0 then
FDQuery1.SQL.Add('select * from ' + tbName);
FDQuery1.Open();
DataSource1.DataSet
:= FDTable;
DBGrid.DataSource :=
DataSource1;
DBMemo1.DataSource
:= DataSource1;
DBMemo1.DataField :=
'MessageBody';
end;
Protože tabulky, se kterými pracujeme jsou pouze virtuální a
neříkají nic o skutečné struktuře systému, není zpravidla možné jednoduše
vložit data do některé z tabulek. Může zde být řada vazeb a integritních
omezení.
Pokud se budeme držet příkladu s e-mailovým serverem, je
celkem zřejmé, že vložením záznamu do tabulky odeslané pošty k odeslání zprávy
nedojde. I toto však CData řeší databázovými prostředky. Podobně jako virtuální
tabulky, vytváří ovladač také sadu uložených procedur. Do projektu tak stačí
přidat komponentu "FDStoredProcedure" a napojit ji na dříve
definovanou "FDConnection". Pro požadovanou operace pak již jen stačí
zavolat příslušnou proceduru.
procedure TwMain.btnSendEmailClick(Sender: TObject);
var
result: Integer;
begin
FDStoredProc1.Close;
FDStoredProc1.FetchOptions.Items := FDStoredProc1.FetchOptions.Items -
[fiMeta];
FDStoredProc1.StoredProcName := 'CData.SendMailMessage';
FDStoredProc1.Prepare;
FDStoredProc1.Params.ParamByName('To').AsString := 'adresa@embt.cz';
FDStoredProc1.Params.ParamByName('Subject').AsString := 'Předmět
zprávy';
FDStoredProc1.Params.ParamByName('From').AsString :=
'adresa@email.cz';
FDStoredProc1.Params.ParamByName('MessageBody').AsString := 'Tělo zprávy';
FDStoredProc1.Params.ParamByName('Attachment#').AsString :=
'C:\TMP\Priloha.txt';
FDStoredProc1.Params.ParamByName('IsHTML').AsString := 'True';
FDStoredProc1.Open;
result :=
FDStoredProc1.Params.ParamByName('MessageId').AsInteger;
if result > 0
then
ShowMessage('ID
odeslané zprávy: ' + IntToStr(result));
end;
Aktuálně je k dispozici 83 ovladačů pro populární podnikové
systémy z oblastí ekonomiky, účetnictví, řízení vztahů se zákazníky (CRM) nebo
řízení podnikových zdrojů (ERP). Dále jsou zde obsaženy konektory pro cloudové
služby, platební systémy, datové formáty či sociální sítě.
Konektory nejsou nabízeny jednotlivě, ale v sadách. Vybrat
si můžete variantu Enterprise nebo více vybavenou Enterprise+. Sada Enterprise obsahuje:
V sadě Enterprise+ naleznete navíc ještě tyto konektory: