Hoppa till huvudinnehåll
Cloud Information Model En öppen, applikationsoberoende datamodell för att ansluta molnbaserade och lokala företagsapplikationer

Vissa länkar på denna webbplats är affiliatelänkar: om du handlar via dem kan vi få en provision utan extra kostnad för dig. Detta påverkar aldrig våra rekommendationer. Se vår affiliatedeklaration för mer information. Ansvarsfriskrivning för affiliate.

Cloud Information Model

(CIM) är ett öppet, applikationsagnostiskt schema för att beskriva de entiteter som rör sig genom ett modernt företag: parter, produkter, order, betalningar och de relationer som knyter dem samman. Istället för att uppfinna en skräddarsydd datamodell för varje integration erbjuder CIM ett delat ordförråd så att ett CRM, ett ERP, en e-handelsplattform och ett analyslager kan enas om vad en “Sales Order” eller en “Product Relationship Type” faktiskt betyder. Den här artikeln går igenom de entitetsgrupper som utgör modellen och fördjupar sig sedan i en representativ entitet — ProductRelationshipType — för att visa hur CIM uttrycker relationer, roller och nycklar i praktiken.

Viktiga slutsatser

  • CIM organiserar företagsdata i entitetsgrupper (Party, Product, Sales Order, Payment och andra) som kan införas inkrementellt snarare än allt på en gång.
  • Varje entitet definieras med en Term URI, en beskrivning, skalära egenskaper och länkegenskaper — en struktur som mappar rent till JSON-LD, RDF och property-graph-databaser.
  • Relationsentiteter som ProductRelationshipType kodar roller (förälder/barn) så att paket, alternativ och tillbehör kan modelleras utan hårdkodad affärslogik.
  • Modellen är medvetet applikationsagnostisk: den beskriver vad data betyder, inte hur en viss leverantör lagrar den.
  • Att anta CIM är en mappningsövning, inte ett utbyte av system (rip-and-replace) — du anpassar befintliga system till delade termer och åtgärdar gapen.

Varför en delad modell är viktig

Företagsintegration har ett välbekant felläge: varje system talar sin egen dialekt. Salesforce kallar det ett Account, SAP kallar det en Business Partner och en egenutvecklad faktureringstjänst kallar det en Customer. När du bygger punkt-till-punkt-mappningar mellan varje par växer antalet översättningar kvadratiskt med antalet involverade system, och varje nytt system multiplicerar underhållsbördan.

En kanonisk modell bryter detta kvadratiska problem. Du mappar varje system en gång till den delade modellen, och den delade modellen blir navet. Detta är samma arkitektoniska instinkt bakom standarder som OAGIS (Open Applications Group Integration Specification), OMG:s Common Warehouse Metamodel och schema.orgs vokabulär för handel. CIM följer denna tradition men är anpassad för interoperabilitet i molneran och publiceras som öppna termer med derefererbara URI:er.

Den praktiska vinsten är att en dataarkitekt kan besvara frågor som “vilka system håller det auktoritativa rekordet för en Party?” eller “hur representerar vi ett produktpaket konsekvent i både katalogen och ordern?” med hjälp av en enda referenspunkt.

Entitetsgrupperna i korthet

CIM är inte ett enda monolitiskt schema; det är en uppsättning löst kopplade grupper. De grupper som nämns i modellen inkluderar:

  • Account — det kommersiella relationssammanhanget för en part.
  • Contact Point — telefonnummer, e-postadresser och liknande kommunikationskanaler.
  • Lead — en potentiell part som ännu inte är kvalificerad.
  • Party och Party Role — det allmänna konceptet av en aktör och de roller den spelar (kund, leverantör, anställd).
  • Payment och Payment Method — hur pengar rör sig och vilka instrument som används.
  • Product Attribute, Product Catalog och Product — de säljbara och beskrivbara varorna och tjänsterna.
  • Sales Order och dess stora familj av underentiteter — det transaktionella hjärtat i modellen.
  • Shipment — orderhantering och logistik.

