Migración de rutinas BASIC en DataStage
Los trabajos de servidor en DataStage® tradicional pueden contener rutinas BASIC, que no son compatibles con DataStage moderno.
Al migrar un trabajo de servidor en DataStage tradicional a un flujo de canalización en Cloud Pak for Data, puede reescribir la rutina como una secuencia de comandos y añadirla como un nodo Ejecutar secuencia de comandos Bash o Ejecutar secuencia de comandos Python en su flujo de canalización. Para más información, consulte Sustitución de rutinas BASIC en DataStage.
Cuando se migra un trabajo de servidor, los nodos de rutina se migran a nodos de script Run Bash. Las rutinas se almacenan como scripts .sh en el PVC montado bajo /mnts/ds-storage/projects/<your-project-name>/scripts/. Si no es administrador, cree una conexión de volumen de almacenamiento para acceder al directorio ds-storage. Para ejecutar las rutinas migradas, reescriba los scripts de ese directorio en código Bash o Python. Cada nodo que haga referencia a una rutina concreta ejecutará el script del mismo nombre.
Obtener argumentos y establecer valores de retorno
<routine_name>_<argument_name>
. Para establecer los valores de retorno de un script BASIC reescrito, escriba una sentencia echo al final de su script para imprimir una cadena JSON en la salida estándar. Llama ds.CommandOutput(tasks.<id>)
para obtener la cadena JSON y pásala a ds.GetOutputArg()
como argumento junto con el valor que quieres recuperar. Consulte el siguiente script de ejemplo:#!/bin/bash
IBMCP4DCallFunction() {
# Define the function with 2 arguments
# Increment the values of each argument by 1
Age=$1
Name=$2
Ans=0
echo "{\"Age\":$Age, \"Name\":\"$Name\", \"Ans\":$Ans}"
return $Ans
}
IBMCP4DCallFunction "$IBMCP4DCallFunction_Age" "$IBMCP4DCallFunction_Name"
En este ejemplo, el nodo de la tubería se llama RoutineAct1
y tiene un id interno de routine1
. Los valores de los argumentos de entrada Name
y Age
se almacenan en las variables de entorno IBMCP4DCallFunction_Age
y IBMCP4DCallFunction_Name
. Para obtener el valor del argumento de salida Age
en las condiciones o expresiones de activación de actividad que siguen a la rutina, utilice la llamada a función ds.GetOutPutArg(ds.getCommandOutput(tasks.routine1), 'Age')
. Aquí la ds.getCommandOutput
llamada devuelve la cadena JSON y ds.GetOutPutArg('{"Age":30, "Name":"new name", "Ans":0}', 'Age')
devuelve el valor 30. Del mismo modo, para recuperar el valor de Ans
, se utilizaría ds.GetOutPutArg(ds.getCommandOutput(tasks.routine1), 'Ans')
.