This topic applies only to the IBM Business Process Manager Advanced configuration.

Ejemplo de un script Ant

Un script Ant se utiliza para realizar varias tareas, tales como crear y desplegar los proyectos de prueba de componentes.

El fragmento de código siguiente muestra el contenido de un scrips Ant de ejemplo:

<!-- Script de prueba de componente de ejemplo para su uso con IBM Business Process Manager -->

<project name="Automated Test Case Run" basedir="." default="run">

    <!-- Módulos, bibliotecas y proyectos de prueba que se prueban -->
    <property name="module1" value="HelloWorldMediation" />
    <property name="module2" value="HelloService" />
    <property name="library1" value="HelloWorldLibrary" />
    <property name="testproject1" value="HelloWorldTest" />

    <!-- Propiedades de servidor -->
    <property name="wps.home" value="C:/WID75_WTE/runtimes/bi_v75" />
    <property name="wps.username" value="admin" />
    <!-- La contraseña del servidor debe expresarse en texto sin formato. Para evitar almacenar la -->
    <!-- contraseña del servidor en un script, puede almacenarse en -->
    <!-- el archivo soap.client.props. Consulte la opción de contraseña -->
    <!-- de la información de consulta del mandato wsadmin: -->
    <!-- http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.nd.multiplatform.doc/info/ae/ae/rxml_commandline.html -->
    <property name="wps.password" value="admin" />
    <property name="wps.node" value="qnode" />
    <property name="wps.server" value="server1" />

    <!-- Propiedades del repositorio de código fuente -->
    <!-- En este ejemplo se utiliza CVS. -->
    <property name="cvs.username" value="cvsuser" />
    <property name="cvs.password" value="cvspassword" />
    <property name="cvs.root" value=":pserver:${cvs.username}:${cvs.password}@cvs:/cvs/repository" />
    <property name="cvs.packageroot" value="testProjects" />
    <property name="cvs.stream" value="HEAD" />

    <!-- Crear y probar propiedades -->
    <property name="test.servlet.url" value="http://localhost:9080/HelloWorldTestWeb/TestServlet?username=${wps.username}&password=${wps.password.encoded}" />
    <property name="test.output.file" value="${build.output.dir}/TestOutput.xml" />
    <property name="build.output.dir" value="C:/BuildOutputDir" />
    <property name="build.working.dir" value="C:/BuildWorkingDir" />
    <!-- La ubicación del espacio de trabajo puede existir previamente o puede ser el -->
    <!-- destino de un extracto de repositorio de código fuente -->
    <property name="workspace.dir" value="D:\Workspaces\20100625cvs2/" />
    <!-- Contraseña del servidor para el url de servlet de prueba. Puede ser texto sin formato o -->
    <!-- estar codificada. Para la codificación de contraseñas, consulte -->
    <!-- http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/rsec_propfilepwdencoder.html -->
    <property name="wps.password.encoded" value="{xor}PjsyNjE=" />

    <!-- Definiciones de tareas Ant -->
    <taskdef name="wsStartApplication"
             classname="com.ibm.websphere.ant.tasks.StartApplication" />
    <taskdef name="wsStartServer"
             classname="com.ibm.websphere.ant.tasks.StartServer" />
    <taskdef name="wsStopServer"
             classname="com.ibm.websphere.ant.tasks.StopServer" />
    <taskdef name="wsInstallApp"
             classname="com.ibm.websphere.ant.tasks.InstallApplication" />
    <taskdef name="servicedeploy"
             classname="com.ibm.websphere.ant.tasks.ServiceDeployTask" />
    <taskdef name="wsUninstallApp"
             classname="com.ibm.websphere.ant.tasks.UninstallApplication" />


    <target name="checkout">
        <cvs command="export -r ${cvs.stream} -d ${module1}"
             package="${cvs.packageroot}/${module1}"
             dest="${workspace.dir}"
             cvsroot="${cvs.root}"
             cvsrsh="ssh"
             output="${build.output.dir}/${module1}.extract.log"
             quiet="true" />
        <cvs command="export -r ${cvs.stream} -d ${module2}"
             package="${cvs.packageroot}/${module2}"
             dest="${workspace.dir}"
             cvsroot="${cvs.root}"
             cvsrsh="ssh"
             output="${build.output.dir}/${module2}.extract.log"
             quiet="true" />
        <cvs command="export -r ${cvs.stream} -d ${library1}"
             package="${cvs.packageroot}/${library1}"
             dest="${workspace.dir}"
             cvsroot="${cvs.root}"
             cvsrsh="ssh"
             output="${build.output.dir}/${library1}.extract.log"
             quiet="true" />
        <cvs command="export -r ${cvs.stream} -d ${testproject1}"
             package="${cvs.packageroot}/${testproject1}"
             dest="${workspace.dir}"
             cvsroot="${cvs.root}"
             cvsrsh="ssh"
             output="${build.output.dir}/${testproject1}.extract.log"
             quiet="true" />
    </target>

    <target name="createPI">
        <!-- Este destino de ejemplo es aplicable al utilizar CVS como repositorio -->
        <!-- de código fuente. La exclusión de **/CVS/** significa que no se incluyen -->
        <!-- metadatos CVS en el PI. Si utiliza otro repositorio de código fuente, -->
        <!-- cambie o elimine el atributo exclude. -->
        <zip basedir="${workspace.dir}"
             destfile="${build.output.dir}/${module1}.zip"
             includes="${module1}/**/**/*, ${library1}/**/**/*"
             excludes="**/CVS/**" />
        <zip basedir="${workspace.dir}"
             destfile="${build.output.dir}/${module2}.zip"
             includes="${module2}/**/**/*, ${library1}/**/**/*"
             excludes="**/CVS/**" />
        <zip basedir="${workspace.dir}"
             destfile="${build.output.dir}/${testproject1}.zip"
             includes="${testproject1}/**/**/*"
             excludes="**/CVS/**" />
    </target>

    <target name="generateEAR" depends="createPI">
        <!-- El enlace que figura a continuación suministra una descripción detallada de la -->
        <!-- tarea serviceDeploy: -->
        <!-- http://publib.boulder.ibm.com/infocenter/dmndhelp/v7r0mx/index.jsp?topic=/com.ibm.websphere.wps.doc/doc/tdep_usingant.html -->
        <servicedeploy scaModule="${build.output.dir}/${module1}.zip"
                       workingDirectory="${build.working.dir}"
                       outputApplication="${build.output.dir}/${module1}.ear"
                       wasHome="${wps.home}"
                       cleanStagingModules="true"
                       keep="true" />
        <servicedeploy scaModule="${build.output.dir}/${module2}.zip"
                       workingDirectory="${build.working.dir}"
                       outputApplication="${build.output.dir}/${module2}.ear"
                       wasHome="${wps.home}"
                       cleanStagingModules="true"
                       keep="true" />
        <servicedeploy scaModule="${build.output.dir}/${testproject1}.zip"
                       workingDirectory="${build.working.dir}"
                       outputApplication="${build.output.dir}/${testproject1}.ear"
                       wasHome="${wps.home}"
                       cleanStagingModules="true"
                       keep="true"
                       ignoreErrors="true" />
    </target>

    <target name="startServer">
        <wsStartServer server="${wps.server}"
                       logFile="${build.output.dir}/start.log"
                       trace="false"
                       failonerror="false" />
    </target>

    <target name="stopServer">
        <wsStopServer server="${wps.server}"
                      logFile="${build.output.dir}/stop.log"
                      trace="false"
                      username="${wps.username}"
                      password="${wps.password}"
                      failonerror="false" />
    </target>

    <target name="deploy" depends="generateEAR">
        <!-- Instalar las aplicaciones en el servidor -->
        <wsInstallApp ear="${build.output.dir}/${module1}.ear"
                      user="${wps.username}"
                      password="${wps.password}"
                      failonerror="false" />
        <wsInstallApp ear="${build.output.dir}/${module2}.ear"
                      user="${wps.username}"
                      password="${wps.password}"
                      failonerror="false" />
        <wsInstallApp ear="${build.output.dir}/${testproject1}.ear"
                      user="${wps.username}"
                      password="${wps.password}"
                      failonerror="false" />
        <!-- Después de instalar las aplicaciones, deben iniciarse explícitamente -->
        <wsStartApplication application="${module1}App"
                            server="server1"
                            node="${wps.node}"
                            user="${wps.username}"
                            password="${wps.password}" />
        <wsStartApplication application="${module2}App"
                            server="server1"
                            node="${wps.node}"
                            user="${wps.username}"
                            password="${wps.password}" />
        <wsStartApplication application="${testproject1}App"
                            server="server1"
                            node="${wps.node}"
                            user="${wps.username}"
                            password="${wps.password}" />
    </target>

    <target name="undeploy">
        <wsUninstallApp application="${module1}App"
                        user="${wps.username}"
                        password="${wps.password}"
                        failonerror="false" />
        <wsUninstallApp application="${module2}App"
                        user="${wps.username}"
                        password="${wps.password}"
                        failonerror="false" />
        <wsUninstallApp application="${testproject1}App"
                        user="${wps.username}"
                        password="${wps.password}"
                        failonerror="false" />
    </target>

    <target name="runTest">
        <!-- Ejecutar la prueba utilizando el servlet de proyecto de prueba -->
        <get src="${test.servlet.url}" dest="${test.output.file}" />
    </target>

    <target name="run"
            depends="checkout, startServer, deploy, runTest, undeploy, stopServer">
        <!-- Visualizar los resultados de la ejecución -->
        <loadfile srcFile="${test.output.file}"
                  property="testoutput" />
        <echo message="${testoutput}" />
    </target>

</project>