Možnosti odoslania InfoPath formulára a použitie Universal Data Connection

Publikoval Michal Kočí dňa 27.4.2007 o 03:19 v kategórii InfoPath

Tento príspevok sa jednak pozrie na možnosti odoslania InfoPath formulára a jednak na UDC. V minulom príspevku (Webové InfoPath formuláre ) som spomenul, že sa pozriem na dátové spojenia (Universal Data Connection, UDC) a že objasním čo to je, na čo sa to používa a ké dva základné typy poznáme. Ak vyvýjate InfoPath formuláre a najmä tie webové, potom vedzte že o UDC musíte vedieť aspoň to, čo popíšem v tomto príspevku.

Isto ste si všimli, alebo ste pochopili, alebo jednoducho viete, že zmyslom InfoPath formulára je zber údajov od používateľa. To, že informácie od užívateľa získate je však len jedna časť práce. Druhá, ktorá musí logicky nasledovať je odoslanie dát na ďaľšie spracovanie.

Odoslanie formulára (Submit) je možné na jedným alebo viacerými z nasledovných spôsobov:

  • Emailom - vtedy sa vytvorí emailová správa, ktorá obsahuje Váš formulár v takom výzore, aký vidí užívateľ, prípadne môže byť formulár odoslaný ako prílloha. Odoslanie e-mailom sa nám osvedčilo v prípade, kedy formulár slúži ako akýsi report, ktorý od užívateľa vyzbiera informácie a pošle ich preddefinovaným užívateľom, alebo užívateľom, ktorých e-mailové adresy užívateľ rovnako zadá niekde na formulári. O odoslaní e-mailom by som chcel v budúcnosti tiež napísať jeden príspevok.
  • Do knižnice dokumentov v SharePointe - vtedy sa formulár odošle do Vami nastavenej knižnice dokumentov v SharePointe (Document Library), kde k nej má prístup užívateľ aj v budúcnosti. Toto sa nám osvedčilo v prípade, kde sme potrebovali, aby sa užívateľ mohol k formuláru kedykoľvek vrátiť. Ak používate webové formuláre, tak vedzte že aj formuláre uložené v knižnici dokumentov je možné zobraziť vo webovom prehliadači. Rovnako je však možné ich nechať zobraziť v Microsoft InfoPath 2007. Záleží len na nastavení knižnice dokumentov, ktoré zobrazenie bude defaultné.
  • Webovej službe - vtedy si nastavíte ktorú metódu webovej služby chcete použiť a namapujete jej parametre na elementy hlavného dátového zdroja. Toto sa nám osvedčilo keď sme dáta potrebovali dostať do jedného z našich systémov. Vytvorili sme webovú službu ktorá kominukuje so systémom cez jeho API a navonok publikuje metódy ktoré potrebujeme.
  • Hostujúcemu prostrediu - vtedy sú údaje odoslané hostujúcemu prostrediu. Toto sa používa ak formulár je súčasťou Workflow v MOSS. Vtedy sú údaje predané až do Workflow kde s nimi môžete ďalej ľubovolne pracovať, napríklad podľa nich nasmerovať tok workflow.

Keď sa teraz nad tým zamyslíte, tak je síce príjemné, že môžete využiť jeden z uvedených spôsobov. Ale čo v prípade, že sa napríklad zmení URL webovej služby? Alebo ak vyvýjate univerzálny formulár, ktorý má byť prístupný z viacerých site collections a v každej je cieľ trochu iný? Ak je URL pevne zakomponované vo formulári, potom s každou zmenou by ste museli modifkovať formulár. Ak by ste navyše formulár vypublikovali na farmu a aktivovali ho pre viacero site collections, všetky by používali tú natvrdo nastavenú URL, čo nie je vždy dobré. Odpoveďou na tieto problémy sú dátové spojenia - Universal Data Connections, UDC.

Pri použití UDC vlastne pridáte ďaľší článok. Váš formulár nebude vedieť kde presne má dáta odoslať, ale bude vedieť, kde tieto informácie zistiť. Bude v sebe totiž odkazovať na UDC. Bude teda vedieť aký spôsob spojenia sa bude realizovať (email, webová služba, ...) a bude si vedieť zistiť presnú destináciu.

Kde sú teda UDC uložené? No, to záleží na tom, aký typ UDC použijete. Sú dva typy a každý má svôj spôsob použitia:

  • Prvý typ je centrálne úložisko pre celú farmu (Centrally managed connection library) a spravuje sa cez centrálnu administráciu (Central Administration). Z toho pramení jeden zásadný fakt, ktorý ovplyvňuje to, či je tento typ pre Vás vhodný a to, že nech vypublikujete Váš formulár do ktorejkoľvek site collection, vždy sa obráti na jeden a ten istý dátový zdroj. Teda, nech sa formulár bude nachádzať na ktorejkoľvek site collection, vždy bude používať tú istú URL. Použitie v našom prípade bolo, ak cieľom odoslania dát bola webová služba. Chceli sme aby sa formulár z ktorejkoľvek site collection obrátil na tú istú webovú službu. V tomto prípade publikujete UDC súbor iba raz nehľadiac na počet site collection pre ktoré ste formulár aktivovali.
  • Druhý typ je relatívne úložisko (Relative to site collection), relatívne vzhľadom k site collection. Z toho vyplýva, že každá site collection na ktorej chcete používať formulár obsahuje vlastné dátové spojenie a preto každá môže odkazovať na inú URL. Použitie je vhodné, ak nechcete aby formuláre zo všetkých site collection používali tú istú URL na odoslanie dát. Použitie v našom prípade bolo, ak cieľom odoslania dát bola knižnica dokumentov, kedy sme chceli aby formulár odosielal dáta do tej istej site collection v ktorej sa nachádza. Preto musela každá site collection obsahovať vlastné UDC. V tomto prípade teda publikujete UDC súbor presne toľko krát, koľko site collection používa Váš formulár.

