Digitální vlákna a jejich nevlákenný graf

Tento článek popisuje, co jsou digitální vlákna v kontextu digitálních vláken Azure, a jak mohou vztahy mezi nimi tvořit dvojitou graf. V řešení digitálních vláken Azure se entity ve vašem prostředí reprezentují pomocí digitálních vláken. Digitální vlákna je instance jednoho z vašich vlastních definovaných modelů. Dá se připojit k ostatním digitálním závislostem prostřednictvím vztahů , které tvoří dvojitou graf: Tento neřízený graf je reprezentace celého prostředí.

Tip

"Digitální vlákna Azure" odkazuje na tuto službu Azure jako celek. "Digitální vlákna" nebo pouze "vlákna" odkazují na jednotlivé zdvojené uzly v rámci vaší instance služby.

Digitální dvojčata

Než budete moct vytvořit digitální dvojitou hodnotu v instanci digitálních vláken Azure, musíte mít do této služby nahraný model . Model popisuje sadu vlastností, zpráv telemetrie a vztahy, které mohou mít konkrétní vlákna, mimo jiné. Typy informací, které jsou definovány v modelu, naleznete v tématu Custom Models.

Po vytvoření a nahrání modelu může klientská aplikace vytvořit instanci typu. Tato instance je typu digitálního vlákna. Například po vytvoření modelu podlahy můžete vytvořit jednu nebo několik digitálních vláken, která používají tento typ (například dvojitou hodnotu typu podlah-Floor s názvem GroundFloor, další s názvem Floor2 atd.).

Poznámka

Digitální vlákna v digitálních prozdvojeních Azure se liší od nevláken zařízení v IoT Hub. IoT Hub se často zaměřuje na popis aspektů a schopností samotného zařízení, zatímco vlákna v digitálních prostředcích Azure jsou více koncepční reprezentace, která může ukládat uživatelsky definované přehledy o zařízení nebo mnoha souvisejících zařízeních.

V rámci uceleného řešení, které představuje zařízení napříč službami, je možné v rámci komplexního řešení připojit k digitálním událostem služby Azure IoT Hubch vláken zařízení.

Relace: graf digitálních vláken

Vlákna se připojují k dvojitým grafům podle jejich vztahů. Vztahy, které mohou být zdvojeny, jsou definovány jako součást modelu.

Modelová podlaha například může definovat relaci, která cílí na vlákna typu Room. V této definici vám digitální vlákna Azure umožní vytvořit obsahuje vztahy z libovolného vlákna na podlaze pro všechny místnosti s dvojitou místností (včetně vláken, která jsou podtypy místnosti).

Výsledkem tohoto procesu je sada uzlů (digitální vlákna) propojená přes hrany (jejich vztahy) v grafu.

Vizualizace

Azure Digital Twins Explorer je vizuální nástroj pro zkoumání dat ve vašem Azure Digital Twins grafu. Průzkumníka můžete použít k zobrazení, dotazování a úpravám modelů, dvojčat a relací.

Další informace o nástroji Azure Digital Twins Explorer najdete v tématu Azure Digital Twins Explorer. Podrobné pokyny k používání jeho funkcí najdete v tématu Použití Azure Digital Twins Explorer.

Vizualizace vypadá takhle:

Snímek obrazovky s Průzkumníkem digitálních vláken Azure zobrazující ukázkové modely a vlákna.

Vytvoření pomocí rozhraní API

V této části se dozvíte, co vypadá při vytváření digitálních vláken a vztahů z klientské aplikace. Obsahuje příklady kódu .NET, které používají rozhraní API DigitalTwins, k poskytnutí dalších informací o tom, co se nachází uvnitř každé z těchto konceptů.

Vytvoření digitálních dvojčat

Níže je fragment kódu klienta, který používá rozhraní API DigitalTwins k vytvoření instance vlákna typu místnosti s typem twinId , který je definován během vytváření instance.

