Model Informacji Chmurowej
(CIM) to otwarty, niezależny od aplikacji schemat opisujący podmioty poruszające się w nowoczesnym przedsiębiorstwie: strony, produkty, zamówienia, płatności i relacje, które je łączą. Zamiast opracowywać dedykowany model danych dla każdej integracji, CIM oferuje wspólne słownictwo, dzięki któremu systemy CRM, ERP, platforma handlowa i magazyn analityczny mogą uzgodnić, co tak naprawdę oznacza „Sales Order” (zamówienie sprzedaży) lub „Product Relationship Type” (typ relacji między produktami). W tym artykule omówiono grupy encji tworzące model, a następnie szczegółowo opisano jedną reprezentatywną encję — ProductRelationshipType — aby pokazać, jak CIM wyraża w praktyce relacje, role i klucze.
Kluczowe wnioski
- CIM organizuje dane przedsiębiorstwa w grupy encji (Party, Product, Sales Order, Payment i inne), które można wdrażać stopniowo, a nie wszystkie na raz.
- Każda encja jest zdefiniowana za pomocą Term URI, opisu, właściwości skalarnych i właściwości łącza — struktury, która w prosty sposób odwzorowuje formaty JSON-LD, RDF i bazy grafowe (property-graph stores).
- Encje relacji, takie jak
ProductRelationshipType, kodują role (nadrzędna/podrzędna), dzięki czemu pakiety, opcje i pokrycia mogą być modelowane bez konieczności twardego kodowania logiki biznesowej. - Model jest celowo niezależny od aplikacji: opisuje, co oznaczają dane, a nie jak konkretny dostawca je przechowuje.
- Przyjęcie CIM to zadanie mapowania, a nie całkowita wymiana systemów (rip-and-replace) — dostosowujesz istniejące systemy do wspólnych terminów i uzupełniasz luki.
Dlaczego wspólny model ma znaczenie
Integracja korporacyjna ma znany tryb awarii: każdy system mówi własnym dialektem. Salesforce nazywa to Account, SAP nazywa to Business Partner, a autorska usługa rozliczeniowa nazywa to Customer. Kiedy tworzysz mapowania punkt-punkt pomiędzy każdą parą, liczba tłumaczeń rośnie kwadratowo wraz z liczbą zaangażowanych systemów, a każdy nowy system zwielokrotnia obciążenie konserwacyjne.
Model kanoniczny rozwiązuje ten problem kwadratowy. Mapujesz każdy system raz na wspólny model, a wspólny model staje się hubem. To ten sam instynkt architektoniczny, który stoi za standardami takimi jak OAGIS (Open Applications Group Integration Specification), Common Warehouse Metamodel organizacji OMG oraz słownictwem schema.org dla handlu.
CIM wpisuje się w tę tradycję, ale jest dostosowany do interoperacyjności ery chmury i publikowany jako otwarte terminy z dereferencyjnymi identyfikatorami URI.
Praktyczną korzyścią jest to, że architekt danych może odpowiedzieć na pytania takie jak „które systemy przechowują wiarygodny rekord dla Strony (Party)?” lub „w jaki sposób spójnie przedstawiamy pakiet produktów w katalogu i zamówieniu?”, korzystając z jednego punktu odniesienia.
Grupy encji w skrócie
CIM nie jest pojedynczym, monolitycznym schematem; jest to zbiór luźno powiązanych grup. Grupy wymienione w modelu obejmują:
Powiązane: — W pełni zarządzany potok ELT, który po prostu działa.
- Account — kontekst relacji handlowej dla strony.
- Contact Point — numery telefonów, adresy e-mail i podobne kanały komunikacji.
- Lead — potencjalna strona, która nie została jeszcze zakwalifikowana.
- Party i Party Role — ogólna koncepcja aktora i ról, jakie pełni (klient, dostawca, pracownik).
- Payment i Payment Method — sposób przepływu pieniędzy i wykorzystywane instrumenty.
- Product Attribute, Product Catalog i Product — towary i usługi, które można sprzedać i opisać.
- Sales Order i jego obszerna rodzina podencji — transakcyjne serce modelu.
- Shipment — realizacja i logistyka.
Grupa Sales Order jest zdecydowanie najbardziej szczegółowa i warto zrozumieć dlaczego. Zamówienie to miejsce, w którym koncentrują się reguły biznesowe: ceny, podatki, korekty, grupowanie dostaw i uwagi do poszczególnych pozycji są do niego przypisane.
CIM rozkłada zamówienie na wiele małych encji — Sales Order Product, Sales Order Price Adjustment, Sales Order Tax, Sales Order Delivery Group, Sales Order Payment Summary, Sales Order Change Log i inne — zamiast jednej szerokiej tabeli. Ta dekompozycja jest przemyślanym wyborem projektowym: umożliwia niezależną ewolucję każdego aspektu i pozwala systemom subskrybować tylko te fragmenty, które są dla nich istotne.
Anatomia encji CIM
Każda encja w CIM ma ten sam kształt, co sprawia, że model jest przewidywalny w konsumpcji programowej. Weźmy pod uwagę ProductRelationshipType, encję opisującą, dlaczego dwa produkty są ze sobą powiązane.
Jeśli robisz zakupy: — Enterprise iPaaS do integracji hybrydowej chmury z lokalną firmą.
- Term URI —
http://cloudinformationmodel.org/model/ProductRelationshipType. Jest to globalnie unikalny identyfikator koncepcji. Ponieważ jest to URI, może być dereferencjonowany i używany bezpośrednio w grafach RDF/JSON-LD. - Opis — „Reasons why products are related such as bundle, option or covering” (Powody, dla których produkty są powiązane, takie jak pakiet, opcja lub pokrycie). Informuje to, że encja jest typem lub klasyfikacją, a nie samą instancją relacji.
- Właściwości skalarne — prymitywne pola przenoszące dane.
- Właściwości łącza — odniesienia do innych encji.
ProductRelationshipTypenie posiada żadnych, co samo w sobie jest informacyjne: jest to encja liścia, kontrolowane słownictwo, a nie hub.
Właściwości skalarne to:
| Właściwość | Term URI | Zakres | Obowiązkowe | Opis |
|---|---|---|---|---|
id | .../model/id | guid | tak | Klucz podstawowy |
parentProductRole | .../model/parentProductRole | string | tak | Pierwsza rola w relacji, np. „Consists of” |
childProductRole | .../model/childProductRole | string | tak | Druga rola w relacji, np. „Component of” |
To, że id jest identyfikatorem GUID, jest istotną konwencją: oznacza to, że identyfikatory są globalnie unikalne bez konieczności koordynacji między systemami, co jest dokładnie tym, czego oczekuje się, gdy rekordy są tworzone w różnych chmurach, a następnie łączone.
Modelowanie relacji za pomocą ról
Najbardziej pouczającą częścią ProductRelationshipType jest para właściwości roli. Relacja produktu jest kierunkowa, a CIM przechwytuje ten kierunek za pomocą dwóch nazwanych ról, a nie pojedynczego, nieprzejrzystego ciągu „typu”.
Pomyśl o pakiecie. „Zestaw startowy” składa się z „Routera” i „Kabla”. W kategoriach CIM:
- Produkt nadrzędny odgrywa rolę opisaną przez
parentProductRole— na przykład „Składa się z”. - Produkt podrzędny pełni rolę opisaną przez
childProductRole— na przykład „Komponent”.
Przechowując obie role jako ciągi znaków w typie, otrzymujesz definicję wielokrotnego użytku. Dowolna liczba rzeczywistych powiązań między produktami może odwoływać się do tego samego wiersza ProductRelationshipType, dzięki czemu słownictwo pozostaje niewielkie i spójne, podczas gdy instancje relacji pozostają liczne. Jest to klasyczny wzorzec normalizacji: oddziel typ relacji od jej instancji.
W opisie wyraźnie wymieniono trzy warianty — pakiet, opcję i pokrycie — co wskazuje na zakres semantyki komercyjnej, którą model zamierza objąć:
- Pakiet (Bundle) — produkty sprzedawane razem jako całość (rodzic „składa się z” dzieci).
- Opcja (Option) — wybór lub dodatek związany z produktem podstawowym.
- Pokrycie (Covering) — produkt, który otula lub chroni inny, powszechny w kontekście ubezpieczeń i gwarancji.
Jak wybrać słownictwo ról
Ponieważ parentProductRole i childProductRole są ciągami znaków o dowolnej formie, model nie narzuca dokładnego brzmienia. Ta elastyczność jest zarówno zaletą, jak i zagrożeniem. Kilka praktycznych zasad:
- Wybierz kontrolowane słownictwo i zamroź je. Uzgodnij mały zestaw fraz określających role („Składa się z” / „Komponent”, „Opcjonalny dodatek do” / „Posiada opcję”) i udokumentuj je. Dowolny tekst sprzyja rozbieżnościom (driftowi).
- Utrzymuj role symetryczne i czytelne w obu kierunkach. Dobry test: czy potrafisz przeczytać relację na głos z obu stron tak, aby miała ona sens?
- Nie przeciążaj ról logiką biznesową. Jeśli rola wymaga zachowania warunkowego, ta logika powinna znajdować się w aplikacji konsumującej, a nie w ciągu znaków.
- Wersjonuj swoje słownictwo. Kiedy dodajesz rolę, traktuj to jako zmianę schematu ze ścieżką migracji, a nie jako wstawkę ad hoc.
Zastosowanie CIM w praktyce
Przyjęcie modelu kanonicznego to dyscyplina mapowania, a nie migracja. Praktyczna sekwencja działań:
- Spisz swoje systemy ewidencji (systems of record). Dla każdej grupy encji zdecyduj, który system jest autorytatywny. Strona (Party) może znajdować się w CRM; Produkt w PIM; Zlecenie sprzedaży w ERP.
- Zmapuj każde źródło na terminy CIM. Zbuduj tabelę: pole źródłowe $\rightarrow$ właściwość CIM. Tam, gdzie źródło nie ma odpowiednika, odnotuj lukę; tam, gdzie CIM nie ma odpowiednika, odnotuj rozszerzenie.
- Uzgodnij identyfikatory. Konwencja GUID w CIM oznacza, że zazwyczaj będziesz utrzymywać tabelę mapowania (crosswalk) pomiędzy kluczami natywnymi a wartościami
idw CIM. - Wybierz serializację. Terminy CIM oparte na URI mapują się naturalnie na JSON-LD i RDF; można je również łatwo przełożyć na tabele relacyjne lub graf właściwości (property graph). Model nie narzuca technologii przechowywania.
- Zarządzaj słownictwem. Ciągi ról, wyliczenia i rozszerzenia, które dodajesz, są elementami najbardziej podatnymi na rozbieżności, więc objmij je kontrolą zmian.
Przydatnym modelem mentalnym jest traktowanie CIM jako schematu wymiany (interchange), a magazynów operacyjnych jako systemów ewidencji. Nie wymagasz od każdej aplikacji porzucenia jej natywnego modelu; prosisz o publikowanie i konsumowanie wspólnego modelu na granicach systemów.
Zastrzeżenia i kompromisy
Żaden model kanoniczny nie jest darmowy i CIM nie jest wyjątkiem.
- Abstrakcja ma swoją cenę. Model wystarczająco ogólny, by obejmować wiele branż, nie będzie idealnie pasował do żadnej z nich. Spodziewaj się konieczności dodawania rozszerzeń.
- Grupa Zleceń sprzedaży (Sales Order) jest rozbudowana. Jej drobnoziarnista dekompozycja jest potężna, ale oznacza więcej złączeń (joins) i więcej encji do zmapowania. Zespoły z prostymi przepływami zamówień mogą przyjąć tylko jej podzbiór.
- Dowolne ciągi ról wymagają zarządzania. Jak wspomniano, elastyczność w
parentProductRoleichildProductRolejest tak dobra, jak dyscyplina wokół niej. - Modele otwarte ewoluują. Ponieważ CIM jest zorientowany na społeczność, terminy mogą być z czasem dodawane lub doprecyzowane. Przypnij się do konkretnej wersji i świadomie przeglądaj zmiany.
Kompromis ten jest w zasadzie klasycznym wyborem między wiernością wobec konkretnego systemu a przenośnością między systemami. CIM optymalizuje przenośność, co jest właściwą decyzją, gdy celem jest interoperacyjność.
Często zadawane pytania
Co to jest Cloud Information Model?
Cloud Information Model to otwarty, niezależny od aplikacji model danych, który definiuje wspólne encje i terminy dla danych przedsiębiorstwa, takich jak strony, produkty, zamówienia i płatności. Zapewnia wspólne słownictwo, dzięki czemu różne systemy chmurowe i lokalne mogą wymieniać dane bez konieczności tworzenia dedykowanych mapowań punkt-punkt.
Do czego służy ProductRelationshipType?
ProductRelationshipType definiuje powody, dla których dwa produkty są ze sobą powiązane — na przykład pakiet, opcja lub pokrycie. Przechowuje rolę nadrzędną i podrzędną, dzięki czemu kierunkowe powiązania produkt-produkt mogą odwoływać się do reużywalnej, wspólnej definicji, zamiast powtarzać semantykę w każdym powiązaniu.
Dlaczego CIM używa GUID-ów jako kluczy podstawowych?
Użycie GUID dla właściwości id oznacza, że identyfikatory są globalnie unikalne bez potrzeby centralnej koordynacji. Ma to znaczenie w środowiskach wielochmurowych i wielodostawczych, gdzie rekordy są tworzone w różnych systemach, a później scalane, ponieważ skutecznie zapobiega to kolizjom.
Czy CIM to schemat bazy danych czy format wymiany danych?
Najlepiej rozumieć go jako model koncepcyjny i wymiany, a nie fizyczny schemat bazy danych. Jego terminy oparte na URI mapują się naturalnie na JSON-LD, RDF, tabele relacyjne lub grafy właściwości, więc można go zaimplementować w dowolnej technologii przechowywania, której używa już Twoja architektura.
Jak CIM ma się do innych standardów, takich jak OAGIS czy schema.org?
CIM podziela cel tych wysiłków — wspólne słownictwo dla interoperacyjności — ale jest ukierunkowany na integrację przedsiębiorstw w erze chmury i publikowany jako otwarte, dereferencyjne terminy. W praktyce można mapować CIM na inne standardy na stykach, tam gdzie wymagają tego partnerzy.
Czy muszę przyjąć cały model od razu?
Nie. CIM jest zorganizowany w luźno powiązane grupy encji, więc możesz przyjąć grupy, których potrzebujesz — np. Party i Product — i rozszerzyć je później. Większość zespołów zaczyna od encji, które sprawiają najwięcej problemów z integracją, i rozwija model od tego punktu.
Dalsza lektura
- Sales order — Wikipedia
- Resource Description Framework (RDF) — Wikipedia
- JSON-LD — Wikipedia
- schema.org — wspólne słownictwo dla danych strukturalnych w sieci
Najczęściej zadawane pytania
Co to jest model informacji w chmurze?
Model informacji w chmurze to otwarty, niezależny od aplikacji model danych, który definiuje wspólne jednostki i warunki dotyczące danych przedsiębiorstwa, takich jak strony, produkty, zamówienia i płatności. Zapewnia wspólne słownictwo, dzięki czemu różne systemy w chmurze i lokalne mogą wymieniać dane bez dostosowanych mapowań punkt-punkt.
Do czego służy „ProductRelationshipType”?
ProductRelationshipType definiuje powody, dla których dwa produkty są ze sobą powiązane — na przykład pakiet, opcja lub pokrycie. Przechowuje rolę nadrzędną i rolę podrzędną, dzięki czemu łącza kierunkowe między produktami mogą odwoływać się do wspólnej definicji wielokrotnego użytku, zamiast powtarzać semantykę w każdym łączu.
Dlaczego CIM używa identyfikatorów GUID dla kluczy podstawowych?
Użycie identyfikatora GUID dla właściwości id oznacza, że identyfikatory są globalnie unikalne bez centralnej koordynacji. Ma to znaczenie w środowiskach obejmujących wiele chmur i wielu dostawców, gdzie rekordy są tworzone w różnych systemach, a następnie łączone, ponieważ skutecznie unika się kolizji.
Czy CIM jest schematem bazy danych czy formatem wymiany danych?
Najlepiej jest go rozumieć jako model koncepcyjny i wymiany, a nie fizyczny schemat bazy danych. Terminy oparte na URI są w naturalny sposób odwzorowywane na JSON-LD, RDF, tabele relacyjne lub wykresy właściwości, dzięki czemu można je zaimplementować w dowolnej technologii przechowywania, z której korzysta już Twoja architektura.
Jak CIM ma się do innych standardów, takich jak OAGIS lub schema.org?
CIM podziela cel tych wysiłków — wspólne słownictwo dotyczące interoperacyjności — ale jego zakres obejmuje integrację przedsiębiorstw w erze chmury i jest publikowany jako otwarte warunki, do których można się odwołać. W praktyce można mapować CIM na inne standardy na obrzeżach, tam gdzie wymagają tego partnerzy.
Czy muszę od razu przyjąć cały model?
Nie. CIM jest podzielony na luźno powiązane grupy jednostek, dzięki czemu możesz adoptować potrzebne grupy — powiedzmy Strona i Produkt — i później je rozszerzać. Większość zespołów zaczyna od podmiotów, które powodują najwięcej problemów związanych z integracją, i stamtąd się rozwija. Dalsza lektura - [Zamówienie sprzedaży](https://en.wikipedia.org/wiki/Sales_order) — Wikipedia - [Resource Opis Framework (RDF)](https://en.wikipedia.org/wiki/Resource_Description_Framework) — Wikipedia - [JSON-LD](https://en.wikipedia.org/wiki/JSON-LD) — Wikipedia - [schema.org](https://schema.org/) — wspólne słownictwo dotyczące danych strukturalnych w sieci
Zbuduj swój pierwszy przepis za darmo — bez karty kredytowej
Oparte na automatyzacji iPaaS, na którym zespoły biznesowe mogą faktycznie bazować