Ako teda vo vnútri vyzerá UDC súbor? Jedná sa o XML súbor, teda raz keď ho máte vytvorený, tak zmena URL sa rovná jeho otvoreniu v ľubovoľnom textovom editore, napríklad v Notepade a prepis hodnoty jedného elementu. Príklad UDC:

<?xml version="1.0" encoding="UTF-8"?>
<?MicrosoftWindowsSharePointServices 
  ContentTypeID="0x010100B4CBD48E029A4ad8B62CB0E41868F2B0"?>
<udc:DataSource MajorVersion="2" MinorVersion="0" 
  xmlns:udc="http://schemas.microsoft.com/office/infopath/2006/udc">
  <udc:Name>BackupNodeConfiguration_saveSupportRequest</udc:Name>
  <udc:Description>Format: UDC V2; ...</udc:Description>
  <udc:Type MajorVersion="2" MinorVersion="0" Type="WebService">
    <udc:SubType MajorVersion="0" MinorVersion="0" Type=""/>
  </udc:Type>
  <udc:ConnectionInfo Purpose="WriteOnly" AltDataSource="">
    <udc:WsdlUrl>http://localhost/SimpleService.aspx?wsdl</udc:WsdlUrl>
    <udc:SelectCommand>
      <udc:ListId/>
      <udc:WebUrl/>
      <udc:ConnectionString/>
      <udc:ServiceUrl UseFormsServiceProxy="false"/>
      <udc:SoapAction/>
    <udc:Query/>
    </udc:SelectCommand>
    <udc:UpdateCommand>
      <udc:ServiceUrl UseFormsServiceProxy="false">
        http://localhost/SimpleService.asmx
      </udc:ServiceUrl>
      <udc:SoapAction/>
      <udc:Submit/>
      <udc:FileName/>
      <udc:FolderName AllowOverwrite=""/>
    </udc:UpdateCommand>
    <!--udc:Authentication>
      <udc:SSO AppId='' CredentialType='' />
    </udc:Authentication-->
  </udc:ConnectionInfo>
</udc:DataSource>

Na príklade vidieť, že je vyplnený iba Update Command, t.j. sa jedná o submit spojenie (ešte môže byť aj retrieve, kedy načítavate nejaké dáta, napríklad hodnoty pre číselník na formulári). Tiež je vidno, že sa jedná o volanie webovej služby, vidieť URL služby a URL WSDL, čiže popisu služby. Zakomentovaný je element Authentication. Tento je možné použiť ak sa potrebujete voči cieľu autentifikovať a chcete použiť SSO (Single SignOn).

Ak sa Vám UDC nechce vytvárať ručne, čo sa Vám asi nechce, existuje aj jednoduchší a praktickejší spôsob, necháte si ho jednoducho vygenerovať InfoPath-om. Keď máte vytvorené dátové spojenie, potom v menu Tools / Data Connections si vyberiete dátové spojenie a kliknete na tlačidlo Convert:

V sprievodcovi si vyberiete ktorý spôsob publikovania chcete použiť, či centrálny alebo relatívny:

Ak použijete relatívny, musíte UDC publikovať do knižnice dátových spojení (Data Connection Library), ktorú si vopred musíte vytvoriť.

V knižnici ho potom povoľte (z menu súboru vyberte Approve/Reject a v nasledujúcom okne potvrďte Approve).

Ak aj použijete centrálny, najskôr si musíte UDC vypublikovať do nejakej knižnice, takže si knižnicu spojení vytvorte tak či tak. Pri centrálnom spôsobe si potom súbor z knižnice stiahnite na disk, upravte ak je to treba a vypublikujte ho v centrálnej administrácii: Central Administration / Application Management / Manage data connection files:

Kedykoľvek potom potrebujete zmeniť URL, stačí si z príslušnej knižnice dátových spojení stiahnuť UDC, prepísať URL a UDC znovu nahrať do príslušnej dátovej knižnice.

Mohlo by ťa tiež zaujímať

Páčil sa ti príspevok?

Zdieľaj príspevok alebo si ho odlož na neskôr

Sleduj ma

Ak nechceš premeškať príspevky ako je tento, sleduj ma na Twitteri, alebo ak máš RSS čítačku, môžeš sledovať môj RSS kanál.