Sales Order-gruppen är den överlägset mest granulära, och det är värt att förstå varför. En order är där affärsreglerna koncentreras: prissättning, skatter, justeringar, leveransgrupperingar och anteckningar per rad är alla kopplade till den.

Relaterat: — Den fullt -pipelinen som bara fortsätter att köras.

CIM bryter ner ordern i många små entiteter — Sales Order Product, Sales Order Price Adjustment, Sales Order Tax, Sales Order Delivery Group, Sales Order Payment Summary, Sales Order Change Log och fler — snarare än en enda bred tabell. Denna nedbrytning är ett medvetet designval: det låter varje aspekt utvecklas oberoende och gör att system endast behöver prenumerera på de delar de bryr sig om.

Anatomi hos en CIM-entitet

Varje entitet i CIM följer samma form, vilket gör modellen förutsägbar att konsumera programmatiskt. Betrakta ProductRelationshipType, entiteten som beskriver varför två produkter är relaterade.

  • Term URI — http://cloudinformationmodel.org/model/ProductRelationshipType. Detta är den globalt unika identifieraren för konceptet. Eftersom det är en URI kan den derefereras och användas direkt i RDF/JSON-LD-grafer.
  • Beskrivning — “Reasons why products are related such as bundle, option or covering.” Detta talar om för dig att entiteten är en typ eller klassificering, inte själva relationsinstansen.
  • Skalära egenskaper — de primitiva fälten som bär data.
  • Länkegenskaper — referenser till andra entiteter. ProductRelationshipType har inga, vilket i sig är informativt: det är en bladenhet, ett kontrollerat ordförråd snarare än ett nav.

De skalära egenskaperna är:

Om du handlar: — för hybrid moln-till-på-prem-integration.

EgenskapTerm URITypObligatoriskBeskrivning
id.../model/idguidjaPrimärnyckel
parentProductRole.../model/parentProductRolestringjaDen första rollen i relationen, t.ex. “Consists of”
childProductRole.../model/childProductRolestringjaDen andra rollen i relationen, t.ex. “Component of”

Att id är en GUID är en meningsfull konvention: det betyder att identifierare är globalt unika utan koordinering mellan system, vilket är precis vad man vill ha när poster skapas i olika moln och senare slås samman.

Modellera relationer med roller

Den mest lärorika delen av ProductRelationshipType är paret av rollegenskaper. En produktrelation är riktad, och CIM fångar denna riktning med två namngivna roller snarare än en enda ogenomskinlig “typ”-sträng.

Tänk på ett paket. Ett “Starter Kit” består av en “Router” och en “Kabel”. I CIM-termer:

  • Föräldraprodukten spelar rollen som beskrivs av parentProductRole — till exempel “Består av”.
  • Barnprodukten spelar rollen som beskrivs av childProductRole — till exempel “Komponent av”.

Genom att lagra båda rollerna som strängar på typen får du en återanvändbar definition. Ett valfritt antal faktiska produkt-till-produkt-länkar kan referera till samma ProductRelationshipType-rad, så ordförrådet förblir litet och konsekvent medan relationsinstanserna förblir många. Detta är ett klassiskt normaliseringsmönster: separera typen av relation från dess instanser.

Beskrivningen nämner uttryckligen tre varianter — bundle, option och covering — vilket tyder på det spektrum av kommersiell semantik som modellen avser att täcka:

  • Bundle — produkter som säljs tillsammans som en enhet (förälder “består av” barn).
  • Option — ett val eller tillägg associerat med en basprodukt.
  • Covering — en produkt som omsluter eller skyddar en annan, vanligt i försäkrings- och garantisammanhang.

Hur du bestämmer ditt roll-ordförråd

Eftersom parentProductRole och childProductRole är friformssträngar dikterar modellen inte din exakta formulering. Den flexibiliteten är både en funktion och en risk. Några praktiska regler:

