Wdrażanie funkcji zapisu zwrotnego

Funkcja zapisu zwrotnego umożliwia użytkownikom aktualizowanie danych bezpośrednio z analiz.

Tematy:

Zapis zwrotny — informacje podstawowe (dla administratorów)

Funkcja zapisu zwrotnego umożliwia użytkownikom aktualizowanie danych bezpośrednio z pulpitów informacyjnych i analiz.

Użytkownicy mający uprawnienie Zapisywanie zwrotne w bazie danych widzą w analizach pola z włączonym zapisem zwrotnym jako pola edytowalne. Wartości wprowadzane w tych polach są zapisywane w bazie danych. Użytkownicy niemający uprawnienia Zapisywanie zwrotne w bazie danych widzą pola z włączonym zapisem zwrotnym jako pola tylko do odczytu.

Jeśli użytkownik wpisze jakąś wartość w polu edytowalnym i naciśnie przycisk zapisu zwrotnego, aplikacja uruchomi polecenie SQL insert lub update zdefiniowane w szablonie zapisu zwrotnego. Jeśli polecenie zostanie pomyślnie wykonane, analiza jest aktualizowana z użyciem nowej wartości. Jeśli podczas odczytywania szablonu lub uruchamiania polecenia SQL wystąpi błąd, zostanie wyświetlony komunikat o błędzie.

Polecenie insert jest uruchamiane, gdy rekord jeszcze nie istnieje, a użytkownik wprowadzi nowe dane do tabeli. Oznacza to, że użytkownik wpisał wartość w polu rekordu tabeli, które pierwotnie miało wartość Null. Polecenie update jest uruchamiane, gdy użytkownik zmodyfikuje istniejące dane. Aby wyświetlić rekord, który jeszcze nie istnieje w tabeli fizycznej, można utworzyć inną podobną tabelę. Tabeli tej można następnie użyć do wyświetlania rekordów-wypełniaczy, które użytkownik może modyfikować.

Uwaga:

Przy tworzeniu szablonów zapisu zwrotnego konieczne jest umieszczanie w nich zarówno polecenia insert, jak i polecenia update, nawet wówczas, gdy nie są faktycznie wykorzystywane oba z nich. Na przykład jeśli jest wykonywana tylko operacja insert, należy umieścić pustą instrukcję update (<update></update>), jak w poniższym kodzie XML:

Poniżej pokazano przykładowy plik XML zapisu zwrotnego zawierający dwa polecenia insert i dwie puste instrukcje update. Aby dowiedzieć się więcej na temat tworzenia plików XML zapisu zwrotnego i nadawania im odpowiedniej struktury, zob. Tworzenie plików szablonów zapisu zwrotnego.
<?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>

Włączanie zapisu zwrotnego w analizach i pulpitach informacyjnych

