Objektmodell in das JSON-Format exportieren

Der Objektmodell-Importer implementiert die Softwareschnittstelle IObjectModelExport, mit der ein Datenpunkttyp und die zugehörige Objektmodellkonfiguration in das JSON-Format exportiert werden können.

Die Schnittstelle IObjectModelExport wird von der Klasse ObjectModelExport implementiert und enthält die nachfolgend beschriebenen synchronen Methoden.

Der Exportalgorithmus ruft den WinCC OA ASCII Manager auf, um einige Datenpunkttypdaten abzurufen. Diese Funktion kann also nur auf dem Servercomputer ausgeführt werden, auf dem WinCC OA installiert ist.

 

Die exportierten Objektmodelldaten entsprechen der Konfiguration der benutzerdefinierten Bibliothek. In dieser benutzerdefinierten Bibliothek wurde das Objektmodell ursprünglich erstellt, und dorthin kann das Objektmodell re-importiert werden. Wenn beispielsweise ein Objektmodell in L1-Headquarter erstellt wurde und dann in L4-Projekt angepasst wurde, sind die exportierten Objektmodelldaten von der Ebene L1-Headquarter.

 

Initialisieren

Diese Methode initialisiert die Exportfunktion. Sie initialisiert mit anderen Worten die Klassenattribute ObjectModelExport und erstellt die Klassen, die für die Interaktion mit WinCC OA und die Verfolgung der Logdateien verwendet werden.

bool Initialize( ContextOperation contextUserOperation,

            ContextOperation contextEngineeringOperation,

            string clientName,

            DpIdentifier systemDp)

Die Parameter und der zurückgelieferte Wert der Methode werden in den folgenden Tabellen beschrieben.

Parameter initialisieren

Type

Name

Beschreibung

ContextOperation

contextUserOperation

Benutzerdefinierter Kontextvorgang (Normalmodus).

ContextOperation

contextEngineeringOperation

Engineering-Kontextvorgang (interner Modus).

Zeichenfolge

clientName

Komponentenname

DpIdentifier

systemDp

Aktuelle System-ID.

Zurückgelieferten Wert initialisieren

Type

Beschreibung

bool

False, falls während der Initialisierung ein Fehler auftritt.

Export

Diese Methode exportiert einen Datenpunkttyp und die zugehörige Objektmodellkonfiguration.

MemoryStream Export( string objectModel,

                string[] textGroups,

                out int errorCode,

                out string errorLogs)

 

Die Parameter und der zurückgelieferte Wert der Methode werden in den folgenden Tabellen beschrieben.

Parameter exportieren

Type

Name

Beschreibung

Zeichenfolge

objectModel

Name des zu exportierenden Objektmodells.

string[ ]

textGroups

Matrix der zu exportierenden Textgruppennamen. Wenn die Matrix leer oder der Parameter leer ist, werden keine Textgruppen exportiert.

out int

errorCode

Fehlercode. Mögliche Werte sind:

0 = keine Fehler.

1 = Fehler beim Export.

2 = Warnungen beim Export.

out string

errorLogs

Zeichenfolge, die die Logs der Fehler oder Warnungen enthält.

Zurückgelieferten Wert exportieren

Type

Beschreibung

MemoryStream

Stream im Speicher, der das in das JSON-Format exportierte Objektmodell enthält.

Beispiel

Das folgende Beispiel zeigt, wie die Schnittstelle IObjectModelExport verwendet wird.

Die Bibliothek Siemens.Gms.Importer.ObjectModelImporter.dll muss referenziert sein.

 

public void ExportObjectModel(ContextOperation userContext, ContextOperation engContext,

DpIdentifier systemDpId)

{

    ObjectModelExport objectModelExporter = null;

    try

    {

        int errorCode;

        string errorLogs;

        // Create an instance of the exporter

        objectModelExporter = new ObjectModelExport();

        // Initialize the exporter

        if (!objectModelExporter.Initialize(userContext, engContext, "MyAppl_ObjectModelExport",

systemDpId))

        {

            MessageBox.Show("Error during initialization.");

            return;

        }

        // Export the object model data

        string objectModelName = "Test_NormalPoint";

        string[] textGroups = new string[] { "MyText" };

        var memoryStream = objectModelExporter.Export(objectModelName, textGroups,

out errorCode, out errorLogs);

        // Evaluate the error code

        // .......

        // Other code

        // .......

    }

    catch(Exception)

    {

        MessageBox.Show("Generic error during the export.", "Severe Error", MessageBoxButtons.OK,

MessageBoxIcon.Error);

    }

    finally

    {

        if(objectModelExporter != null)

        {

            objectModelExporter.Dispose();

            objectModelExporter = null;

        }

    }

}

 

Hinweise zum in das JSON-Format exportierten Objektmodell

Die exportierten Daten des Objektmodells werden gemäss den Angaben für das JSON-Format formatiert.

Einige Unterschiede bezüglich des JSON-Importformats müssen jedoch berücksichtigt werden:

  • Alle Konfigurationsdaten des Objektmodells werden exportiert, unabhängig davon, ob diese Daten in der Importdatei obligatorisch oder optional sind.
  • Ebenso werden alle Konfigurationsdaten jedes Datenpunktelements exportiert, unabhängig davon, ob diese Daten in der Importdatei obligatorisch oder optional sind.
  • Die möglichen obligatorischen Datenpunktelemente werden zusammen mit den anderen DPEs des Objektmodells aufgeführt und sind nicht in einem separaten Abschnitt enthalten.
  • Alle angegebenen Textgruppen werden exportiert, auch wenn sie vom exportierten Objektmodell nicht verwendet werden.
  • Es ist nicht möglich, nur die Textgruppen zu exportieren. Das zu exportierende Objektmodell muss zwingend anzugeben, andernfalls schlägt der Exportvorgang fehl.
  • Wenn ein Datenpunktelement des Referenztyps vorhanden ist, werden alle Daten des referenzierten Objektmodells exportiert.
  • Da jeder Datenpunkttyp über Verweise auf _GmsRelatedItems und _GmsStatusPropagation verfügen muss, werden die referenzierten Datenpunkttypen nicht exportiert.
  • Die exportierten Befehle enthalten die GUID, die vom System automatisch zugewiesen wurde. Dieser Wert darf nicht geändert werden, andernfalls kann der Befehl bei einem Re-Import nicht mehr erkannt werden.