Relaterat: — Push-down ELT byggd för molndatalager.

  1. Välj ett kontrollerat ordförråd och frys det. Kom överens om en liten uppsättning rollfraser (“Består av” / “Komponent av”, “Valfritt tillägg till” / “Har alternativ”) och dokumentera dem. Fritext inbjuder till begreppslig glidning.
  2. Håll rollerna symmetriska och läsbara i båda riktningarna. Ett bra test: kan du läsa relationen högt från båda ändar och få det att verka logiskt?
  3. Överbelasta inte roller med affärslogik. Om en roll kräver villkorligt beteende hör den logiken hemma i den konsumerande applikationen, inte i strängen.
  4. Versionshantera ditt ordförråd. När du lägger till en roll, behandla det som en schemaförändring med en migreringsväg, inte som en ad hoc-insättning.

Implementera CIM i praktiken

Att anta en kanonisk modell är en mappningsdisciplin, inte en migration. En fungerande sekvens:

  • Inventera dina registreringssystem (systems of record). Bestäm vilket system som är auktoritativt för varje entitetsgrupp. Party kan bo i CRM; Product i PIM; Sales Order i ERP.
  • Mappa varje källa till CIM-termer. Skapa en tabell över källfält $\rightarrow$ CIM-egenskap. Där en källa saknar motsvarighet, notera gapet; där CIM saknar motsvarighet, notera extensionen.
  • Avstäm identifierare. CIM:s GUID-konvention innebär att du vanligtvis kommer att underhålla en crosswalk mellan inhemska nycklar och CIM id-värden.
  • Välj en serialisering. CIM:s URI-baserade termer mappar naturligt till JSON-LD och RDF; de översätts också rent till relationella tabeller eller en egenskapsgraf. Modellen tvingar inte fram någon specifik lagringsteknik.
  • Styr ordförrådet. Rollsträngarna, uppräkningarna och extensionerna du lägger till är de delar som mest sannolikt glider, så placera dem under ändringskontroll.

En användbar mental modell är att behandla CIM som utbytes-schemat (interchange schema) och dina operativa datalager som registreringssystem (system of record). Du ber inte varje applikation att överge sin inhemska modell; du ber dem att publicera och konsumera en delad modell vid gränssnitten.

Förbehåll och avvägningar

Ingen kanonisk modell är kostnadsfri, och CIM är inget undantag.

Läsarens favorit: — Öppen källkod ELT med ett hanterat molnalternativ.

  • Abstraktion har ett pris. En modell som är tillräckligt generell för att spänna över flera branscher kommer inte att passa någon av dem perfekt. Räkna med att lägga till extensioner.
  • Sales Order-gruppen är tung. Dess finkorniga nedbrytning är kraftfull men innebär fler joins och fler entiteter att mappa. Team med enkla orderflöden kan välja att endast anta en delmängd.
  • Friformssträngar för roller kräver styrning. Som nämnts är flexibiliteten i parentProductRole och childProductRole bara så bra som disciplinen runt den.
  • Öppna modeller utvecklas. Eftersom CIM är samhällsorienterat kan termer läggas till eller förfinas över tid. Lås till en version och granska ändringar medvetet.

Avvägningen är i grunden den klassiska mellan trohet mot ett specifikt system och portabilitet mellan system. CIM optimerar för portabilitet, vilket är rätt beslut när interoperabilitet är målet.

Vanliga frågor

Vad är Cloud Information Model?

Cloud Information Model är en öppen, applikationsagnostisk datamodell som definierar delade entiteter och termer för företagsdata såsom parter, produkter, order och betalningar. Den tillhandahåller ett gemensamt ordförråd så att olika moln- och on-premises-system kan utbyta data utan skräddarsydda punkt-till-punkt-mappningar.

Vad används ProductRelationshipType för?

ProductRelationshipType definierar anledningarna till att två produkter är relaterade — till exempel ett paket, ett alternativ eller en täckning. Den lagrar en föräldraroll och en barnroll så att riktade produkt-till-produkt-länkar kan referera till en återanvändbar, delad definition snarare än att upprepa semantiken på varje länk.

Varför använder CIM GUID:er för primärnycklar?