Administratorzy mogą umożliwić użytkownikom edycję danych w analizach i pulpitach informacyjnych.

  1. Przygotować model semantyczny.

    Uwaga:

    Jeśli do tworzenia modeli semantycznych jest używane narzędzie Model Administration Tool, należy wykonać następujące czynności. Jeśli jest używane narzędzie Semantic Modeler, zob.

    Włączanie zapisu zwrotnego w kolumnach .

    1. W narzędziu Model Administration Tool otworzyć model semantyczny (plik .rpd).
    2. W warstwie fizycznej kliknąć dwukrotnie na tabeli fizycznej, zawierającej kolumnę, dla której ma zostać włączona możliwość zapisu zwrotnego.
    3. Na karcie Ogólne okna dialogowego "Tabela fizyczna" upewnić się, że nie jest wybrana opcja Może być buforowane. Jeśli ta opcja nie jest wybrana, użytkownicy Presentation Services będą od razu widzieć aktualizacje.
    4. W warstwie "Model biznesowy i mapowanie" kliknąć dwukrotnie na odpowiadającej kolumnie logicznej.
    5. W oknie dialogowym "Kolumna logiczna" wybrać opcję Możliwość zapisu, po czym nacisnąć przycisk OK.
    6. W warstwie "Prezentacja" kliknąć dwukrotnie na kolumnie odpowiadającej kolumnie logicznej, zawierającej kolumnę, dla której została włączona możliwość zapisu zwrotnego.
    7. W oknie dialogowym "Kolumna prezentacji" wybrać Uprawnienia.
    8. Wybrać uprawnienie Odczyt/zapis dla odpowiednich użytkowników i ról poziomu aplikacji.
    9. Zapisać dokonane zmiany.
  2. Utworzyć dokument XML z szablonem (lub szablonami) zapisu zwrotnego. Zob. Tworzenie plików szablonów zapisu zwrotnego.

    Dokument XML może zawierać wiele szablonów. W tym przykładzie pokazano dokument XML, który zawiera dwa szablony (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>
    Uwaga: konieczne jest umieszczenie zarówno elementu <insert>, jak i elementu <update>, nawet wówczas, gdy nie są faktycznie wykorzystywane oba z nich. Na przykład jeśli jest wykonywana tylko operacja insert, należy umieścić pustą instrukcję update (<update></update>).
  3. Skopiować do schowka dokument XML zawierający szablony zapisu zwrotnego.
  4. Zastosować swój szablon zapisu zwrotnego w Oracle Analytics:
    1. Wybrać opcję Konsola, a następnie Ustawienia systemowe.
    2. W obszarze XML szablonu zapisu zwrotnego wkleić szablon, który został skopiowany w kroku 3.
  5. Przypisać uprawnienia zezwalające na używanie kodu zapisu zwrotnego:
    1. Przejść na stronę startową Classic, po czym kliknąć na łączu Administrowanie.
    2. W obszarze Zabezpieczenia wybrać Zarządzanie uprawnieniami, po czym przejść do opcji Zapis zwrotny.
    3. Przyznać uprawnienie Zapisywanie zwrotne w bazie danych roli Zidentyfikowany użytkownik.
    4. Przyznać uprawnienie Zarządzanie zapisywaniem zwrotnym roli Administrator usługi BI.
  6. Aby włączyć zapis zwrotny w kolumnach:
    1. W edytorze analiz wyświetlić właściwości kolumny, dla której ma zostać włączona możliwość zapisu zwrotnego.
    2. W oknie "Właściwości kolumny" kliknąć na karcie Zapis zwrotny.
      Jeśli dla kolumny istnieje możliwość zapisu zwrotnego w modelu semantycznym, jest dostępne pole wyboru Włącz zapis zwrotny.
    3. Wybrać opcję Włącz zapis zwrotny.
    4. Jeśli mają zostać zmienione ustawienia domyślne, określić wartości innych opcji.
    5. Zapisać dokonane zmiany.
    Została włączona możliwość zapisu zwrotnego dla kolumny z dowolnej, zawierającej ją analizy.
  7. Aby włączyć zapis zwrotny w widokach tabel:
    1. W edytorze analiz otworzyć widok tabeli do edycji.
    2. Nacisnąć przycisk Właściwości widoku.
    3. W oknie dialogowym "Właściwości kolumny" kliknąć na karcie Zapis zwrotny.
    4. Wybrać opcję Włącz zapis zwrotny.
    5. Zaznaczyć pole wyboru Nazwa szablonu, po czym określić wartość "WebMessage name=" w szablonie zapisu zwrotnego, określonym w punkcie 2.
      Na przykład wartością Nazwa szablonu z przykładowego szablonu z punktu 2 jest "SetQuotaUseID".
    6. Zapisać dokonane zmiany.

Ograniczenia dotyczące zapisu zwrotnego

Użytkownicy mogą wykonywać zapis zwrotny w dowolnym źródle danych, które umożliwia wykonywanie zapytań SQL z Oracle Analytics .

Podczas konfigurowania zapisu zwrotnego należy pamiętać o następujących ograniczeniach:

  • Kolumny liczbowe mogą zawierać tylko liczby. Nie mogą one zawierać żadnych znaków formatowania danych, takich jak znak dolara ($), znak funta lub kratki (#), znak procentu (%) itp.

  • Kolumny tekstowe mogą zawierać tylko dane napisowe.

  • Jeśli zalogowany użytkownik wyświetla już pulpit informacyjny zawierający analizę obejmującą dane, które zostały zmodyfikowane przy użyciu zapisu zwrotnego, te dane nie będą automatycznie odświeżane na pulpicie informacyjnym. Aby zobaczyć zaktualizowane dane, użytkownik będzie musiał ręcznie odświeżyć pulpit informacyjny.

  • Mechanizmu szablonu można używać tylko z widokami tabeli i tylko w odniesieniu do danych jednowartościowych. Mechanizm szablonu nie jest obsługiwany w przypadku widoków tabel przestawnych oraz widoków innych typów, danych wielowartościowych ani kolumn rozwijanych z danymi jednowartościowymi.

  • Wszystkie wartości w kolumnach zapisu zwrotnego można edytować. W przypadku wyświetlania w kontekście nieprzystosowanym do druku pola, które można edytować, są wyświetlane tak, jakby użytkownik miał uprawnienie Zapisywanie zwrotne w bazie danych. Jednak gdy kolumna logiczna jest zmapowana na kolumnę fizyczną, którą można zmienić, kolumna logiczna zwraca wartości dla przecięć na wielu poziomach. Taki scenariusz może powodować problemy.

  • Każde pole w analizie można oflagować jako pole zapisu zwrotnego, nawet jeśli nie pochodzi ono z utworzonej przez użytkownika tabeli zapisu zwrotnego. Nie można jednak pomyślnie uruchomić operacji zapisu zwrotnego, jeśli w tabeli nie jest włączona obsługa zapisu zwrotnego. Za poprawne tagowanie pól odpowiedzialny jest projektant zawartości.

  • Szablon może zawierać instrukcje SQL inne niż insert i update. Funkcja zapisu zwrotnego przekazuje te instrukcje do bazy danych. Jednak Oracle nie obsługuje ani nie zaleca używania instrukcji innych niż insert i update.

  • Oracle Analytics wykonuje tylko minimalną weryfikację danych wejściowych. Jeśli pole jest liczbowe, a użytkownik wprowadzi dane tekstowe, Oracle Analytics to wykryje i uniemożliwi wprowadzenie niepoprawnych danych do bazy danych. Nie wykryje jednak innych form wprowadzania niepoprawnych danych (wartości poza zakresem, połączenie danych tekstowych i liczbowych itp.). Gdy użytkownik kliknie przycisk zapisu zwrotnego i zostanie uruchomiona operacja wstawiania lub aktualizacji, niepoprawne dane spowodują zwrócenie komunikatu o błędzie z bazy danych. Następnie użytkownik będzie mógł poprawić błędne dane wejściowe. Projektanci zawartości mogą uwzględniać w analizie zapisu zwrotnego tekst stanowiący informację dla użytkownika, taki jak "Wprowadzanie mieszanych wartości alfanumerycznych w polu danych liczbowych jest niedozwolone".

  • Mechanizm szablonu nie nadaje się do wprowadzania dowolnych nowych rekordów. Innymi słowy nie można używać go jako narzędzia do wprowadzania danych.

  • Podczas tworzenia tabeli na potrzeby zapisu zwrotnego należy upewnić się, że co najmniej jedna kolumna nie zawiera funkcji zapisu zwrotnego, ale zawiera wartości, które są unikatowe dla każdego wiersza i inne niż Null.

  • Analizy zapisu zwrotnego nie obsługują drążenia w dół. Drążenie w dół powoduje modyfikację struktury tabeli, co uniemożliwia działanie szablonu zapisu zwrotnego.

    Ostrzeżenie:

    Mechanizm szablonu przyjmuje dane wejściowe użytkownika i zapisuje je bezpośrednio w bazie danych. Odpowiedzialność za zabezpieczenia fizycznej bazy danych ponosi użytkownik. W celu uzyskania optymalnych zabezpieczeń należy przechowywać tabele bazy danych zapisu zwrotnego w unikatowej instancji bazy danych.

Tworzenie plików szablonów zapisu zwrotnego

Plik szablonów zapisu zwrotnego to plik w formacie XML zawierający co najmniej jeden szablon zapisu zwrotnego.

Szablon zapisu zwrotnego zawiera element WebMessage określający nazwę szablonu, pulę połączeń oraz instrukcje SQL, które są potrzebne do wstawiania i aktualizowania rekordów w tworzonych przez użytkownika tabelach i kolumnach zapisu zwrotnego. Podczas włączania widoku tabeli dla zapisu zwrotnego projektanci zawartości muszą określić nazwę szablonu zapisu zwrotnego, który ma być używany w celu wstawiania i aktualizowania rekordów w widoku tabeli.

Wymagania dotyczące szablonu zapisu zwrotnego

Szablon zapisu zwrotnego musi spełniać następujące wymagania:

  • WebMessage: należy określić nazwę szablonu zapisu zwrotnego, używając atrybutu name w elemencie WebMessage.

    Aby zapis zwrotny działał poprawnie, projektant zawartości musi podczas włączania widoku tabeli dla zapisu zwrotnego określić nazwę szablonu zapisu zwrotnego, który będzie używany do wstawiania i aktualizowania rekordów w widoku.

    W tym przykładzie pokazano szablon zapisu zwrotnego o nazwie SetQuotaUseID.

    <WebMessage name="SetQuotaUseID">
    
  • connectionPool: aby spełnić wymagania dotyczące zabezpieczeń, należy określić pulę połączeń wraz poleceniami SQL, które będą używane w celu wstawiania i aktualizowania rekordów. Te polecenia SQL odwołują się do wartości przekazywanych w schemacie zapisu zwrotnego w celu wygenerowania instrukcji SQL służących do modyfikowania tabeli bazy danych.

  • VALUES: do wartości w kolumnach można odwoływać się za pomocą ID kolumny lub pozycji kolumny. Preferowane jest używanie ID kolumny.

    Wartości napisowe i wartości daty należy umieszczać w apostrofach. Apostrofy nie są wymagane w przypadku wartości liczbowych.

    • ID kolumny - każdy ID kolumny jest alfanumeryczny i został wygenerowany losowo. ID kolumn można znaleźć w definicji XML analizy, która jest dostępna na karcie Zaawansowane w edytorze analiz. Następujące wartości są przykładowymi ID kolumn: @{c5f6e60e1d6eb1098}, @{c3a93e65731210ed1}, '@{c6b8735ea60ff3011}'

      Gdy są używane ID kolumn, zapis zwrotny działa nawet po zmianie kolejności kolumn.

      Kod XML na karcie "Zaawansowane" w edytorze analiz

    • Pozycja kolumny - numerowanie pozycji kolumn rozpoczyna się od 1. Następujące wartości są przykładowymi pozycjami kolumn: @1, @3, '@5'

      Zmiana kolejności kolumn spowoduje, że zapis zwrotny przestanie działać i jest to przyczyna, dla której preferowane jest używanie ID kolumn.

  • W szablonie musi znaleźć się zarówno element <insert>, jak i element <update>. Jeśli nie jest planowane umieszczenie poleceń SQL w tych elementach, należy wstawić spację między znacznikiem otwierającym a zamykającym. Na przykład należy wprowadzić taki element:

    <insert> </insert>
    

    A nie taki:

    <insert></insert>
    

    Pominięcie spacji spowoduje wyświetlenie komunikatu o błędzie zapisu zwrotnego, takiego jak "System nie może odczytać szablonu "mój_szablon" zapisywania zwrotnego".

  • Jeśli typem danych parametru nie jest liczba całkowita ani rzeczywista, należy ująć wartość parametru w apostrofy. Jeśli w bazie danych nie są automatycznie wykonywane operacje zatwierdzania, należy dodać opcjonalny węzeł postUpdate po węzłach insert i update, aby wymuszać zatwierdzanie. Węzeł postUpdate zazwyczaj wygląda tak jak w poniższym przykładzie:

    <postUpdate>COMMIT</postUpdate>
    

Przykład pliku szablonów zapisu zwrotnego, w którym jest używana składnia ID kolumn

Plik szablonów zapisu zwrotnego, w którym do odwoływania się do wartości są używane ID kolumn, mógłby wyglądać następująco:

<?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>

Przykład pliku szablonów zapisu zwrotnego, w którym jest używana składnia pozycji kolumn

Plik szablonów zapisu zwrotnego, w którym do odwoływania się do wartości są używane pozycje kolumn, mógłby wyglądać następująco:

<?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>