Edytor konwersji bitów pozwala na przekonwertowanie strumienia danych magistrali do dowolnego formatu tekstowego wprowadzonego przez użytkownika w edytorze. Zapewnia możliwość tworzenia struktur zagłębionych oraz formatowania danych pochodzących z magistrali.
Edytor dostępny jest w następujących operatorach w systemie GRAVITY:
INFORMACJE PODSTAWOWE
Tworzenie schematu formatu danych odbywa się poprzez wprowadzenie dowolnego tekstu przez osobę konfiguracyjną. Do tekstu wprowadzone są znaczniki, dzięki którym można wstawiać dane z magistrali oraz tworzyć grupy - pętle. Znaczniki są interpretowane w trakcie przetwarzania danych wejściowych przez operator.
Wyróżnione są dwa rodzaje znaczników:
- znaczniki grup → pozwalające na wprowadzenie grup w tworzonym formacie danych:
#S-nazwa_grupy#
→ znacznik rozpoczęcia grupy np:#S-G1#
#E-nazwa_grupy#
→ znacznik zakończenia grupy#E-G1#
- znaczniki bitów → bity magistrali występujące w ramach jakiejś grupy odseparowane od tekstu separatorem początku i końca. Domyślne separatory to
{
i}
, ale możesz je zmienić na operatorze wywołującym edytor (CONVERT BITS TO FORMAT). Przykład znacznika bitów{name}
.
Wynikiem przetwarzania danych z magistrali wejściowej są rekordy zawierające tekst utworzony według zdefiniowanego formatu. Ilość rekordów tekstu zależy od ilości rekordów grupowania danych magistrali po bitach znajdujących się w pierwszej grupie. Oznacza to, że ilość rekordów wejściowych może być różna od ilości rekordów powstałych po przetwarzaniu. Tak więc jeśli chcesz uzyskać tylko jeden rekord na wyjściu pierwsza grupa nie powinna zawierać znaczników bitów lub zawierać bit, który ma tą samą wartość dla wszystkich rekordów wejściowych.
KONFIGURACJA EDYTORA
Okno edytora jest podzielone na dwa obszary Busbar oraz obszar User format definition.
Obszar Busbar przedstawia listę bitów magistrali wchodzącej do operatora wywołującego edytor. Możesz przeciągnąć dowolny bit na obszar User format definition (akcja drag and drop) jeśli chcesz go użyć do budowy struktury formatu.
Obszar User format definition jest właściwym obszarem gdzie będziesz budował konwersję do własnego formatu. Na tym obszarze znajdują się przyciski wspomagające budowę:
- Load file → wczytuje format z pliku.
- Create group → wstawia znacznik grupy danych. Jeśli zaznaczysz dany tekst w edytorze to obejmie znacznikiem cały zaznaczony teks. Wymagana jest chociażby jedna grupa danych w budowanym formacie.
- Ungroup → Usuwa znacznik grupy z zaznaczonego tekstu.
- Insert empty token → wstawia pusty znacznik bitów magistrali.
- Show specificators → pokazuje podstawowe formatowania bitów. Formaty bitów można przenieść na obszar edytora tekstu. Zostanie wówczas wstawiony znacznik bitu z wybranym formatowaniem. Konieczne jest uzupełnienie ręczne nazwy bitu.
- Save → zapisuje schemat formatu do komponentu wywołującego edytor.
- Save to file → zapisuje format do pliku.
PRZYKŁAD TWORZENIA WŁASNEGO FORMATU
Załóżmy, że chcesz utworzyć plik tekstowy z podsumowaniem zamówień. Chcesz mieć w raporcie informacje o ilości zamówień w poszczególnych latach oraz listę wszystkich zamówień bez podziału na lata. Dane zostały wcześniej pobrane i przetworzone w taki sposób, że dysponujemy na magistrali bitami przechowującymi roczne podsumowania oraz listę zamówień.
Zacznij od wstawienia znacznika grupy używając przycisku Create group.
Jeśli w pierwszym grupowaniu chcesz użyć jakiś bitów przeciągnij je na obszar edytora.
Zostanie wstawiony znacznik bitu {nazwa_bitu}
. W tym przypadku nie użyjemy żadnego bitu ponieważ chcemy mieć na wyjściu tylko jeden rekord danych z raportem, a nie mamy w danych pola z wartością wspólną dla wszystkich rekordów.
Teraz utwórzmy grupę reprezentującą podsumowanie roczne. Będzie ona zawierać informacje ile zamówień i na jaką łączną kwotę wpłynęło w poszczególnych latach. W tym celu musimy dodać nową grupę ponieważ chcemy, aby dane były przetworzone w pętli. Następnie wprowadzamy opisy i przeciągamy bity magistrali na edytor wstawiając w ten sposób znaczniki bitów.
G1
(w naszym projekcie ich nie ma), a następnie zgrupuje po bitach t_order_year, t_report_orders_count
oraz t_report_total_in_year
{t_report_total_in_year:N2}
. Dowiedz się więcej o formatowaniu danych.Aby wstawić listę wszystkich zamówień wstaw nową grupę G3
na poziomie równorzędnym
z grupą G2
.
Zauważ również, że po prawej stronie edytora powstaje schemat ułożenia grup danych.
Wynikiem przetwarzania operatora będzie tekst:
Orders yearly Report:
####################################################################
Year: 2023
Amount of orders: 3
Gross total in year: 21 620,00
Year: 2024
Amount of orders: 1
Gross total in year: 48,00
List of Orders:
####################################################################
Order year: 2023
Order nr: 25
Customer: Company Id 9
Order gross total: 620
--------------------------------------------------------------------
Order year: 2023
Order nr: 20
Customer: Company Id 9
Order gross total: 19500
--------------------------------------------------------------------
Order year: 2023
Order nr: 19
Customer: Company Id 5
Order gross total: 1500
--------------------------------------------------------------------
Order year: 2024
Order nr: 1
Customer: Company Id 6
Order gross total: 48
--------------------------------------------------------------------
Zauważ, że możesz szybko zmodyfikować raport zmieniając pozycję grupy G3
jako grupę podrzędną do G2
. Uzyskasz wówczas podział zamówień dla lat.
Wygenerowany tekst będzie następujący
Orders yearly Report:
====================================================================
Year: 2023
Amount of orders: 3
Gross total in year: 21 620,00
List of Orders:
--------------------------------------------------------------------
Order year: 2023
Order nr: 25
Customer: Company Id 9
Order gross total: 620
Order year: 2023
Order nr: 20
Customer: Company Id 9
Order gross total: 19500
Order year: 2023
Order nr: 19
Customer: Company Id 5
Order gross total: 1500
####################################################################
Year: 2024
Amount of orders: 1
Gross total in year: 48,00
List of Orders:
--------------------------------------------------------------------
Order year: 2024
Order nr: 1
Customer: Company Id 6
Order gross total: 48
####################################################################
Możliwe jest równie szybkie zmienienie całego formatu np. na format XML
Wynik działania
<root>
<years>
<year>2023</year>
<amount>3</amount>
<total>21 620,00</total>
</years>
<years>
<year>2024</year>
<amount>1</amount>
<total>48,00</total>
</years>
<orders>
<year>2023</year>
<no>25</no>
<custoner>Company Id 9</custoner>
<total>620</total>
</orders>
<orders>
<year>2023</year>
<no>20</no>
<custoner>Company Id 9</custoner>
<total>19500</total>
</orders>
<orders>
<year>2023</year>
<no>19</no>
<custoner>Company Id 5</custoner>
<total>1500</total>
</orders>
<orders>
<year>2024</year>
<no>1</no>
<custoner>Company Id 6</custoner>
<total>48</total>
</orders>
</root>
Magistrala wyjściowa z komponentu, który ma zbudowany format tekstowy jak powyżej będzie miała tylko jeden rekord z jedną kolumną file_data.
Jeśli powyższy przykład przerobimy w taki sposób, że w pierwszej grupie będą dane dotyczące lat, to na magistrali wyjściowej otrzymamy tyle rekordów, ile będzie lat i każdy będzie zawierał pola, które były użyte w pierwszej grupie oraz sformatowany tekst.
Dla powyższych danych otrzymamy dwa rekordy z tekstem w polu file_data
Orders report
Year: 2023
Amount of orders: 3
Gross total in year: 21 620,00
List of Orders:
####################################################################
Order year: 2023
Order nr: 25
Customer: Company Id 9
Order gross total: 620
--------------------------------------------------------------------
Order year: 2023
Order nr: 20
Customer: Company Id 9
Order gross total: 19500
--------------------------------------------------------------------
Order year: 2023
Order nr: 19
Customer: Company Id 5
Order gross total: 1500
--------------------------------------------------------------------
Orders report
Year: 2024
Amount of orders: 1
Gross total in year: 48,00
List of Orders:
####################################################################
Order year: 2024
Order nr: 1
Customer: Company Id 6
Order gross total: 48
--------------------------------------------------------------------