Implementarea writeback

Operaţia de writeback permite utilizatorilor să actualizeze datele din analize.

Subiecte:

Despre operaţia de writeback pentru administratori

Operaţia de writeback permite utilizatorilor să-şi actualizeze datele direct din dashboarduri şi analize.

Utilizatorii care au privilegiul Writeback în baza de date vor putea edita în analizele lor câmpurile de writeback. Valorile pe care le introduc sunt salvate în baza de date. Utilizatorii care au privilegiul Writeback în baza de date vor vedea câmpurile writeback sub formă de câmpuri read-only.

Dacă un utilizator tastează o valoare într-un câmp editabil şi face clic pe butonul de writeback, atunci aplicaţia rulează comanda SQL insert sau update definită într-un şablon de writeback. Când comanda se efectuează cu succes, analiza este actualizată cu noua valoare. Dacă se produce vreo eroare la citirea şablonului sau la rularea comenzii SQL, atunci se afişează un mesaj de eroare.

Comanda insert rulează atunci când o înregistrare nu există încă şi utilizatorul introduce în tabel date noi. În acest caz, un utilizator a tastat într-o înregistrare din tabel în care valoarea iniţială era NULL. Comanda update rulează atunci când un utilizator modifică date existente. Pentru a afişa o înregistrare care încă nu există în tabelul fizic, puteţi crea un alt tabel asemănător. Utilizaţi acest tabel asemănător pentru a afişa înregistrările substituente pe care un utilizator le poate modifica.

Notă:

Când creaţi şabloane de writeback, trebuie să includeţi o comandă insert şi o comandă update, chiar dacă nu sunt utilizate ambele. De exemplu, dacă efectuaţi doar o operaţiune insert, trebuie să includeţi o instrucţiune update necompletată <update></update>, ca în acest cod XML:

Iată un exemplu de fişier XML writeback care conţine două comenzi insert şi două instrucţiuni update necompletate. Pentru a afla mai multe despre cum să creaţi şi să structuraţi fişierele XML writeback, consultaţi Crearea de fişiere şablon write-back.
<?xml version="1.0" encoding="utf-8" ?>
<WebMessageTables xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="oracle.bi.presentation/writebackschemas/v1">
<WebMessageTable lang="en-us" system="WriteBack" table="Messages">
   <WebMessage name="SetQuotaUseID">
      <XML>
         <writeBack connectionPool="Supplier">
            <insert>INSERT INTO regiontypequota VALUES(@{c5f6e60e1d6eb1098},@{c5d7e483445037d9e},'@{c3a93e65731210ed1}','@{c6b8735ea60ff3011}',@{c0432jkl53eb92cd8})</insert>
            <update></update>
         </writeBack>
      </XML>
   </WebMessage>
<WebMessage name="SetForecastUseID">
      <XML>
         <writeBack connectionPool="Supplier">
            <insert>INSERT INTO regiontypeforecast VALUES(@{c83ebf607f3cb8320},@{cb7e2046a0fba2204},'@{c5a93e65d31f10e0}','@{c5a93e65d31f10e0}',@{c7322jkl93ev92cd8})</insert>
            <update></update>
         </writeBack>
      </XML>
   </WebMessage>
</WebMessageTable>
</WebMessageTables>

Activarea writeback în analize şi dashboarduri

