23. Konfiguration GeoShop Triggers

23.1. Definition

Triggers sind Subprozesse, die im GeoShop im Ablauf eines Prozesses zusätzlich aktiviert werden können. Die Triggers werden für den GeoShop Server definiert und von diesem ausgelöst.

Die Triggers werden im folgende File definiert.

GEOSHOP_DIR\user\options\appserver.opt

Trigger verweisen auf ICS-Konfigurationen, die vom GeoShop aufgerufen werden und die beliebige Aktionen ausführen können. Triggers sind optional.

Nachfolgend ein Beispiel für einen Trigger ON_SENDORDER . Dieser Trigger wird ausgeführt wenn im GeoShop eine Bestellung eingeht.

Definition des Triggers.

GEOSHOP_DIR\user\options\appserver.opt

MAP
   AppServer MAP
      : 
      ON_SENDORDER STRING \script\trigger\on_sendorder.cfg
      :
   }
   :
}

Konfiguration des Triggers.

GEOSHOP_DIR\user\script\trigger\on_sendorder.cfg

!============================================================================
! example on_sendorder trigger
!
! sends GeoShop Administrator an email for each incomming order
!============================================================================

!============================================================================
! license
!============================================================================

|LICENSE \license\geoshop.lic

!============================================================================
! includes
!============================================================================

|INCL \script\util.lib

!============================================================================
! maps
!============================================================================

MAP EMAIL_PARAM
   MAIL_SERVER          => 'mail.server.ch'    ! mail server
   SENDER_MAILADDRESS   => 'info@geoshop.ch'   ! mail sender address
END_MAP

!============================================================================
! procedures
!============================================================================

PROCEDURE EMAIL_SEND ! [s Receiver-email, s subject, s messagefile] [b status]

   ! Arguments get
   !--------------
   => LOCAL.FILE
   => LOCAL.SUBJECT
   => LOCAL.RECEIVER

   ! Log File
   !---------
   OPT.temp_dir . '\email.log' => LOCAL.LOGFILE
   LOCAL.LOGFILE TEXTFILE.REMOVE POP   

   ! Command build
   !--------------
   
   OPT.jre_dir . '\bin\java.exe'
      . ' -jar ' . OPT.bin_dir . '\mailer.jar'
      . ' -body ' . LOCAL.FILE
      . ' -server ' . EMAIL_PARAM.MAIL_SERVER
      . ' -from ' . EMAIL_PARAM.SENDER_MAILADDRESS
      . ' -to ' . LOCAL.RECEIVER
      . ' -subject "' . LOCAL.SUBJECT . '"'
      . ' 2>nul >' . LOCAL.LOGFILE
   => LOCAL.COMMAND

   ! Command execute
   !----------------
   IF LOCAL.COMMAND OSCALL = 0 THEN
      TRUE => LOCAL.STATUS
   ELSE
      FALSE => LOCAL.STATUS
      ERROR 'Could not send email !'
      DISPLAY LOCAL.COMMAND
      IF LOCAL.LOGFILE TEXTFILE.OPEN THEN
         => LOCAL.LOGFILE_ID
         DISPLAY ''
         DISPLAY 'email-logfile:'
         WHILE LOCAL.LOGFILE_ID TEXTFILE.READLN DO
            => LOCAL.LINE
            DISPLAY LOCAL.LINE
         END_WHILE
         LOCAL.LOGFILE_ID TEXTFILE.CLOSE
         DISPLAY ''
      END_IF
   END_IF

   ! Return
   !-------
   LOCAL.STATUS

END_PROCEDURE

!============================================================================
! main
!============================================================================

! email subject
!--------------
OPTIONS.AppServer.APPLI_NAME . ': Order ' . OPT.orderno . ' received' => VAR.SUBJECT

! email message file create and write
!------------------------------------
OPT.temp_dir . '\message.txt' => VAR.MESSAGE_FILE
IF VAR.MESSAGE_FILE TEXTFILE.CREATE NOT THEN
   ERROR 'Can not create File !'
   DISPLAY VAR.MESSAGE_FILE
   HALT
END_IF
=> VAR.MESSAGE_FILE_ID

VAR.MESSAGE_FILE_ID 'Hello Administrator'                      TEXTFILE.WRITELN
VAR.MESSAGE_FILE_ID ''                                         TEXTFILE.WRITELN
VAR.MESSAGE_FILE_ID 'A GeoShop order came in !'                TEXTFILE.WRITELN
VAR.MESSAGE_FILE_ID ''                                         TEXTFILE.WRITELN
VAR.MESSAGE_FILE_ID 'order   : ' . OPT.orderno                 TEXTFILE.WRITELN
VAR.MESSAGE_FILE_ID 'product : ' . OPT.selection_productname   TEXTFILE.WRITELN
VAR.MESSAGE_FILE_ID 'name 1  : ' . OPT.delivery_laname1        TEXTFILE.WRITELN
VAR.MESSAGE_FILE_ID 'name 2  : ' . OPT.delivery_laname1        TEXTFILE.WRITELN
VAR.MESSAGE_FILE_ID 'city    : ' . OPT.delivery_lacity         TEXTFILE.WRITELN
VAR.MESSAGE_FILE_ID 'price   : ' . OPT.price                   TEXTFILE.WRITELN
VAR.MESSAGE_FILE_ID 'mail    : ' . OPT.delivery_laemail        TEXTFILE.WRITELN
VAR.MESSAGE_FILE_ID ''                                         TEXTFILE.WRITELN
VAR.MESSAGE_FILE_ID 'regards'                                  TEXTFILE.WRITELN
VAR.MESSAGE_FILE_ID OPT.script                                 TEXTFILE.WRITELN

VAR.MESSAGE_FILE_ID TEXTFILE.CLOSE

! email send
!-----------
OPTIONS.AppServer.ADMIN_EMAIL VAR.SUBJECT VAR.MESSAGE_FILE EMAIL_SEND POP

!============================================================================
! end of script
!============================================================================

Das Script sendet bei jeder einkommenden Bestellung eine Mail an die GeoShop Administrator Email-Adresse.

23.2. Eigenschaften

Triggers werden im folgenden File definiert.

GEOSHOP_DIR\user\options\appserver.opt

Folgende Trigger stehen zur Verfügung.

EMail TemplateTypeBeschreibung
GeoShopServer.PRE_STARTUPSTRINGWird vor dem Starten des GeoShop Servers ausgeführt.
GeoShopServer.POST_STARTUPSTRINGWird nach dem Starten des GeoShop Servers ausgeführt.
GeoShopServer.ON_SENDORDERSTRINGWird bei einem Bestelleingang (Order) ausgeführt.
GeoShopServer.PRE_EXECUTESTRINGWird bei einer Bestellung (Order) vor der Datenaufbereitung ausgeführt.
GeoShopServer.POST_EXECUTESTRINGWird bei einer Bestellung (Order) nach der Datenaufbereitung ausgeführt.
GeoShopServer.POST_DOWNLOADSTRINGWird bei einer Bestellung (Order) nach dem Bestellvorgang (download) ausgeführt.