L'application de workflow EXECSQL vous permet d'exécuter une ou plusieurs requêtes SQL dans un processus.
Elle vous permet de récupérer des informations au travers de requêtes SELECT
par exemple, afin de pouvoir utiliser le résultat dans des conditions du processus.
L'application EXECSQL requiert les paramètres CONNECTION_NAME
(qui correspond au nom de la connexion) et QUERY
(qui correspond à la requête à exécuter).
Il est possible de spécifier une ou plusieurs commandes par action EXECSQL. Pour ceci, les paramètres doivent être préfixés par CMDx_
, où x
correspond au numéro de la commande (p.ex. : CMD1_
).
Les types de requête supportés sont SELECT
, INSERT
, UPDATE
, DELETE
, SCALAR
et PROCEDURE
.
L'application supporte la gestion des transactions SQL.
Il est possible d'utiliser une connexion globale pour plusieurs commandes. Pour ceci, il ne faut pas préfixer le paramètre CONNECTION_NAME
par CMDx_
. Il n'est pas possible d'utiliser une connexion globale et une connexion locale (p.ex. : CONNECTION_NAME
et CMD2_CONNECTION_NAME
).
Il est possible d'utiliser une transaction globale pour plusieurs commandes. Pour ceci, il ne faut pas préfixer le paramètre TRANSACTION
par CMDx_
. Il n'est pas possible d'utiliser une transaction globale et une transaction locale (ex: TRANSACTION
et CMD2_TRANSACTION
). Il est nécessaire de définir une connexion globale pour pouvoir définir une transaction globale.
Des logs d'application sont disponibles. Ceux-ci peuvent être spécifiés en définissant la valeur du paramètre ExecSqlLogLevel
dans le fichier web.config
sur 0
pour désactiver la journalisation, 1
pour les logs d'erreur, 2
pour des logs d'informations ou 3
pour les logs de débogage; la valeur par défaut est 0
.
Si vous souhaitez alimenter un tableau à l'aide du paramètre FORM_DATA_GRIDVIEW
, il est nécessaire que le contenu du FORM_DATA
contiennent au moins le schéma XML.
Si la première action du processus est une action EXECSQL, vous devez mettre une valeur par défaut dans le FORM_DATA
, avec la définition du schéma.
Il est possible de définir pour chaque requête des paramètres à utiliser lors de l'exécution. Les paramètres peuvent être définis de deux façons, soit en utilisant le préfixe QUERY_PARAM
, soit en utilisant un arobase (@
).
Vous pouvez utiliser QUERY_PARAM_MyParam
ou @MyParam
, où MyParam
correspond au nom du paramètre défini dans la requête.
SELECT
SCALAR
SELECT
Dans le cas où EXECSQL est la première action du processus, vous devez définir une valeur par défaut pour la donnée FORM_DATA
contenant le schéma du tableau comme dans l'exemple ci-dessous :
INSERT
Voici une autre possibilité pour les paramètres de requête :
UPDATE
DELETE
Le type de requête PROCEDURE
ne permet pas de retourner de valeur. Si vous souhaitez retourner une valeur, il faut utiliser le type SELECT
.
SCALAR
Paramètre
Type
Direction
Description
CONNECTION_NAME
TEXT
IN
Nom de la connexion à utiliser
Le nom de la connexion doit être défini dans le fichier web.config
de WorkflowGen.
QUERY
TEXT
IN
Requête à exécuter
Paramètre
Type
Direction
Description
TYPE
TEXT
IN
Type de la requête à exécuter
Les types supportés sont :
SELECT
(par défaut)
INSERT
UPDATE
DELETE
SCALAR
PROCEDURE
TRANSACTION
TEXT
IN
Lorsque défini sur Y
, l'application déclenche une transaction SQL avant l'exécution de la requête et effectuera un commit ou rollback en fonction du résultat
Par défaut : N
ON_ERROR
TEXT
IN
Lorsque défini sur CATCH
, l'application ne retournera pas d'erreur à WorkflowGen. Ceci permettra de stocker un message d'erreur dans le paramètre ERROR_MESSAGE
et de continuer l'exécution.
Par défaut : THROW
TIMEOUT
NUMERIC
IN
Indique le nombre de secondes à définir dans le temps d'exécution de la commande
Par défaut : 30
FORM_DATA
FILE
INOUT
Fichier FORM_DATA
contenant la définition XML du processus
FORM_DATA_GRIDVIEW
TEXT
IN
Identifiant du tableau à alimenter dans le FORM_DATA
RESULT_CSV_SEPARATOR
TEXT
IN
Séparateur utilisé dans la valeur ou fichier CSV de retour
Par défaut : ,
(virgule)
Paramètre
Type
Direction
Description
QUERY
TEXT
IN
SELECT * FROM USERS WHERE LASTNAME = @UserLastname
QUERY_PARAM_UserLastName
/ @UserLastName
TEXT
IN
Doe
Paramètre
Type
Direction
Description
ERROR_MESSAGE
TEXT
OUT
Contient le message d'erreur dans le cas où la valeur du paramètre contient CATCH
et qu'une exception est levée lors de l'exécution
RESULT_COMMIT
TEXT
OUT
Indique si un commit
a été exécuté sur la transaction
Valeurs possibles : Y
ou N
Paramètre
Type
Direction
Description
RESULT_ROWx_fieldName
TEXT
NUMERIC
DATETIME
OUT
Contient la valeur de la colonne fieldName
pour la ligne x
Vous devez remplacer fieldname
par votre nom de colonne (p.ex. : LASTNAME
) et x
par le numéro de la ligne (p.ex. : 2
).
RESULT_ROW_fieldName
TEXT
NUMERIC
DATETIME
OUT
Contient la valeur de la colonne fieldName
pour la première ligne retournée
RESULT_JSON
TEXT
OUT
Contient le résultat de la requête au format JSON
RESULT_JSON_FILE
FILE
OUT
Contient le résultat de la requête au format JSON
stocké dans un fichier .json
RESULT_XML
TEXT
OUT
Contient le résultat de la requête au format XML
RESULT_XML_FILE
FILE
OUT
Contient le résultat de la requête au format XML
stocké dans un fichier .xml
RESULT_CSV
TEXT
OUT
Contient le résultat de la requête au format CSV
Les données sont séparées suivant le séparateur défini dans le paramètre RESULT_CSV_SEPARATOR
RESULT_CSV_FILE
FILE
OUT
Contient le résultat de la requête au format CSV
stocké dans un fichier .csv
Les données sont séparées suivant le séparateur défini dans le paramètre RESULT_CSV_SEPARATOR
Paramètre
Type
Direction
Description
RESULT
NUMERIC
OUT
Contient le résultat numérique d'une requête de type SCALAR
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
QUERY
TEXT
IN
SELECT LASTNAME, FIRSTNAME, USERNAME FROM USERS
RESULT_JSON
TEXT
OUT
{ "TABLE":[ { "LASTNAME":"Administrator", "FIRSTNAME":"WorkflowGen", "USERNAME":"wfgen_admin" }, { "LASTNAME":"Doe", "FIRSTNAME":"John", "USERNAME":"john.doe" } ] }
RESULT_JSON_FILE
FILE
OUT
result.json
RESULT_CSV
TEXT
OUT
"LASTNAME","FIRSTNAME","USERNAME" "Administrator","WorkflowGen","wfgen_admin"
"Doe","John","john.doe"
RESULT_CSV_FILE
FILE
OUT
result.csv
RESULT_ROW_LASTNAME
TEXT
OUT
Administrator
RESULT_ROW1_FIRSTNAME
TEXT
OUT
WorkflowGen
RESULT_ROW2_USERNAME
TEXT
OUT
john.doe
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
QUERY
TEXT
IN
SELECT LASTNAME as REQUEST_GRID_LASTNAME, FIRSTNAME as REQUEST_GRID_FIRSTNAME, USERNAME as REQUEST_GRID_USERNAME FROM USERS
FORM_DATA
FILE
INOUT
FORM_DATA
FORM_DATA_GRIDVIEW
TEXT
IN
REQUEST_GRID
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
TYPE
TEXT
IN
INSERT
QUERY
TEXT
IN
INSERT INTO WFCATEGORY (ID_CATEGORY,NAME,DESCRIPTION) VALUES (@IdCategory, @Name, @Description)
QUERY_PARAM_IdCategory
NUMERIC
IN
1
QUERY_PARAM_Name
TEXT
IN
NomCategorie
QUERY_PARAM_Description
TEXT
IN
Description de la catégorie
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
TYPE
TEXT
IN
INSERT
QUERY
TEXT
IN
INSERT INTO WFCATEGORY (ID_CATEGORY,NAME,DESCRIPTION) VALUES (@IdCategory, @Name, @Description)
@IdCategory
NUMERIC
IN
1
@Name
TEXT
IN
NomCategorie
@Description
TEXT
IN
Description de la catégorie
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
TYPE
TEXT
IN
UPDATE
QUERY
TEXT
IN
UPDATE WFCATEGORY SET NAME = @Name WHERE ID_CATEGORY = @IdCategory
QUERY_PARAM_IdCategory
NUMERIC
IN
1
QUERY_PARAM_Name
TEXT
IN
NouveauNomCategorie
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
TYPE
TEXT
IN
DELETE
QUERY
TEXT
IN
DELETE FROM WFCATEGORY WHERE ID_CATEGORY = @IdCategory
QUERY_PARAM_IdCategory
NUMERIC
IN
1
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
TYPE
TEXT
IN
PROCEDURE
QUERY
TEXT
IN
INSERT_CATEGORY
QUERY_PARAM_ID_CATEGORY
NUMERIC
IN
1
QUERY_PARAM_NAME
TEXT
IN
NomCategorie
QUERY_PARAM_DESCRIPTION
TEXT
IN
Description de la catégorie
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
TYPE
TEXT
IN
SELECT
QUERY
TEXT
IN
EXEC GET_USER @USERNAME = @User
QUERY_PARAM_User
NUMERIC
IN
wfgen_admin
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
TYPE
TEXT
IN
SCALAR
QUERY
TEXT
IN
SELECT COUNT(*) FROM USERS
RESULT
NUMERIC
OUT
2
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
CMD1_TYPE
TEXT
IN
INSERT
CMD1_QUERY
TEXT
IN
INSERT INTO WFCATEGORY (ID_CATEGORY,NAME,DESCRIPTION) VALUES (@IdCategory, @Name, @Description)
CMD1_QUERY_PARAM_IdCategory
NUMERIC
IN
1
CMD1_QUERY_PARAM_Name
TEXT
IN
NomCategorie
CMD1_QUERY_PARAM_Description
TEXT
IN
Description de la catégorie
CMD2_QUERY
TEXT
IN
SELECT NAME FROM WFCATEGORY WHERE ID_CATEGORY = @IdCategory
CMD2_@IdCategory
NUMERIC
IN
1
CMD2_RESULT_ROW_NAME
TEXT
OUT
NomCategorie
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
CMD1_TYPE
TEXT
IN
INSERT
CMD1_QUERY
TEXT
IN
INSERT INTO WFCATEGORY (ID_CATEGORY,NAME,DESCRIPTION) VALUES (1, "Nom", "Description")
CMD1_TRANSACTION
TEXT
IN
Y
CMD1_ON_ERROR
TEXT
IN
CATCH
CMD1_COMMIT
TEXT
OUT
Y
CMD1_ERROR_MESSAGE
TEXT
OUT
NULL
CMD2_TYPE
TEXT
IN
INSERT
CMD2_QUERY
TEXT
IN
INSERT INTO WFCATEGORY (ID_CATEGORY,NAME,DESCRIPTION) VALUES (1, "AutreNom", "Autre description")
CMD2_TRANSACTION
TEXT
IN
Y
CMD2_ON_ERROR
TEXT
IN
CATCH
CMD2_COMMIT
TEXT
OUT
N
CMD2_ERROR_MESSAGE
TEXT
OUT
Cannot insert duplicate key in object 'dbo.WFCATEGORY'. The duplicate key value is (1).