Codebeispiel (C#) für Steps Active Server: How To Use JobRunner / ReportProgress

Der ERP-Hersteller Step Ahead AG aus Germering bei München hat zur Version 2014 sein Versprechen der „werthaltigen Softwarepflege“ eingelöst und den Steps Active Server auf eine technologische Basis migriert. Der neue Active Server ist nun auf Microsoft (R) .net-Technologie und der Hintergrunddienst unterstützt jetzt auch eine größere Menge an Programmiersprachen. Früher konnten Steps Active Server Jobs (AS-Jobs), wie die kleinen Scripten heißen, nur in VB.script geschrieben werden. Mit der neuen Version der Script-Engine für das ERP-Programm Steps Business Solution sind auch Sprachen wie VB.net und C# (csharp) möglich. Mit der Datenbanksprache SQL wird die Reihe der möglichen Entwicklungs-Sprachen komplettiert. Viele der bestehenden Hintergrund-Programme sind aktuell (Stand: 12.12.2014) noch in VB.script geschrieben. Es existierten nur wenige Codebeispiele für andere Sprachen. Da die Präferenz in der PDF-Dokumentation zum Programm auf VB.net liegt, fällt es Csharp-Programmierern ein wenig schwerer mit dieser Scripting-Engine in C# zu programmieren. Daher möchte ich hier ein kleines Codebeispiel in C# posten, wie die JobRunner.dll und das Event ReportProgress in C# genutzt werden können:

using Steps.ActiveServer.JobRunner; //Referenz auf C:\Program Files (x86)\StepsBusinessSolution\Application\Steps.ActiveServer.JobRunner.dll notwendig
namespace Job
{
  public class MainClass : IJobProgress
  {
    public event IJobProgress.ReportProgressEventHandler ReportProgress;
    public string[] Steps
    {
      get
      { 
        string[] stepsValues = {"Main", "subfunction" };
        return stepsValues;
      }
    }

    public void Main() //Step 1 mit Value "Main"
     {
       //use byte, integer funktioniert nicht
       for (byte i = 1; i < 100; i++)
       {
         ReportProgress(1, i);
         System.Threading.Thread.Sleep(50);
       }
    subfunction();
    }
  
    private void subfunction()//Step 2 mit Value "subfunction"
    {
      for (byte i = 1; i < 100; i++)
      {
        ReportProgress(2, i);
        System.Threading.Thread.Sleep(50);
      }
    }
  }
}

 

Um die Jobrunner.dll nutzen zu können muss diese unter dem registrierten DLLs eingehängt werden und mit dem using bekanntgemacht werden. Die MainClass muss das Interface IJobProgress implementieren. Da der Job-Designer (Steps.ActiveServer.Designer.exe) keine automatische Implementierung unterstützt müssen Sie die Zeilen entweder selbst codieren oder aus meinem Codebeispiel kopieren. Sie benötigen die Event-Deklaration und das Property Steps. Die Rückgabe der Property-Werte werden von Ihnen selbst gestaltet. Hier wird ein statisches Array zurückgegeben. Dies ist angelehnt an die Dokumentation der Step Ahead AG. In der Main-Methode wird in einer Schleife die Variable i hochgezählt und jeweils das Event ReportProgress ausgelöst. Achten Sie darauf, die Variable mit byte zu definieren, der Datentyp int führt zu einem Ausführungsfehler. Die selbe Methodik kann auch in privaten subfunctionen verwendet werden. Mit dem ersten Parameter des Events können sie den Step angegeben. Dies ist äquivalent zu dem Property Steps. Das Ergebnis ist eine komfortable Fortschrittsanzeiger innerhalb des Job-Designers. Diese sehen sie auf nachfolgenden Screenshot unten rechts.

Screenshot des Steps Active Server .net mit Fortschrittsanzeige
Screenshot des Steps Active Server .net mit Fortschrittsanzeige

 

Dieses Script hat jetzt noch keinen sehr praktischen Nutzen, jedoch bietet es eine gute Ausgangssituation für ein Script zur Prozessoptimierungen oder diversen Automatisierungen. Der Nutzen des Steps Active Servers liegt auf der Hand: Zeitgesteuert automatisch im ERP-System arbeiten erledigen oder ERP-Daten verarbeiten. Die Anwendungsszenarios sind dabei nahezu grenzenlos. In Verbindung mit der nun verfügbaren .net-Technologie von Microsoft (R) und der Einbindung von diversen DLLs, auch selbstgeschriebene, können Sie Ihr ERP-Programm noch intensiver nutzen.

Hier finden Sie den gesamten Job noch als *.ssx-Datei: Steps Active Server Job: Q-DEMO-PROGRESS.