2.10  Użycie kontekstu uruchomienia skryptu

 

Jedną z metod uruchomienia skryptu jest użycie akcji Script podpiętej do obsługi zdarzenia obiektu wizualizacyjnego na diagramie. W takim przypadku możliwe jest sprawdzenie kontekstu uruchomienia – pozwala to napisać skrypt, który dostosowuje się do miejsca wywołania.

Kontekst uruchomienie opisuje obiekt interfejsu IContext, który można uzyskać poprzez odczyt właściwości ExecutionContext interfejsu IApplication. Najbardziej użyteczną właściwością obiektu IContext jest MainVar zwracająca nazwę zmiennej głównej obiektu, dla którego skrypt został uruchomiony.

C#

using System;

using System.Windows.Forms;

using Askom.AsixEvo.Scripting;

 

public class Context : IScript

{

   public bool Initialize(string[] aParameters, IApplication aApplication)

   {

      string mainVar = aApplication.ExecutionContext.MainVariable;

      if (!string.IsNullOrEmpty(mainVar))

      {

         IVariable v = aApplication.GetVariable(mainVar, false);

         if (v != null)

         {

            try

            {

               if (v.VariableState.IsGood)

               {

                  v.SetVariableValue((UInt32)v.VariableState.Value + 1);

               }

            }

            catch (Exception e)

            {

               aApplication.ReportMessage(EvoMessageType.Error, e.Message);

 

            }

            finally

            {

               v.Dispose();

            }

         }

      }

      return true;

   }

 

   public void FinalizeScript()

   {

   }

}

 

 

VB

 

Imports System

Imports System.Windows.Forms

Imports Askom.AsixEvo.Scripting

 

Public Class ContextVB

    Implements IScript

 

    Public Function Initialize(ByVal aParameters() As StringByVal aApplication As _

                                     IApplication) As Boolean Implements IScript.Initialize

 

        Dim mainVar As String

        mainVar = aApplication.ExecutionContext.MainVariable

        If Not String.IsNullOrEmpty(mainVar) Then

            Dim v As IVariable

            v = aApplication.GetVariable(mainVar, False)

            If Not v Is Nothing Then

                Try

                    If (v.VariableState.IsGood) Then

                        v.SetVariableValue(v.VariableState.Value + 1)

                    End If

                Catch e As Exception

                    aApplication.ReportMessage(EvoMessageType.Error, e.Message)

                Finally

                    v.Dispose()

                End Try

            End If

        End If

        Return True

 

    End Function

 

    Public Sub FinalizeScript() Implements IScript.FinalizeScript

 

    End Sub

 

End Class  

 

W powyższym przykładzie z kontekstu uruchomienia pobierana jest nazwa zmiennej głównej. Następnie, w przypadku poprawnego odczytu wartości aktualnej, wartość zmiennej jest inkrementowana.

Alternatywną metodą kontekstowego uruchomienia skryptu w obsłudze zdarzenia obiektu, jest  dynamiczna konstrukcja treści akcji operatorskiej i przekazanie danych kontekstowych w parametrach skryptu.

Przykład:

^Script(Context,LocalProperty(ControlVar))

Powyższa akcja uruchamia skrypt Context z przekazaniem jako parametru nazwy zmiennej sterowanej obiektu, w kontekście którego akcja jest wykonywana.