Att använda ett GUID för id-egenskapen innebär att identifierare är globalt unika utan central samordning. Det är viktigt i miljöer med flera moln och leverantörer där poster skapas i olika system och senare slås samman, eftersom kollisioner effektivt undviks.

Är CIM ett databasschema eller ett datautbytesformat?

Det är bäst att förstå det som en konceptuell utbytesmodell snarare än ett fysiskt databasschema. Dess URI-baserade termer mappar naturligt till JSON-LD, RDF, relationella tabeller eller egenskapsgrafer, så du kan implementera det i vilken lagringsteknik din arkitektur redan använder.

Hur förhåller sig CIM till andra standarder som OAGIS eller schema.org?

CIM delar målet med dessa ansträngningar – en gemensam vokabulär för interoperabilitet – men är anpassad för företagsintegration i molneran och publiceras som öppna, derefererbara termer. I praktiken kan du mappa CIM till andra standarder i gränssnitten där partners kräver dem.

Måste jag använda hela modellen på en gång?

Nej. CIM är organiserat i löst kopplade entitetsgrupper, så att du kan använda de grupper du behöver – till exempel Party och Product – och utöka senare. De flesta team börjar med de entiteter som orsakar mest integrationsproblem och växer därifrån.

Ytterligare läsning

Vanliga frågor

Vad är molninformationsmodellen?

Molninformationsmodellen är en öppen, applikations-agnostisk datamodell som definierar delade enheter och termer för företagsdata som parter, produkter, beställningar och betalningar. Det ger ett gemensamt ordförråd så att olika moln- och lokala system kan utbyta data utan skräddarsydda punkt-till-punkt-mappningar.

Vad används 'ProductRelationshipType' till?

ProductRelationshipType definierar anledningarna till att två produkter är relaterade - till exempel ett paket, ett tillval eller ett skydd. Den lagrar en förälderroll och en underordnad roll så att riktade produkt-till-produktlänkar kan referera till en återanvändbar, delad definition snarare än att upprepa semantiken på varje länk.

Varför använder CIM GUIDs för primärnycklar?

Att använda en GUID för id-egenskapen innebär att identifierare är globalt unika utan central koordinering. Det är viktigt i miljöer med flera moln och flera leverantörer där poster skapas i olika system och senare slås samman, eftersom kollisioner effektivt undviks.

Är CIM ett databasschema eller ett datautbytesformat?

Det är bäst att förstå som en konceptuell och utbytesmodell snarare än ett fysiskt databasschema. Dess URI-baserade termer mappar naturligt till JSON-LD, RDF, relationstabeller eller egenskapsdiagram, så att du kan implementera det i vilken lagringsteknik din arkitektur redan använder.

Hur förhåller sig CIM till andra standarder som OAGIS eller schema.org?

CIM delar målet med dessa ansträngningar – en delad vokabulär för interoperabilitet – men är avsedd för företagsintegration från molnets tid och publiceras som öppna termer som inte kan hänvisas till. I praktiken kan du mappa CIM till andra standarder i de kanter där partners kräver dem.

Måste jag använda hela modellen på en gång?

Nej. CIM är organiserat i löst kopplade entitetsgrupper, så att du kan anta de grupper du behöver - t.ex. Party och Product - och utöka senare. De flesta team börjar med de enheter som orsakar mest integrationssmärta och växer därifrån. Ytterligare läsning - [Försäljningsorder](https://en.wikipedia.org/wiki/Sales_order) — Wikipedia - [Resource Description Framework (RDF)](https://en.wikipedia.org/wiki/Resource_Description_Framework) — Wikipedia - [JSON-LD](https://en.wikipedia.org/wiki/JSON-LD.org/wiki/JSON-LD.org) — Wikipedia) - [https://en.wikipedia.org/wiki/JSON-LD.org] — Wikipedia) ordförråd för strukturerad data på webben


Självhotell gratis eller starta Airbyte Cloud på några minuter

Öppen källkod ELT med ett hanterat molnalternativ