Screenshot: Steps Active Server .net FTP-Upload via WebClient

Screenshot: Steps Active Server .net FTP-Upload via WebClient

Mit dem Steps Active Server, einem Produkt der Step Ahead AG aus Germering bei München, können für das ERP-System Steps Business Solution automatisch ausführbare Scripte programmiert, verwaltet und terminiert werden.

Diese Framework haben wir uns vom Quality-IT-Team zu nutze gemacht. Im Rahmen eines Schnittstellen-Projektes zwischen Steps Business Solution und ZALANDO haben uns näher mit dieser neuen Entwicklungsumgebung beschäftigt. Da die Beispiele zumeist noch in VB.script oder VB.net zur Verfügung stehen haben wir unser C#-Beispiel veröffentlicht.

Aufgabenstellung:

Um Bilder auf einem FTP-Server hochzuladen benötigten wir ein entsprechendes Code-Snippet, mit dem wir diese Aktion in einer Unterfunktion auslagern konnten.

 

Codebeispiel in C#:

        private void uploadFile2FTP(string file)//Schritt 3 mit Value "uploadFile2FTP"
        {
            string localFile = file;
            ProgressReport(3, 10);
            string ftpServer = "ftp.server.com";
            string ftpUser = "ftp-user";
            string ftpPassword = "ftp-password";
            ProgressReport(3, 50);
            string remoteFileName = "targetfile.txt";
            WebClient ftpClient = new WebClient();
            ftpClient.Credentials = new NetworkCredential(ftpUser, ftpPassword);
            try
            {
                ftpClient.UploadFile(ftpServer + remoteFileName, "STOR", localFile);
            }
            catch (Exception e)
            {
                DebugPrint(e.Message.ToString());
                DebugPrint("error uploadFile2FTP" + ftpServer + remoteFileName + " STOR " + localFile);
            }
            ProgressReport(3, 100);
            DebugPrint("remoteFileName: " + remoteFileName);
        }

 

Das gesamte Codebeispiel können Sie hier als zusammenhängenden Active Server Job herunterladen: Demo-FTPUpload

 

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.