Administratorii pot permite utilizatorilor să editeze datele din analize şi dashboarduri.

  1. Configuraţi modelul semantic.

    Notă:

    Urmaţi aceşti paşi dacă utilizaţi Model Administration Tool pentru a dezvolta modele semantice. Dacă utilizaţi modelatorul semantic, consultaţi

    Activare write-back în coloane .

    1. În Model Administration Tool, deschideţi modelul semantic (fişierul .rpd).
    2. În stratul Fizic, faceţi dublu clic pe tabelul fizic care conţine coloana pentru care doriţi să activaţi operaţia de writeback.
    3. În fila General din dialogul Tabel fizic, verificaţi că nu este selectată opţiunea Poate fi stocat în cache. Deselectarea acestei opţiuni permite utilizatorilor Presentation Services să vadă imediat actualizările.
    4. În stratul Model de business şi mapare, faceţi dublu clic pe coloana logică respectivă.
    5. În dialogul Coloană logică, selectaţi Se poate scrie, apoi faceţi clic pe OK.
    6. În stratul Prezentare, faceţi dublu clic pe coloana care corespunde coloanei logice pentru care aţi activat operaţia de writeback.
    7. În dialogul Coloană de prezentare, faceţi clic pe Permisiuni.
    8. Selectaţi permisiunea Citire/Scriere pentru utilizatorii doriţi şi pentru rolurile de aplicaţie corespunzătoare.
    9. Salvaţi modificările.
  2. Creaţi un document XML cu şablonul (sau şabloanele) de write-back. Consultaţi Crearea de fişiere şablon write-back.

    Documentul XML poate conţine mai multe şabloane. Acest exemplu prezintă un document XML care conţine două şabloane (SetQuotaUseID şi SetForecastUseID).

    <?xml version="1.0" encoding="utf-8" ?>
    <WebMessageTables xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="oracle.bi.presentation/writebackschemas/v1">
    <WebMessageTable lang="en-us" system="WriteBack" table="Messages">
       <WebMessage name="SetQuotaUseID">
          <XML>
             <writeBack connectionPool="Supplier">
                <insert>INSERT INTO regiontypequota VALUES(@{c5f6e60e1d6eb1098},@{c5d7e483445037d9e},'@{c3a93e65731210ed1}','@{c6b8735ea60ff3011}',@{c0432jkl53eb92cd8})</insert>
                <update>UPDATE regiontypequota SET Dollars=@{c0432jkl53eb92cd8} WHERE YR=@{c5f6e60e1d6eb1098} AND Quarter=@{c5d7e483445037d9e} AND Region='@{c3a93e65731210ed1}' AND ItemType='@{c6b8735ea60ff3011}'</update>
             </writeBack>
          </XML>
       </WebMessage>
    <WebMessage name="SetForecastUseID">
          <XML>
             <writeBack connectionPool="Supplier">
                <insert>INSERT INTO regiontypeforecast VALUES(@{c83ebf607f3cb8320},@{cb7e2046a0fba2204},'@{c5a93e65d31f10e01}','@{c5a93e65d31f10e0}',@{c7322jkl93ev92cd8})</insert>
                <update>UPDATE regiontypeforecast SET Dollars=@{c7322jkl93ev92cd8} WHERE YR=@{c83ebf607f3cb8320} AND Quarter=@{cb7e2046a0fba2204} AND Region='@{c5a93e65d31f10e01}' AND ItemType='@{c5a93e65d31f10e0}'</update>
             </writeBack>
          </XML>
       </WebMessage>
    </WebMessageTable>
    </WebMessageTables>
    Notă: Trebuie să includeţi un element <insert> şi un element <update>, chiar dacă ambele sunt neutilizate. De exemplu, dacă efectuaţi doar un insert, trebuie să includeţi o instrucţiune de update necompletată <update></update>.
  3. Copiaţi documentul XML care conţine şablonul de writeback în clipboard.
  4. Aplicaţi şablonul de writeback în Oracle Analytics:
    1. Faceţi clic pe Consolă, apoi faceţi clic pe Setări de sistem avansate.
    2. În fişierul XML pentru şablonul writeback, lipiţi şablonul de writeback copiat la pasul 3.
  5. Acordaţi permisiuni de utilizare a codului de writeback:
    1. Navigaţi la pagina Home clasică, apoi faceţi clic pe Administrare.
    2. Sub Securitate, faceţi clic pe Administrare privilegii şi navigaţi la Writeback.
    3. Acordaţi privilegiul Writeback în baza de date utilizatorului autentificat.
    4. Acordaţi privilegiul Administrare writeback administratorului BI Service.
  6. Pentru a activa operaţia de writeback în coloane:
    1. În editorul de analize, afişaţi dialogul Proprietăţi coloană pentru coloana pentru care doriţi să activaţi operaţia de writeback.
    2. În dialogul Proprietăţi coloană, faceţi clic pe fila Writeback.
      Dacă operaţia de write-back a fost activată pentru coloană în modelul semantic, atunci va fi disponibilă caseta Activare write-back.
    3. Selectaţi opţiunea Activare Write Back.
    4. Dacă doriţi, schimbaţi valorile prestabilite pentru alte opţiuni.
    5. Salvaţi modificările.
    Operaţia de writeback este activată pentru orice analiză care include această coloană.
  7. Pentru a activa operaţia de writeback în vizualizări de tabele:
    1. În editorul de analize, deschideţi vizualizarea de tabel pentru editare.
    2. Faceţi clic pe Vizualizare proprietăţi.
    3. În dialogul Proprietăţi tabel, faceţi clic pe fila Writeback.
    4. Selectaţi opţiunea Activare Write Back.
    5. Selectaţi caseta Nume şablon, specificaţi valoarea "WebMessage name=" în şablonul de writeback pe care l-aţi specificat la pasul 2.
      De exemplu, valoarea Nume şablon pentru şablonul prezentat drept exemplu la pasul 2 este 'SetQuotaUseID'.
    6. Salvaţi modificările.

Limitări ale funcţionalităţii write-back

Utilizatorii pot efectua write-back la orice sursă de date care permite executarea interogărilor SQL din Oracle Analytics.