Můžete inicializovat vlastnosti vlákna při jeho vytvoření, nebo je nastavit později. Chcete-li vytvořit dvojitě spuštěný s inicializovanými vlastnostmi, vytvořte dokument JSON, který bude poskytovat nezbytné inicializační hodnoty.

// Define a custom model type for the twin to be created

internal class CustomDigitalTwin
{
    [JsonPropertyName(DigitalTwinsJsonPropertyNames.DigitalTwinId)]
    public string Id { get; set; }

    [JsonPropertyName(DigitalTwinsJsonPropertyNames.DigitalTwinETag)]
    public string ETag { get; set; }

    [JsonPropertyName(DigitalTwinsJsonPropertyNames.DigitalTwinMetadata)]
    public MyCustomDigitalTwinMetadata Metadata { get; set; } = new MyCustomDigitalTwinMetadata();

    [JsonPropertyName("temperature")]
    public double Temperature { get; set; }

    [JsonPropertyName("humidity")]
    public double Humidity{ get; set; }
}

internal class MyCustomDigitalTwinMetadata
{
    [JsonPropertyName(DigitalTwinsJsonPropertyNames.MetadataModel)]
    public string ModelId { get; set; }

    [JsonPropertyName("temperature")]
    public DigitalTwinPropertyMetadata Temperature { get; set; }

    [JsonPropertyName("humidity")]
    public DigitalTwinPropertyMetadata Humidity { get; set; }
}

// Initialize properties and create the twin
public class TwinOperationsCreateTwin
{
    public async Task CreateTwinAsync(DigitalTwinsClient client)
    {
        // Initialize the twin properties
        var myTwin = new CustomDigitalTwin
        {
            Metadata = { ModelId = "dtmi:example:Room;1" },
            Temperature = 25.0,
            Humidity = 50.0,
        };

        // Create the twin
        const string twinId = "<twin-ID>";
        Response<CustomDigitalTwin> response = await client.CreateOrReplaceDigitalTwinAsync(twinId, myTwin);
        Console.WriteLine($"Temperature last updated on {response.Value.Metadata.Temperature.LastUpdatedOn}");
    }
}

Můžete také použít pomocnou třídu nazvanou BasicDigitalTwin pro uložení polí vlastností do "" vlákna "objektu, a to více přímo jako alternativu k použití slovníku. Další informace o pomocné třídě a příkladech jejich použití naleznete v části vytvoření digitálního vlákna v tématu Postupy: Správa digitálních vláken.

Poznámka

I když jsou zdvojené vlastnosti považovány za volitelné, takže není nutné je inicializovat, musí být při vytvoření vlákna nastaveny všechny komponenty na vlákna. Můžou to být prázdné objekty, ale samotné komponenty musí existovat.

Vytvoření relací

Zde je příklad klientského kódu, který používá rozhraní API DigitalTwins k vytvoření vztahu z jednoho digitálního vlákna ("zdroj" vlákna) do jiného digitálního vlákna ("cíl").

var rel = new BasicRelationship
{
    TargetId = "myTargetTwin",
    Name = "contains", // a relationship with this name must be defined in the model
    // Initialize properties
    Properties =
    {
        { "active", true },
    },
};
await client.CreateOrReplaceRelationshipAsync("mySourceTwin", "rel001", rel);

Reprezentace JSON prvků grafu

Digitální vlákna dat a data vztahů jsou ukládána ve formátu JSON, což znamená, že při dotazování cyklického grafu ve vaší instanci digitálního vlákna Azure se výsledkem bude reprezentace digitálního vlákna a relací JSON, které jste vytvořili.

Formát digitálního vlákna JSON

Při reprezentaci jako objektu JSON zobrazí digitální vlákna následující pole:

