Génération des flux métier

Généralités

Introduction

Ce document vous décrit la mise en place de la génération des flux métiers au niveau de la couche de présentation (Configuration/feuilles de style). Cette possibilité est induite par une amélioration au niveau du socle technique et par le développement de classe Java métier.

L’exploitation de la génération du BusinessFlow nécessite d’être en version ACE 1.3 ou supérieure. La prise en compte étant effectuée en premier lieu au niveau du socle, la librairie impactée est « technical_framework.jar ».

Principes

Le principe est de pouvoir compléter le flux de présentation, construit à partir de deux sources distinctes :

  • les ViewObject, en mode CRUD,
  • Les DocumentRow, en mode API et bientôt en PL/SQL.

Le métier a aussi la possibilité de générer son propre flux de présentation. Ce flux est positionné au même niveau que la BusinessView, directement sous le nœud <layout_data>.

Cette possibilité a des impacts sur quatre niveaux :

1. Les classes métier Java d’un type particulier, présentes dans fr.generix.metier.businessflow. Ces classes fournissent des segments de flux XML.

2. La configuration, afin de faire le lien entre les classes Java métier et le moteur (socle),

3. Les feuilles de styles, afin de prendre en compte ce type de flux,

4. Le socle qui, en interne, fait le lien entre les différents éléments.

Fonctionnement

Classes métiers

Le but de ces classes est de fournir un segment de flux XML pour compléter la BusinessView.

Ces classes Java métiers sont typées selon le flux XML demandé. Actuellement, deux classes sont disponibles pour répondre à un besoin immédiat. Cette liste sera amenée à s’étoffer selon les besoins. Rien n’empêche le client d’écrire ses propres classes pour répondre à un besoin particulier.

Représentation des classes métiers.

Les classes métiers profitent des éléments fournis par le socle dans une classe commune : AbstractBusinessFlow. Cela permet aux classes métier d’accéder à des éléments fonctionnels comme le paramétrage.

Illustration des classes de type BusinessFlow.

ParamBusinessFlowImpl : fournit le contenu du paramètre demandé de la table PARAM .

PevBusinessFlowImpl : fournit le contenu de la table PEV pour la cible en cours .

Fichier de configuration

Le fichier de configuration permet :

  • de définir un ensemble de fournisseur de flux métier, appelé « BusinessFlow »
  • d’affecter ces Businessflow sur deux niveaux :
    • au niveau général : valable pour toutes les ViewStruct,
    • Au niveau de chaque ViewStruct.
Déclaration des BusinessFlow

La structure de la déclaration d’un type de BusinessFlow est la suivante :

  • name : nom du type de flux métier.
  • solverName : classe métier attachée. Cette classe permet la génération du flux métier. Nom logique. Fait référence à un Solver parmi les solver_def de type flow.

La définition d’un BusinessFlow est la suivante :

  • Name : le nom du BusinessFlow dans la BusinessView. Donne le nom du nœud de base dans le flux XML.
  • Type : nom logique vers le type de BusinessFlow
  • Expression : une expression logique qui permet de conditionner le flux. Cette expression est passée au solver attaché au BusinessFlowType.
  • Active : permet de désactiver la génération du flux métier.

A ceci s’ajoute des paramètres optionnels en nombre non limité :

  • parameter :name : le nom du paramètre, optionnel.
  • parameter :value : la valeur du paramètre.

Exemple de paramétrage

On retrouve le lien avec les deux classes Java et la déclaration des types de BusinessFlow :

              < solver_def >
               < solver_type name =" GENPEV " solverClass =" fr.generix.metier.businessflow.PevBusinessFlowImpl " type =" flow "/>
               < solver_type name =" GENPPE " solverClass =" fr.generix.metier.businessflow.ParamBusinessFlowImpl " type =" flow "/>
              </ solver_def >
               
              < businessflow_def >
               < businessflow_type name =" M_QTE " solverName =" GENPPE "/>
               < businessflow_type name =" TYPFOU " solverName =" GENPPE "/>
               < businessflow_type name =" GENPEV " solverName =" GENPEV "/>
               < businessflow_type name =" GENPPE " solverName =" GENPPE "/>
              </ businessflow_def >
            
Affectation au niveau général

La déclaration des BusinessFlow se fait sous le nœud properties. Un nouveau nœud <default_businessflow> permet de définir la liste des BusinessFlow valables pour l’ensemble des ViewStruct.

Exemple de paramétrage :

              <properties …>
              
               < default_businessflow >
                 < businessflow name =" BusinessFlowGeneral1 " active =" true " expression =" TYPFOU " type =" GENPPE ">
                 < parameter value =" PRO " name =" typpro "/>
                 < parameter value =" TEST "/>
               </ businessflow >
                 < businessflow name =" BusinessFlowGeneral2 " active =" false " expression =" P_QTE " type =" GENPPE "/>
               </default_businessflow >
              </ properties >
            
Affectation au niveau ViewStruct

La déclaration des BusinessFlow se fait sous le nœud ViewStruct. Un nouveau nœud <businessflow> permet de définir la liste des BusinessFlow valables pour cette ViewStruct.

Exemple de paramétrage

              < viewstruct name =" EDI_L " defaultRetrieve =" MOI " defaultSort =" DEF ">
               +< view name =" UtilisateurCourant " create =" false " executeQuery =" optimize " nbline =" 1 " type =" VueUtilisateurCourantSociete "/>
               < businessflow name =" businessFlowLocal1 " active =" true " expression ="M_QTE" type =" GENPPE "/>
               < businessflow name =" businessFlowLocal2 " active =" true " expression ="TYPFOU" type =" GENPPE "/>
              </ viewstruct >
            

Feuilles de style

La feuille de style interprète les données fournies par le flux de présentation.

Exemple de flux de présentation en fonction du paramétrage précédent :

              < layout_data >
              +< application_data >
              < businessFlow >
               < businessFlowGeneral1 >
               < parametre name =" M_QTE ">
               < Codsoc1 value =" 1 "/>
              ...
               < CodsocPhy value =" 1 "/>
               </ parametre >
               </ businessFlowGeneral1 >
               < businessFlowGeneral2 >
               < parametre name =" TYPFOU ">
               < Codsoc1 value =" 1 "/>
              
               < CodsocPhy value =" 1 "/>
               </ parametre >
               </ businessFlowGeneral2 >
               < businessFlowLocal1 >
               < parametre name =" M_QTE ">
               < Codsoc1 value =" 1 "/>
              ...
               < CodsocPhy value =" 1 "/>
               </ parametre >
               </ businessFlowLocal1 >
               < businessFlowLocal2 >
               < parametre name =" TYPFOU ">
               < Codsoc1 value =" 1 "/>
              
               < CodsocPhy value =" 1 "/>
               </ parametre >
               </ businessFlowLocal2 >
               </ businessFlow>