Utilisation des Exits Data Server

Le MAINVIEW Data Server maintient des demandes pour identifier les champs sorties des vues des produits MAINVIEW qui doivent êtres suivis. Chaque demande lie un champ avec un exit qui exportera les valeurs selon le désir de l'utilisateur. Des exits de base sont inclus avec le programme par la BMC Software. Ceux-ci sont à modifier pour répondre aux besoins de chaque client.

Pour des informations sur l'utilisation de l'exit ODBC, cliquez ici.

Langage des Exits

Le MAINVIEW Data Server est écrit en Java, un langage élaboré par la SUN Microsystems dans le but d'avoir un seul langage de programmation, puissant et capable d'être utilisé sans modifications sur tous les ordinateurs. Quelque connaissances du Java sont nécessaires si vous cherchez a modifier les exits. Outre tout un tas de livres sur le sujet, la documentation du Java se trouve à developer.java.sun.com/developer/infodocs/

Les exits sont écrits dans un dialecte du Java qui s'appelle BeanShell. Il s'agit ici d'un projet "Open Source" . La documentation complète se trouve à www.beanshell.org/docs.html . ci-dessous vous trouverez en gros les différences entre BeanScript et Java. Puisque la définition des deux langages est en anglais, ce texte l'est aussi:

  1. Variable Typing. If a variable is declared, BeanShell will enforce the declared data type (int, String, etc.) A variable which is not declared (a "loose variable") will retain the data type of the last value assigned to it.
  2. Scope of Loose Variables. All loose variables are local to the block in which they are declared (explicitly or implicitly), but see below.
  3. "super". The Java concept of super has been extended to be the name of the enclosing scope. super.varname can be used to refer to a variable at the next higher level. global.varname will refer to variables at the highest level.
  4. Default imports. By default, common Java core and extension packages are imported for you. They are:

Structure des Exits

Un exit MAINVIEW Data Server est un fichier BeanShell dans le répertoire "Exits" qui contient les quatre méthodes suivantes.

Declaration Usage
String id()
Retourne l'identification de cet exit qui paraîtra dans les écrans d'installation.
boolean begin()
Invoqué pour initialiser un cycle de rapportage. S'il retourne false, l'enregistrement est annulé.
boolean record()
Invoqué une fois pour chaque rang d'une vue. S'il retourne false, l'enregistrement est annulé.
boolean end()
Invoqué lorsque tous les rangs demandés ont étés passées à la méthode record().  S'il retourne false, l'enregistrement sera repris plus tard.

Informations Disponibles en Exit

Dans chaque exit du MAINVIEW Data Server, certains valeurs son définis auparavant dans le cadre global. Lesquels, dépend de la méthode étant invoqué.

Valeurs Communs

Ces valeurs sont les mêmes dans tous les exits:

Declaration Usage
java.util.logging.Logger log
Access au log de MAINVIEW Data Server.
java.util.Hashtable anchor
Une table ou ont peut déposer des objets afin de les passer d'un exit a un autre, ou d'une invocation à une autre. Tous les exits ont acces au même "anchor" et peuvent faire appel a  put(key,object) et get(key) pour se communiquer entre eux..

Valeurs Disponibles pendant l'Enregistrement

Ces valeurs sont disponibles pendant l'invocation des méthodes begin(), record(), et end().

Declaration Usage
String context
Le nom du contexte défini dans CASDEF
String system
Le nom du système ou tourne le produit
String server
Le nom du Product Address Space (PAS) du produit
String product
Le nom du produit MAINVIEW auquel appartient la vue
String view
Le nom de la vue étant contrôlée.
com.bmc.mainview.nvbapi.XML
  viewDef
La définition interne de la vue. On peut en tirer un String avec viewDef.toString()
java.util.Date time
La date et l'heure de la fin de l'intervalle d'échantillonnage.
int duration
La longueur de l'intervalle en minutes
java.util.Vector fields
Un Vector de Strings contenant les noms des champs demandés.

Valeurs présentées à la méthode record()

Ces valeurs sont utiliser pour présenter le contenu de chaque rang a être enregistré.

Declaration Usage
int row
Le numéro du rang commençant par 1
java.util.Vector values
Un Vector de String contenant les valeurs des champs nommés dans le Vector fields. S'il s'agit d'un champ numérique, tout suffixe «K» ou «M» aura déjà été remplacé par les nombre requis de zéros.
java.util.Vector types
Un Vector de String contenant le format de chaque champ. Cela pourait être un des suivants:
  • number
  • char
  • hex

Échantillon

Le code qui suit est un exit nul qui implémente les méthodes requises:

/*
  Sample recording exit for MAINVIEW Data Server

  This script is written for use with BeanShell, a Java interpreter.
  For documentation of Java see http://developer.java.sun.com/developer/infodocs/
  For documentation of BeanShell see: http://www.beanshell.org/docs.html

  Items available from the caller:
    Logger    log        The product log service
    Hashtable anchor     A common area for exits to store things
*/

// Identify this exit 
String id() 
{
  return "Dummy test exit";
}

/* Begin recording data from one interval
   Items available for "begin", "record", and "end"
     String context   The MAINVIEW Context (see CASDEF)
     String system    The system where the product is running
     String server    The product address space (PAS)
     String product   The product that owns the view
     String view      The view that provides the fields
     Date   time      The ending time of this interval
     Vector fields    The names of the fields being recorded

Note: All of the calls for a single interval will use the same data space.
   
*/
boolean begin()
{
   log.info("Sample server entered to record view "+product+"."+view);
   return true; // Signal success
}

// Finish recording data from one interval
boolean end()
{
   return true;
}

/* Receive the data from one row of the view
   Items available for each call
     int    row      The row number starting with 1
     Vector values   The data values. Same size() as fields
     Vector types    The data types: char, number, hex, date, or time
*/
boolean record()
{
   return true;
}