Název pole Description
$dtId Uživatelem zadaný řetězec představující ID digitálního vlákna
$etag Standardní pole HTTP přiřazené webovým serverem
$conformance Výčet, který obsahuje stav shody tohoto digitálního vlákna (v souladu s nevyhovujícími, Neznámý)
<property-name> Hodnota vlastnosti ve formátu JSON ( string , typ čísla nebo objekt)
$relationships Adresa URL cesty ke kolekci vztahů Toto pole chybí, pokud digitální vlákna neobsahuje žádné odchozí okraje vztahu.
$metadata.$model Volitelné ID rozhraní modelu, které charakterizuje tuto digitální vlákna
$metadata.<property-name>.desiredValue [Pouze pro zapisovatelné vlastnosti] Požadovaná hodnota zadané vlastnosti
$metadata.<property-name>.desiredVersion [Pouze pro zapisovatelné vlastnosti] Verze požadované hodnoty
$metadata.<property-name>.ackVersion Verze potvrzená aplikací zařízení implementující digitální dvojitou vlákenou
$metadata.<property-name>.ackCode [Pouze pro zapisovatelné vlastnosti] ack Kód vrácený aplikací pro zařízení implementující digitální vlákna
$metadata.<property-name>.ackDescription [Pouze pro zapisovatelné vlastnosti] ack Popis vrácený aplikací pro zařízení implementující digitální dvojitou vlákenou
<component-name> Objekt JSON obsahující hodnoty a metadata vlastnosti komponenty, podobně jako u kořenového objektu. Tento objekt existuje i v případě, že komponenta nemá žádné vlastnosti.
<component-name>.<property-name> Hodnota vlastnosti komponenty v kódu JSON ( string , typ čísla nebo objekt)
<component-name>.$metadata Informace metadat pro komponentu, podobně jako na úrovni kořenového adresáře $metadata

Tady je příklad digitálního vlákna formátovaného jako objekt JSON:

{
  "$dtId": "Cafe",
  "$etag": "W/\"e59ce8f5-03c0-4356-aea9-249ecbdc07f9\"",
  "Temperature": 72,
  "Location": {
    "x": 101,
    "y": 33
  },
  "component": {
    "TableOccupancy": 1,
    "$metadata": {
      "TableOccupancy": {
        "desiredValue": 1,
        "desiredVersion": 3,
        "ackVersion": 2,
        "ackCode": 200,
        "ackDescription": "OK"
      }
    }
  },
  "$metadata": {
    "$model": "dtmi:com:contoso:Room;1",
    "Temperature": {
      "desiredValue": 72,
      "desiredVersion": 5,
      "ackVersion": 4,
      "ackCode": 200,
      "ackDescription": "OK"
    },
    "Location": {
      "desiredValue": {
        "x": 101,
        "y": 33,
      },
      "desiredVersion": 8,
      "ackVersion": 8,
      "ackCode": 200,
      "ackDescription": "OK"
    }
  }
}

Formát JSON vztahu

Při reprezentaci jako objektu JSON se v relaci z digitálního vlákna zobrazí následující pole:

Název pole Description
$relationshipId Uživatelem zadaný řetězec představující ID tohoto vztahu. Tento řetězec je jedinečný v kontextu zdrojového digitálního vlákna, což také znamená, že sourceId + relationshipId je jedinečný v kontextu instance digitálního vlákna Azure.
$etag Standardní pole HTTP přiřazené webovým serverem
$sourceId ID zdrojového digitálního vlákna
$targetId ID cílového digitálního vlákna
$relationshipName Název vztahu
<property-name> Volitelné Hodnota vlastnosti této relace ve formátu JSON ( string , typ čísla nebo objekt)

Tady je příklad vztahu naformátovaného jako objekt JSON:

{
  "$relationshipId": "relationship-01",
  "$etag": "W/\"506e8391-2b21-4ac9-bca3-53e6620f6a90\"",
  "$sourceId": "GroundFloor",
  "$targetId": "Cafe",
  "$relationshipName": "contains",
  "startDate": "2020-02-04"
}

Další kroky

Podívejte se, jak spravovat prvky grafu pomocí rozhraní API digitálních vláken Azure:

Nebo se naučíte dotazovat se na graf s dvojitými podseznamy digitálních vláken Azure pro informace: