SCCM Manager 3.0
Plugin API

Die Serverinstallation des SCCM Managers liefert eine Schnittstelle zur Eigenentwicklung von Plugins mit. Dazu wird eine IDE (z.B. Visual Studio) zur Entwicklung von C-Sharp-Anwendungen mit dem Grafikframework WPF benötigt. Desweiteren wird .NET Framework 4.5 vorausgesetzt.

Entwicklung

Ein neu erstelltes Plugin muss als Klassenbibliothek (DLL-Datei) kompiliert werden und das Interface IActionPlugin implementieren. Das Interface befindet sich in der Klassenbibliothek ActionPanel.PluginBase.dll. Zusätzlich wird noch die Klassenbibliothek ActionPanel.Common.dll mitgeliefert. Darin sind einige nützliche Helferklassen enthalten.

Zur Einbindung des neu entwickelten Plugins muss lediglich die entsprechende DLL-Datei in das Pluginverzechnis des SCCM Managers kopiert werden:

{Installationsverzechnis}\Web\SCCMManager\Resources\Assemblies\

Danach muss die Startmenüverknüpfung "Update Plugin Versions" ausgeführt werden, damit das neue Plugin, zur Konfiguration in der Administrationsoberfläche des SCCM Managers, zur Verfügung steht.

Interface IActionPlugin

Folgend wird das Interface IActionPlugin erläutert.

Eigenschaften

Name Typ Beschreibung Automatisch gesetzt
Title string Titel laut Action-Konfiguration Ja
IsSingleton bool

Singleton laut Action-Konfiguration

Ja
Argument string Argument laut Action-Konfiguration Ja
SelectedComputers ObservableCollection<IComputerItem> Hier werden alle zur Laufzeit ausgewählten Computer aufgelistet Ja
ApplicationVariables IApplicationVariables Pluginvariablen aus der Datenbank, hierüber können auch Werte modifiziert werden Ja
ActionPanelControl IActionPanel Zugriff auf diverse Funktionen des SCCM Managers und auf den WebService Ja
LanguageTranslater ILanguageTranslater Zugriff auf die Sprachenübersetzungen des Plugins Ja
PluginContainer IPluginContainer Ja
SelectedComputerType SelectedComputerType (Enum) Nein
SingletonBehavior SingletonBehavior (Enum) Verhalten, wenn das Plugin ein zweites Mal gestartet wird und dessen Singleton-Eigenschaft aktiviert ist Nein
PluginType PluginTypes (Enum)

Art des Plugins. Mögliche Werte:

  • Executer: Die definierte Funktion wird ausgeführt und die Pluginoberfläche wird nicht geladen.
  • ExecuterUserControl: Die definierte Funktion wird ausgeführt oder die Pluginoberfläche wird geladen.
  • UserControl: Die definierte Funktion wird ausgeführt und die Pluginoberfläche wird geladen.
  • Unknown: Keine Zuordnung (ungültiger Wert)
Nein
ContentControl UserControl UserControl, das im SCCM Manager als Oberfläche angezeigt werden soll, wenn es sich bei der Pluginart um ein UserControl-Plugin handelt Nein

Methoden

Name Rückgabe-Typ Übergabeparameter Beschreibung
Initialize bool Initialisierung des  Plugins.
OnApplicationExit void Event wenn der SCCM Manager beendet wird.
UpdateArgument void string argument Wenn ein Plugin ein zweites Mal als Singleton gestartet wurde, wird diese Methode aufgerufen.
InvokeFunction bool string function, string[] parameters Übergabe der konfigurierten Funktion und Parameter.

Implementierung

Beispiel: ClientActionsPlugins
Kopiere Code
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows.Controls;
using ActionPanel.PluginBase;
using ActionPanel.PluginBase.Enums;
using ActionPanel.PluginBase.Interfaces;
using ClientActionsPlugin.View;
using FuncLib;

namespace ClientActionsPlugin
{
    class ActionPanelPlugin : IActionPlugin
    {
        private ActionUserControl m_control;

        public string Title { get; set; }

        public bool IsSingleton { get; set; }

        public string Argument { get; set; }

        public ObservableCollection<IComputerItem> SelectedComputers { get; set; }

        public SelectedComputersType SelectedComputerType { get; set; } = SelectedComputersType.Single;

        public SingletonBehavior SingletonBehavior { get; } = SingletonBehavior.UpdateArgument;

        public PluginTypes PluginType { get; } = PluginTypes.ExecuterUserControl;

        public UserControl ContentControl => m_control;

        public bool Initialize()
        {
            m_control = new ActionUserControl(this);
            if (m_control != null)
            {
                m_control.Title = Title;
                m_control.SelectedComputer = SelectedComputers?.FirstOrDefault()?.Name;
                m_control.Init();
            }

            return true;
        }

        public void OnApplicationExit()
        {
            
        }

        public void UpdateArgument(string argument)
        {
            Argument = argument;
            m_control.SelectedComputer = SelectedComputers?.FirstOrDefault()?.Name;
            m_control.Init();
        }

        public bool InvokeFunction(string function, string[] parameters)
        {
            bool force = (parameters != null && FLibCMD.CheckForCommandLineKey(parameters, "force", false));

            if (function == Functions.SHUTDOWN)
            {
                return m_control.ShutdownComputer(force);
            }
            else if (function == Functions.RESTART)
            {
                return m_control.RestartComputer(force);
            }
            else if (function == Functions.WAKEUP)
            {
                return m_control.WakeUpComputer();
            }
            else
            {
                return false;
            }
        }

        public IApplicationVariables ApplicationVariables { get; set; }

        public IActionPanel ActionPanelControl { get; set; }

        public ILanguageTranslater LanguageTranslater { get; set; }

        public IPluginContainer PluginContainer { get; set; }
    }
}

ApplicationVariables

Für ein neues Plugin kann in der SCCM-Manager-Datenbank eine Konfiguration hinterlegt werden.

Der SCCM Manager erkennt die Konfiguration automatisch und ermöglicht die Konfiguration über den Adminsitrationsbereich.

Erläuterung der Spalten

Siehe auch

Referenz