<?xml version="1.0" encoding="UTF-8"?>
<process xmlns:blue="http://www.e-marson.com/bluelemon">

  <descriptor>
    <name>com/emarson/lemonade/examples/mobank/_deployment/PackagePIN</name>
    <version>1.0</version>
    <description>
      It generates a package containing the following nodes:
       - com/emarson/lemonade/examples/mobank/pin/Screen
       - com/emarson/lemonade/examples/mobank/pin/RemovePackageScreen
       - com/emarson/lemonade/examples/mobank/pin/RemovePackage
       - com/emarson/lemonade/examples/mobank/pin/SpecifyPinScreen
       - com/emarson/lemonade/examples/mobank/pin/VerifyPinSaveAndRemove
       - com/emarson/lemonade/examples/mobank/pin/NewStartupInstruction
    </description>
    <vendor>E-MARSON</vendor>
  </descriptor>

  <path>
  
    <!-- CONTENT OF THE PACKAGE --->
    
    <subprocess name="startup screen">
      <source>com/emarson/lemonade/examples/mobank/pin/Screen</source>
      <resultTo>screen</resultTo>
    </subprocess>

    <subprocess name="remove package">
      <source>com/emarson/lemonade/examples/mobank/pin/RemovePackageScreen</source>
      <resultTo>removePackageScreen</resultTo>
    </subprocess>

    <subprocess name="remove package action">
      <source>com/emarson/lemonade/examples/mobank/pin/RemovePackage</source>
      <resultTo>removePackage</resultTo>
    </subprocess>
    
    <subprocess name="screen to specify a PIN">
      <source>com/emarson/lemonade/examples/mobank/pin/SpecifyPinScreen</source>
      <resultTo>specifyPinScreen</resultTo>
    </subprocess>
    
    <subprocess name="action to verify PIN numbers and save them">
      <source>com/emarson/lemonade/examples/mobank/pin/VerifyPinSaveAndRemove</source>
      <resultTo>verifyPinSaveAndRemove</resultTo>
    </subprocess>
    
    <subprocess name="new startup instruction">
      <source>com/emarson/lemonade/examples/mobank/pin/NewStartupInstruction</source>
      <resultTo>newStartupInstruction</resultTo>
    </subprocess>


    <!-- INSTALL PACKAGE INSTRUCTION --->
    
    <action name="prepare the arrays with package definitions">
      <type>general/bcl</type>
      <definition>
        package = new Array(6);
        package[0] = screen;
        package[1] = removePackageScreen;
        package[2] = removePackage;
        package[3] = specifyPinScreen;
        package[4] = verifyPinSaveAndRemove;
        package[5] = newStartupInstruction;
        packageNames = new Array(6);
        packageNames[0] = "com/emarson/lemonade/examples/mobank/pin/Screen";
        packageNames[1] = "com/emarson/lemonade/examples/mobank/pin/RemovePackageScreen";
        packageNames[2] = "com/emarson/lemonade/examples/mobank/pin/RemovePackage";
        packageNames[3] = "com/emarson/lemonade/examples/mobank/pin/SpecifyPinScreen";
        packageNames[4] = "com/emarson/lemonade/examples/mobank/pin/VerifyPinSaveAndRemove";
        packageNames[5] = "com/emarson/lemonade/examples/mobank/pin/NewStartupInstruction";
      </definition>
    </action>

    <action name="create the install package">
      <type>general/bluelemon/package</type>
      <definition resultTo="package" 
                  packageName="com/emarson/lemonade/examples/mobank/pin"
                  valuesContextKey="package" 
                  namesContextKey="packageNames"/>

    </action>
    
    <subprocess name="to be sure it will be processed correctly, wrap it">
      <source>com/emarson/lemonade/templates/ProcessCode</source>
      <arguments>
        <argument key="code">package</argument>
      </arguments>
      <resultTo>wrappedPackage</resultTo>
    </subprocess>

    <finish name="done">
      <return>wrappedPackage</return>
    </finish>

  </path>

</process>