Blog

Bienvenue...

...sur mon blog, j'utilise ce site pour noter les petites choses qui me sont utiles, que ça soit informatique ou autre :)

Il y a 14 années 8 mois

Démarrer le command server MQ !

En v5 : strmqcsv

En v6 : strmqmcsvr

En v7 : strmqcsv

Il y a 14 années 11 mois

1. Déclarer la file d'initialisation du trigger :

DEFINE QLOCAL('QL.TRIGGER_MSGS') +
	DESCR('File d''initialisation du trigger') +
	GET(ENABLED) +
	NOSHARE +
	NOTRIGGER +
	REPLACE;

2. Déclarer le process que le trigger monitor lancera lors du déclenchement :

DEFINE PROCESS ('MY_PROCESS') +
	DESCR('Ma description du process') +
	APPLTYPE(UNIX) +
	APPLICID('/var/oa3/mercure/lance4ge.sh') +
	USERDATA('Paramètres a passer au programme en plus de ceux par défaut') +
	REPLACE;

3. Déclarer une file locale en activant le triggering, et en spécifiant les paramètres ci dessus :

DEFINE QLOCAL('QL.IN') +
	TRIGGER +
	TRIGTYPE(EVERY) +
	INITQ('QL.TRIGGER_MSGS') +
	PROCESS('MY_PROCESS') +
REPLACE;

4. Lancer un trigger monitor, qui effectuera l'action du lancement de programme sur déclenchement du trigger :

nohup start runmqtrm -m <qm.name> -q QL.TRIGGER_MSGS &
Il y a 14 années 11 mois

Bon je pensais que j'étais bon pour l'install de la lib. En fait pour faire le dev. il me manque la librairie XSLT-devel (présente dans le package libxslt-devel-1.1.24-1.aix5.1.ppc.rpm).

Du coup install :

<br />
XMASTER:/var/oa3/rpm>rpm -Uvh libxslt-devel-1.1.24-1.aix5.1.ppc.rpm<br />
error: failed dependencies:<br />
        libxml2-devel >= 2.6.27 is needed by libxslt-devel-1.1.24-1<br />
        libgcrypt-devel is needed by libxslt-devel-1.1.24-1<br />
        pkg-config is needed by libxslt-devel-1.1.24-1<br />
XMASTER:/var/oa3/rpm><br />

...ok donc du coup :

<br />
XMASTER:/var/oa3/rpm>rpm -Uvh libgcrypt-devel-1.4.3-1.aix5.1.ppc.rpm<br />
error: failed dependencies:<br />
        info is needed by libgcrypt-devel-1.4.3-1<br />
        libgpg-error-devel is needed by libgcrypt-devel-1.4.3-1<br />
XMASTER:/var/oa3/rpm><br />

...bon...

<br />
XMASTER:/var/oa3/rpm>rpm -Uvh libgcrypt-devel-1.4.3-1.aix5.1.ppc.rpm<br />
error: failed dependencies:<br />
        info is needed by libgcrypt-devel-1.4.3-1<br />
        libgpg-error-devel is needed by libgcrypt-devel-1.4.3-1<br />
XMASTER:/var/oa3/rpm><br />

... bref n'arrivant pas a installer la librairie de dev. (en gros ça bloque sur une dépendance /usr/bin/python même si j'installe le-dit package) j'ai téléchargé les sources et mis le répertoire contenant les .h dans mes directives de compilation (-I) :)

Il y a 14 années 11 mois

Pour connaître la liste des packages installés sous AIX, il faut taper lslpp -aL | pg ou avec un grep si vous recherchez un package particulier...

Il y a 14 années 12 mois

Donc, suite au plantage et à l'impossibilité de faire fonctionner le 4GL à partir de Java, j'ai changé mon fusil d'épaule...

Soyons fous ! et si on faisait tout dans le 4GL ?

  1. Lecture du message entrant
  2. Parsing XML des données
  3. Insertion en base
  4. Traitement métier
  5. Création du message XML de réponse
  6. Ecriture de ce dernier dans la bonne file

Bon là se profile à l'horizon une autre difficulté : ma méconnaissance du langage C... méconnaissance parce que c'est super loin tout ça, et en plus j'ai jamais bien compris le concept des pointeurs...... ;)=

Bref, je me suis donc lancé, j'ai donc développé un programme 4GL qui fait appel à des fonctions C d'envoi/réception de messages au travers d'MQ, ainsi que des fonctions de parsing/transformation XML (d'où les quelques billets sur l'installation notamment des librairies libxml2 et libxslt sous AIX...).

Donc, petite explication sur l'utilisation de fonction C en 4GL :

  1. Comment ça marche (le principe) :
    L'idée est de créer une fonction ayant une signature de la forme

    int <nom méthode>(int nargs);

    La fonction doit donc retourner un int qui correspond au nombre de paramètres retournés (ne me demandez pas pourquoi, c'est le fonctionnement du 4GL :P ). C'est là où il faut être attentif, a savoir qu'on va utiliser des fonctions du type

    ibm_lib4gl_returnInt4(mqStatus);

    ou

    ibm_lib4gl_returnString(mqErrmsg);

    Pour retourner les valeurs souhaitées, (la fonction à utiliser depend bien sûr du type de valeur retournée, cf. la doc du langage 4GL pour la liste exhaustive)

  2. Le passage de parmètres et la gestion de l'instruction return

A TERMINER

Pages