Table of Contents

Managed Schnittstelle

Informationen

  • Kategorien: Kernel | Schnittstellen | Managed Schnittstelle
  • Version: 15.0.0.2805
  • Veröffentlichungsdatum: Donnerstag, 26. Mai 2011
  • Entwickler: Schulze
  • Benötigt Datenbankänderung: Nein
  • Betreff: .NET-Schnittstelle für eingebundene benutzerspezifische .NET-Assemblies

Beschreibung

Die Schnittstelle für eingebundene benutzerspezifische .NET-Assemblies wurde erweitert. Es können jetzt Entities/Entitylisten übergeben/zurückgegeben werden.

Die bekannte Datentypen lauten jetzt: ++++++++++++++++++++++++++++++++++++++ pit-IS Datenttypen (Beispiel) <==> .NET Datentypen --> Assembly

void <==> System.Void --> System.dll (MS.NET) string $str <==> System.String --> System.dll (MS.NET) int $counter <==> System.Int32 --> System.dll (MS.NET) bool $flag <==> System.Boolean --> System.dll (MS.NET) double $doubleValue <==> System.Double --> System.dll (MS.NET) time $timeValue <==> System.DateTime --> System.dll (MS.NET) string $stringArray[] <==> System.String[] --> System.dll (MS.NET) int $intArray[] <==> System.Int32[] --> System.dll (MS.NET) bool $flagArray[] <==> System.Boolean[] --> System.dll (MS.NET) double $doubleArray[] <==> System.Double[] --> System.dll (MS.NET) time $timeArray[] <==> System.DateTime --> System.dll (MS.NET) entity $eValue (z.B. ::Employee $eEmployee) <==> PitFM.Model.Userdata.EntityData --> CliModel.dll (pit-IS) entitylist $elValue <==> PitFM.Model.Userdata.EntityListData --> CliModel.dll (pit-IS)

Voraussetzung für die Nutzung von entity/entitylist ist die Referenzierung der .NET-Assembly CliModel.dll (diese ist Bestandteil von pit-IS) in der eingebundenen benutzerspezifischen .NET-Assembly. Über die CliModel.dll kann auf die .NET-Schnittstelle von pit-IS zugegriffen werden (Namespace Pit.Model).

Die Dokumentation der .NET-Schnittstelle (Managed-Schnittstelle) ist zu finden unter http://mail.pit.de:8888/help/webservice/ (für Externe geschützter Bereich, Anmeldung wie RSS-Feeds). Webservice & Managed Schnittstelle > Symbol-Referenz > PitFM Namespace > Model Namespace

Hinweis: für den Intranetzugriff kann mail.pit.de:8888 ersetzt werden durch vm237-news.pitcup-hd.pit.de

Beispielcode

/*******************************************************************************************
*
* C# Test-Assembly "pitTestAssembly.dll"
* die Referenzierung der CliModel.dll in dieser Assembly ist Voraussetzung!
*
*******************************************************************************************/
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using PitFM.Model;

namespace pitTestAssembly
{
    public class Class1
    { 
        static public void ShowEntity( PitFM.Model.Userdata.EntityData pitEntity )
        {
            StringBuilder sb = new StringBuilder();

            // Klassenname des übergebenen Entity
            sb.AppendFormat("Entity: {0}\nAttribute:\n", pitEntity.Classname);

            // Verweis auf die Session holen
            PitFM.Model.Session pitSession = PitFM.Model.Session.GetCurrentSession();
            
            // die abzufragenden Attribute für das Entity in String-Liste einfügen
            PitFM.Model.StringList attributeNames = new StringList();
            attributeNames.Add("$Displayname");
            attributeNames.Add("$Infotext");
            
            // Entitywerte mit Attributen abfragen
            PitFM.Model.Userdata.EntityData pitEntityWithAttributes = PitFM.Model.Userdata.EntityData.GetEntityData(pitSession, pitEntity.Handle, attributeNames);

            // Attribute anzeigen
            foreach (PitFM.Model.Userdata.Attribute pitAttribute in pitEntityWithAttributes.Attributes)
            {
                sb.AppendFormat("{0}={1}\n", pitAttribute.Name,pitAttribute.Value.ToString());
            }
            MessageBox.Show(sb.ToString());
        }
    }
}


// ###############################################
// Klassen-Automatismus in pit-FM zum Testen des Aufrufs der .NET-Assembly

import dotnet ("pitTestAssembly.dll", "pitTestAssembly.Class1", "ShowEntity") as function void ShowEntityFromAssembly ( entity $pitEntity );

ondisplayfunction
{
	if ( IsPageButtonContext() )
	{
		SetFunctionLabel( "AssemblyTest" );
		EnableFunction( 1 );
		ShowFunction( 1 );
	}
}

oncallfunction
{
	ShowEntityFromAssembly( this );
}