Când efectuaţi configurarea pentru write-back, ţineţi cont de următoarele limitări:

  • Coloanele numerice trebuie să conţină numai numere. Acestea nu trebuie să conţină niciun caracter de formatare a datelor, precum simbolurile pentru dolar ($), simbolurile pentru liră sau diez (#), simbolurile pentru procentaj (%) etc.

  • Coloanele de text trebuie să conţină numai date de tip Şir.

  • Dacă un utilizator conectat vizualizează deja un dashboard care conţine o analiză în care datele au fost modificate prin write-back, datele nu sunt reactualizate automat în dashboard. Pentru a vedea datele actualizate, utilizatorul trebuie să reactualizeze dashboardul manual.

  • Puteţi să utilizaţi mecanismul de şablon numai cu vizualizările de tabele şi numai pentru datele cu o singură valoare. Mecanismul de şablon nu este acceptat pentru vizualizările de tabele pivot sau pentru niciun alt tip de vizualizare, pentru date cu mai multe valori sau pentru coloane derulante cu date cu o singură valoare.

  • Toate valorile din coloanele de write-back sunt editabile. Când sunt afişate într-un context care nu este formatat pt. tipărire, câmpurile editabile sunt afişate ca şi cum utilizatorul are privilegiul Write-back în baza de date. Dar atunci când o coloană logică este mapată la o coloană fizică care se poate modifica, coloana logică returnează valori pentru intersecţii pe mai multe niveluri. Acest scenariu poate cauza probleme.

  • Orice câmp dintr-o analiză poate fi marcat drept câmp de write-back, chiar dacă nu este derivat din tabelul de write-back pe care l-aţi creat. Dar nu puteţi rula cu succes operaţiunea de write-back dacă tabelul nu este activat pentru write-back. Responsabilitatea pentru etichetarea cu corectă cu taguri a câmpurilor revine designerului de conţinut.

  • Un şablon poate conţine şi alte instrucţiuni SQL în afară de insert şi update. Funcţia de write-back transmite aceste instrucţiuni către baza de date. Dar Oracle nu susţine sau nu recomandă utilizarea altor instrucţiuni în afară de insert sau update.

  • Oracle Analytics efectuează doar validarea minimă a intrării de date. În cazul în care câmpul este numeric şi utilizatorul introduce date de tip text, Oracle Analytics detectează acest lucru şi nu permite datelor nevalide să ajungă în baza de date. Dar nu detectează alte forme de intrare cu date nevalide (valori în afara intervalului, date mixte numerice şi de tip text etc.). Când utilizatorul face clic pe butonul Write-back şi este rulată o inserare sau o actualizare, datele nevalide determină afişarea unui mesaj de eroare de la baza de date. Atunci utilizatorul poate să corecteze intrarea incorectă. Designerii de conţinut pot include text în analiza de write-back pentru a ajuta utilizatorul, de exemplu, "Introducerea valorilor alfanumerice mixte într-un câmp de date numeric nu este permisă."

  • Mecanismul de şablon nu este adecvat pentru introducerea înregistrărilor arbitrare noi. Cu alte cuvinte, nu-l utilizaţi ca instrument de introducere a datelor.

  • La crearea unui tabel pentru write-back, asiguraţi-vă că cel puţin o coloană nu include capacitatea de write-back, dar include valorile care sunt unice pentru fiecare rând şi care nu sunt NULL.

  • Analizele de write-back nu acceptă detalierea. Deoarece detalierea modifică structura tabelului, şablonul de write-back nu funcţionează.

    Atenţie:

    Mecanismul de şablon preia intrarea utilizatorului şi o scrie direct în baza de date. Dumneavoastră vă revine responsabilitatea pentru securitatea bazei de date fizice. Pentru securitate optimă, stocaţi tabelele bazei de date de write-back într-o instanţă de bază de date unică.

Crearea de fişiere şablon write-back

Un fişier şablon de write-back este un fişier formatat XML, care conţine unul sau mai multe şabloane de write-back.

Un şablon de write-back este compus dintr-un element WebMessage, care specifică numele şablonului, centralizatorul de conexiuni şi instrucţiunile SQL, care sunt necesare pentru a insera şi a actualiza înregistrările din tabelele şi coloanele de write-back pe care le-aţi creat. Când designerii de conţinut activează o vizualizare de tabel pentru write-back, aceştia trebuie să specifice numele şablonului de write-back de utilizat pentru a insera şi actualiza înregistrările din vizualizarea de tabel.

Cerinţe pentru un şablon de write-back

Un şablon de write-back trebuie să îndeplinească următoarele cerinţe:

  • WebMessage: Trebuie să specificaţi un nume pentru şablonul de write-back utilizând atributul name din elementul WebMessage.

    Pentru ca operaţiunea de write-back să aibă loc corect, în timpul activării unei vizualizări de tabel pentru write-back, un designer de conţinut trebuie să specifice numele şablonului de write-back de utilizat pentru a insera şi actualiza înregistrările din vizualizare.

    Acest exemplu prezintă un şablon de write-back denumit SetQuotaUseID.

    <WebMessage name="SetQuotaUseID">
    
  • connectionPool: Pentru a îndeplini cerinţele de securitate, trebuie să specificaţi centralizatorul de conexiuni şi comenzile SQL pentru inserarea şi actualizarea înregistrărilor. Aceste comenzi SQL referă valorile care sunt transmise în schema de write-back, pentru a genera instrucţiunile SQL pentru modificarea tabelului din baza de date.

  • VALUES: Valorile din coloană pot fi referite prin ID-ul coloanei sau poziţia coloanei. Se preferă utilizarea ID-ului coloanei.

    Încadraţi valorile pentru şir şi dată între ghilimele simple. Ghilimelele simple nu sunt obligatorii pentru valorile numerice.

    • ID coloană - Fiecare ID de coloană este alfanumeric şi se generează aleatoriu. Puteţi găsi ID-urile de coloană în definiţia XML a analizei care este disponibilă în fila Avansat din editorul Analiză. De exemplu, valori pentru ID-urile de coloană, cum ar fi: @{c5f6e60e1d6eb1098}, @{c3a93e65731210ed1}, '@{c6b8735ea60ff3011}'

      Când utilizaţi ID-uri de coloană, operaţiunea de write-back continuă să funcţioneze chiar şi când ordinea coloanelor se modifică.

      XML în fila Avansat din editorul Analiză

    • Poziţie coloană - Poziţiile coloanelor încep numerotarea cu 1. De exemplu, valori pentru poziţiile coloanelor, cum ar fi: @1, @3, '@5'

      Dacă ordinea coloanelor se modifică, operaţiunea de write-back nu mai funcţionează şi acesta este motivul pentru care sunt preferate ID-urile de coloană.

  • Trebuie să includeţi un element <insert> şi unul <update> în şablon. Dacă nu doriţi să includeţi comenzi SQL în elemente, atunci trebuie să inseraţi un spaţiu gol între tagurile de deschidere şi de închidere. De exemplu, trebuie să introduceţi elementul ca:

    <insert> </insert>
    

    În loc de:

    <insert></insert>
    

    Dacă omiteţi spaţiul gol, atunci veţi vedea un mesaj de eroare la write-back, cum ar fi "Sistemul nu poate să citească şablonul de write-back 'my_template'".

  • Dacă tipul datelor unui parametru nu este un număr întreg sau real, atunci încadraţi-l între ghilimele simple. Dacă baza de date nu efectuează confirmări în mod automat, atunci adăugaţi nodul opţional postUpdate după nodurile insert şi update pentru a impune confirmarea. De obicei, nodul postUpdate urmează acest exemplu:

    <postUpdate>COMMIT</postUpdate>
    

Exemplu de fişier şablon de write-back care utilizează sintaxa ID-urilor de coloană

Un fişier şablon de write-back care referă valorile după ID-ul de coloană poate fi asemănător cu acest exemplu:

<?xml version="1.0" encoding="utf-8" ?>
<WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1">
<WebMessageTable lang="en-us" system="WriteBack" table="Messages">
   <WebMessage name="SetQuotaUseID">
      <XML>
         <writeBack connectionPool="Supplier">
            <insert>INSERT INTO regiontypequota VALUES(@{c5f6e60e1d6eb1098},@{c5d7e483445037d9e},'@{c3a93e65731210ed1}','@{c6b8735ea60ff3011}',@{c0432jkl53eb92cd8})</insert>
            <update>UPDATE regiontypequota SET Dollars=@{c0432jkl53eb92cd8} WHERE YR=@{c5f6e60e1d6eb1098} AND Quarter=@{c5d7e483445037d9e} AND Region='@{c3a93e65731210ed1}' AND ItemType='@{c6b8735ea60ff3011}'</update>
         </writeBack>
      </XML>
   </WebMessage>
</WebMessageTable>
</WebMessageTables>

Exemplu de fişier şablon de write-back care utilizează sintaxa poziţiilor coloanelor

Un fişier şablon de write-back care referă valorile după poziţia coloanei poate fi asemănător cu acest exemplu:

<?xml version="1.0" encoding="utf-8" ?>
<WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1">
<WebMessageTable lang="en-us" system="WriteBack" table="Messages">
   <WebMessage name="SetQuota">
      <XML>
         <writeBack connectionPool="Supplier">
            <insert>INSERT INTO regiontypequota VALUES(@1,@2,'@3','@4',@5)</insert>
            <update>UPDATE regiontypequota SET Dollars=@5 WHERE YR=@1 AND Quarter=@2 AND Region='@3' AND ItemType='@4'</update>
         </writeBack>
      </XML>
   </WebMessage>
</WebMessageTable>
</WebMessageTables>