% ------------------------------------------------------------------ %
%                                                                    %
% Datei: dateien.tex                                                 %
% Autor: Oliver Nietsch                                              %
%                                                                    %
% Universitaet Hamburg                                               %
% Fachbereich Informatik                                             %
% Arbeitsbereich DBIS                                                %
%                                                                    %
% Thema: Diplomarbeit: Die Modellierung und Validierung dynamischen  %
%                      Systemverhaltens am Beispiel von StP/OMT      %
%                      und Tycoon                                    %
%                                                                    %
% Inhalt: LaTeX-Dokument: Diplomarbeit,                              %
%                         Anhang A: Tycoon Schnittstellen            %
%                                                                    %
% Version vom 15. 4.1997                                             %
% ------------------------------------------------------------------ %

\chapter{Anbindung der StP API Funktionen an das Tycoon System}
\label{Ann:API2Tycoon}

\section{Generierungsskript f"ur dynamische StP Bibliothek lipstp.so}
\label{Ann:libstp}

\begin{verbatim}
ld -G -o ${TYCOON_ROOT}/lib/${TYCOON_HOST}/libstp.so 
.../StP/libsparc/libideoms.so .../StP/libsparc/libideparse.so 
.../StP/libsparc/libideeditor.so .../StP/libsparc/libidetools.so 
.../StP/libsparc/libsybdb.so /usr/lib/libm.so
.../StP/libsparc/libidestub.so /usr/lib/libnsl.so
\end{verbatim}

\indent

\section{Pfade zu den StP Systemdateien}
\label{Ann:Pfade}

\begin{verbatim}
stp_file_path=.../StP/templates/IDE/omt_booch:
.../StP/templates/IDE/booch:.../StP/templates/IDE/oo:
.../StP/templates/IDE/omtcc:.../StP/templates/IDE/t:
.../StP/templates/IDE/ct:.../StP/templates/IDE
\end{verbatim}

\indent

\section{StP Systemumgebungsvariablen}
\label{Ann:UmgVar}

\begin{verbatim}
LD_LIBRARY_PATH=.../StP/libsparc:/usr/openwin/lib:/opt/sv/lib
PATH=.../StP/binsparc:.../StP/sybase_10.0.1/sparc/bin:
     /usr/ccs/bin:/opt/SUNWspro/SW3.0.1/bin
SHLVL=3 IDE_PRODUCT=omt ToolInfo=.../StP/ToolInfo/IDE
SYBASE=.../StP/sybase_10.0.1/sparc DSQUERY=STP_SERVER
SYS_TEN=true STP_SERVER_PASSWD=welcome
\end{verbatim}

\newpage

\section{Bindung und Verwendung der StP API Funktionalit"at}
\label{Ann:GetIt}

\begin{xple}
\k{Let} T = omsRep.NodeHandle
\k{let} lib = runtimeCore.dynamicLibraryName("{}stpenv"{} "{}libstp"{})
\k{let} handleNil = word.HandleNil(:omsRep.Node)
\k{let} error = \k{exception} "{}OMS\_ERROR"{} \k{end}

\k{let} findCall = bind(:Fun(:String :omsApplicationType.T :omsObjectId.T :String)
                           :T lib "{}oms\_node\_find"{} "{}siwsw"{})

\k{let} find(rep :omsRepository.T  name :String  type :omsApplicationType.T
           scopeNodeId :omsObjectId.T(T)  signature :String) :T =
  \k{begin}
    omsRepository.check(rep)
    \k{let} omsNodeTp = findCall(rep name type scopeNodeId signature)
    \k{if} word.handleEqual(omsNodeTp handleNil) \k{then}
      \k{raise} error \k{end}
    \k{else}
      omsNodeTp
    \k{end}
  \k{end}
\end{xple}

\clearemptydoublepage

\chapter{Tycoon Schnittstellen}
\label{Ann:Schnittstellen}

\section{Modellierungs- und Validierungsumgebung StatechartEnv}
\label{Ann:SchnittStatechartenv}

\subsection{Modul Statechart}
\label{Ann:ModulStatechart}

% \begin{scriptsize} 
\begin{xple} 
\k{interface} Statechart
(* 
   System:  StatechartEnv
   File:    Statechart.ti
   Author:  Oliver Nietsch
   Date:    23-SEP-1996
   Purpose: Statecharts (see: D. Harel. "{}Statecharts: A Visual Formalism for 
                                Complex Systems"{}. In: Science of Computer Programming,
                                Nr. 8, Amsterdam, S. 231-274, 1987)
*)
\k{import}
  list  set

\k{export}
  \k{Let} Chart $<:$\k{Ok} =
    \k{Tuple}

      Event $<:$\k{Ok}
      \k{Let} Events = list.T(Event)
      Action $<:$\k{Ok}
      \k{Let} Actions = set.T(Action)
      Activity $<:$\k{Ok}
      \k{Let} Activities = set.T(Activity)
      State $<:$\k{Ok}
      \k{Let} States = set.T(State)
      Transition $<:$\k{Ok}
      \k{Let} Transitions = set.T(Transition)
      (* Events and Actions *)

      createPrimitiveEvent(trigger :String) :Event

      createAction(actionLabel :String  triggeredEvent :Event
        actionPart :\k{Fun}() :\k{Ok}) :Action

      setActionPart(action :Action  actionPart :\k{Fun}() :\k{Ok}) :\k{Ok}

      (* States *)
      
      createBasicState(stateLabel :String  actionsWhenEntering :Actions
        actionsWhenLeaving :Actions  throughoutActivities :Activities) :State

      createCompositeAndState(stateLabel :String  actionsWhenEntering :Actions
        actionsWhenLeaving :Actions  throughoutActivities :Activities
        children :States) :State

      createCompositeOrState(stateLabel :String  actionsWhenEntering :Actions
        actionsWhenLeaving :Actions  throughoutActivities :Activities
        children :States  defaultState :State) :State

      createRootState(stateLabel :String  actionsWhenEntering :Actions
        actionsWhenLeaving :Actions  throughoutActivities :Activities
        children :States  defaultState :State) :State

      (* Transitions *)

      createNormalTransition(source :State  target :State  trigger :Events) :Transition

      createConditionalTransition(source :State  target :State  trigger :Events
        conditions :States) :Transition

      createTransitionWithActions(source :State  target :State  trigger :Events
        actions :Actions) :Transition

      createConditionalTransitionWithActions(source :State  target :State
        trigger :Events  conditions :States  actions :Actions) :Transition

      (* Configuration *)

      setConfiguration(states :States) :\k{Ok}
      printConfiguration() :\k{Ok}

      (* Statechart Execution *)

      enableTransitions(transition :Transition  input :Events) :\k{Ok}

      simulate(input :Events) :\k{Ok}

    \k{end} (* Tuple *)


  (* New statechart with functions above *)

  newChart() :Chart


\k{end}; (* Statechart *)

\end{xple}
% \end{scriptsize}

\subsection{Modul StP2Tycoon}
\label{Ann:ModulStP2Tycoon}

\begin{xple} 
\k{interface} StP2Tycoon
(*
   System:  StatechartEnv
   File:    StP2Tycoon.ti
   Author:  Oliver Nietsch
   Date:    14-DEZ-1996
   Purpose: Creation of Tycoon Validation Prototype of Rootstate
                StP Dynamic Model from selected StP Project Directory and StP System
   Runtime Condition: libstp.so in \${TYCOON\_ROOT}/lib/\${TYCOON\_HOST}
   Used Tycoon Libraries: \${TYCOON\_ROOT}/src/stpenv
*)
\k{import}
  statechart

\k{export}
  generateStatechart(projdir, system, rootState :String) :statechart.Chart


\k{end}; (* StP2Tycoon *)
\end{xple} 

\newpage

\section{StP Repository Gateway StPEnv}
\label{Ann:SchnittStpenv}

\subsection{Module mit spezieller Tycoon Funktionalit"at}
\label{Ann:StPEnvTab1}

\begin{table}[hbt]
\begin{center}
\begin{tabular}{|l|l|}
\hline
{\bf Modul} & {\bf Beschreibung}\\
\hline\hline
{\sl omsError} & Spezifikation der auszuf"uhrenden Fehler-\\
               & routine beim Auftreten eines StP OMS\\
               & Fehlers.\\
\hline
{\sl omsQuery}  & Kapselung von StP OMS Anfragen.\\
\hline
{\sl omsRep} & Enth"alt die Deklaration der wichtigsten Imple-\\
             & mentationsdatentypen.\\
\hline
\end{tabular}
\end{center}
\label{Tab:ModTycoon}
\end{table}

\indent

\subsection{Module mit spezieller StP PDM Datentyp Funktionalit"at}
\label{Ann:StPEnvTab2}

\begin{table}[hbt]
\begin{center}
\begin{tabular}{|l|l|}
\hline
{\bf Modul} & {\bf Beschreibung}\\
\hline\hline
{\sl omsGeneric} & Generische Hilfsfunktionen, Repositorymanagement-\\
                 & funktionen, Operationen zum Auffinden von Repository-\\
                 & objekten und Attributzugriffs- und Zuweisungs-\\
                 & funktionen f"ur beliebige/alle PDM Datentypen.\\
\hline
{\sl oms$<$pdm\_typ$>$}  & Operationen aus {\sl omsGeneric} und spezielle Funktionen\\
                         & zum Erstellen und Auffinden von Repositoryobjekten\\
                         & und Navigationsoperationen.\\
\hline
\end{tabular}
\end{center}
\label{Tab:ModPDM}
\end{table}

\newpage

\subsection{Module mit allgemeiner StP PDM Datentyp Funktionalit"at}
\label{Ann:StPEnvTa3}

\begin{table}[hbt]
\begin{center}
\begin{tabular}{|l|l|}
\hline
{\bf Modul} & {\bf Beschreibung}\\
\hline\hline
{\sl omsBigCollection} & Generische Operationen zum Generieren und\\
                       & Manipulieren von \engl{Big Collection} Objekten\\
                       & beliebiger/aller PDM Datentypen.\\
\hline
{\sl omsCollection} & Generische Operationen zum Generieren und\\
                    & Manipulieren von \engl{Collection} Objekten\\
                    & beliebiger/aller PDM Datentypen.\\
\hline
{\sl omsApplicationType} & Operationen entsprechend des StP API Datentyps\\
                         & {\tt oms\_app\_tp} zur Abbildung von Anwendungs-\\
                         & datentypen auf PDM Datentypen.\\
\hline
{\sl omsIdList} & Operationen entsprechend des StP API Datentyps\\
                & {\tt oms\_idlist\_tp} zum Verwalten von ID Listen.\\
\hline
{\sl omsPDMType} & Operationen entsprechend des StP API\\
                 & Datentyps {\tt oms\_pdm\_type\_tp} zur Verwaltung\\
                 & der internen Darstellung der einzelnen PDM Daten-\\
                 & typen.\\
\hline
{\sl omsObjectId} & Operationen entsprechend des StP API\\
                  & Datentyps {\tt oms\_object\_id\_tp} zum Erstellen\\
                  & einer individuellen Objekt ID f"ur Objekte\\
                  & innerhalb des StP Repositorys.\\
\hline
{\sl omsRepository} & Operationen entsprechend des StP API\\
                    & Datentyps {\tt oms\_repos\_tp} zum Initialisieren\\
                    & der StP Systemvariablen, "Offnen, Verwalten\\
                    & und Schlie"sen des StP Repositorys.\\
\hline
{\sl omsStatus} & Operationen entsprechend des StP API\\
                & Datentyps {\tt oms\_status\_tp} zum "Uberpr"ufen\\
                & ob eine API Operation erfolgreich ausgef"uhrt\\
                & werden konnte.\\
\hline
{\sl omsTime} & Operationen entsprechend des StP API\\
              & Datentyps {\tt oms\_time\_tp} zur Operation\\
              & auf Datums- und Zeitrepr"asentationen.\\
\hline
{\sl omsTransaction} & Operationen entsprechend des StP API\\
                     & Datentyps {\tt oms\_txn\_tp} zum Verwalten\\
                     & von StP Repository Transaktionen.\\
\hline
\end{tabular}
\end{center}
\label{Tab:ModStP}
\end{table}

\clearemptydoublepage
