7 Working with Project Lifecycle Workbench Seed Data

This chapter provides an overview of Project Lifecycle Workbench Seed Data and describes how to set up an environment to export or import seed data.

This chapter includes the following sections:

7.1 Introducing Project Lifecycle Workbench Seed Data

In Project Lifecycle Workbench, seed data can be categorized into two areas:

  • Bill of material (BOM) data

    Bill of material seed data contains information about the SOA composites in a Project Lifecycle Workbench project. You can produce a BOM.xml file from the Project Lifecycle Workbench user interface (UI) based on seed data residing in the Project Lifecycle Workbench back end.

    For more information about generating BOMs, see Section 6.2, "How to Generate a Bill of Material for an AIA Lifecycle Project."

  • Functional decomposition data

    Functional decomposition is a task performed by functional experts or solution architects that involves an overall analysis of an process integration's business logic. The Project Lifecycle Workbench can be used to facilitate this task.

    Functional decomposition data includes a set of requirements and intentions that have been defined in Project Lifecycle Workbench to articulate the business logic of a given process integration. This seed data is composed of projects, tasks, and service solution components.

    For example, a Project Lifecycle Workbench service solution component is a product of functional decomposition that represents an intent to fulfill a chunk of business logic in the form of a service. At the time of its creation in Project Lifecycle Workbench, the service solution component may or may not correspond to an existing executable service.

You can use the seed data created by your organizations work in Project Lifecycle Workbench to capture and migrate data from one Project Lifecycle Workbench to another.

Oracle delivers BOM and functional decomposition seed data with its Pre-Built Integration products. You can clone this Oracle-delivered data and modify the projects, adding custom logic and artifacts. Cloning the delivered seed data ensures that subsequent AIA upgrades and patches do not tamper with your customized data.

After cloning the data, you can do the following types of updates to the data:

  • Modify an existing composite and its associated annotations.

  • Add a composite to the cloned BOM, if the composite has been developed based on the AIA programming models and annotation standards.

  • Remove a composite from the cloned BOM.

With this seed data, you can go through your development cycle, modifying Pre-Built Integration project definitions and composites, generate BOMs, and from the BOMs, generate deployment plans.

For more information about generating deployment plans, see Chapter 8, "Generating Deployment Plans and Deploying Artifacts."

Oracle-delivered seed data can be imported into a Project Lifecycle Workbench instance as a part of the overall Pre-Built Integration installation process, or the data can be imported using a standalone post-installation script, depending on the needs of your implementation.

To determine the phase in which you should import your seed data, consider that deployment plans are only meaningful when the underlying executables, such as composite source code, are available for installation, deployment, and execution. For this reason, determine the phase in which to import seed data by determining when the executable source code will be ready for deployment on the target file system.

For more information about how to load Project Lifecycle Workbench seed data post-installation, see Section 7.4, "How to Import Seed Data."

Figure 7-1 provides a sample usage flow for the import and export of Project Lifecycle Workbench seed data.

Figure 7-1 Sample Usage Flow for Import and Export of Project Lifecycle Workbench Seed Data

This image is described in surrounding text

Project Lifecycle Workbench does not capture non-native artifacts. Deployment of Oracle-delivered non-native artifacts can be manually specified using SupplementaryDP.xml. Deployment of custom non-native artifacts can be manually specified using CustomSupplementaryDP.xml.

For more information about how to deploy non-native artifacts using SupplementaryDP.xml and CustomSupplementaryDP.xml, see Section 8.2.2, "Extending Non-Native Artifacts."

The Project Lifecycle Workbench seed data schema is provided in Example 7-1.

Example 7-1 Project Lifecycle Workbench Seed Data Schema

<?xml version="1.0" encoding="windows-1252"?>
<!-- edited with XMLSpy v2006 rel. 3 sp2 (http://www.altova.com) by Siebel Systems (Siebel 
Systems) -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://xml.oracle.com
 /AIA/PLWBOM/V1" targetNamespace="http://xml.oracle.com/AIA/PLWBOM/V1" 
 elementFormDefault="qualified">
   <xsd:element name="PLW">
      <xsd:complexType>
         <xsd:sequence>
            <xsd:element name="Process">
               <xsd:annotation>
                  <xsd:documentation>Project LifeCycle WorkBench Seed Data 
                    Schema</xsd:documentation>
               </xsd:annotation>
               <xsd:complexType>
                  <xsd:sequence>
                     <xsd:element name="ProcessDetail" type="ProcessType"/>
                     <xsd:element name="ProcessUuid" type="xsd:string"/>
                     <xsd:element name="ParentProcessUuid" type="xsd:string"/>
                     <xsd:element name="Task" minOccurs="0" maxOccurs="unbounded">
                        <xsd:complexType>
                           <xsd:sequence>
                              <xsd:element name="TaskDetail" type="TaskType"/>
                              <xsd:element name="Scope" type="xsd:string"/>
                              <xsd:element name="SvccompId" type="xsd:string" minOccurs="0" 
                               maxOccurs="unbounded"/>
                           </xsd:sequence>
                        </xsd:complexType>
                     </xsd:element>
                     <xsd:element name="ProcessBom" minOccurs="0">
                        <xsd:complexType>
                           <xsd:sequence>
                              <xsd:element name="ProcessBomDetail" type="ProcessType"/>
                              <xsd:element name="BomStatus" type="xsd:string"/>
                              <xsd:element name="TaskBom" minOccurs="0" maxOccurs="unbounded">
                                 <xsd:complexType>
                                    <xsd:sequence>
                                       <xsd:element name="TaskBomDetail" type="TaskType"/>
                                       <xsd:element name="TaskBomSource" type="xsd:string"/>
                                       <xsd:element name="SvccompBomId" type="xsd:string" 
                                        minOccurs="0" maxOccurs="unbounded"/>
                                    </xsd:sequence>
                                 </xsd:complexType>
                              </xsd:element>
                           </xsd:sequence>
                        </xsd:complexType>
                     </xsd:element>
                     <xsd:element name="SvccompBom" minOccurs="0" maxOccurs="unbounded">
                        <xsd:complexType>
                           <xsd:sequence>
                              <xsd:element name="SvccompBomDetail" type="SvccompType"/>
                              <xsd:element name="SvccompBomId" type="xsd:string"/>
                              <xsd:element name="CompositeId" type="xsd:string"/>
                           </xsd:sequence>
                        </xsd:complexType>
                     </xsd:element>
                  </xsd:sequence>
               </xsd:complexType>
            </xsd:element>
            <xsd:element name="Svccomp" minOccurs="0" maxOccurs="unbounded">
               <xsd:complexType>
                  <xsd:sequence>
                     <xsd:element name="SvccompDetail" type="SvccompType"/>
                     <xsd:element name="ReusedServiceObjectType" type="xsd:string"
                    minOccurs="0"/>
                     <xsd:element name="ReusedServiceObjectID" type="xsd:string"
                    minOccurs="0"/>
                  </xsd:sequence>
               </xsd:complexType>
            </xsd:element>
            <xsd:element name="Composite" minOccurs="0" maxOccurs="unbounded">
               <xsd:complexType>
                  <xsd:sequence>
                     <xsd:element name="CompositeDetail">
                        <xsd:complexType>
                           <xsd:complexContent>
                              <xsd:extension base="CompositeType"/>
                           </xsd:complexContent>
                        </xsd:complexType>
                     </xsd:element>
                     <xsd:element name="CompositeXML" type="xsd:hexBinary" minOccurs="0"/>
                     <xsd:element name="CompositeRevID" type="xsd:hexBinary" minOccurs="0"/>
                     <xsd:element name="CompositeServiceElem" minOccurs="0" 
                      maxOccurs="unbounded">
                        <xsd:complexType>
                           <xsd:sequence>
                              <xsd:element name="ServiceElementID" type="xsd:string"/>
                              <xsd:element name="CompositeServiceType" type="xsd:string"/>
                              <xsd:element name="CompositeServiceName" type="xsd:string"/>
                              <xsd:element name="ServiceElementXML" type="xsd:hexBinary"/>
                              <xsd:element name="Audit" type="CommonAuditType"/>
                              <xsd:element name="DeployAttributeValue" 
                               type="DeployAttributeValueType" minOccurs="0" 
                               maxOccurs="unbounded"/>
                           </xsd:sequence>
                        </xsd:complexType>
                     </xsd:element>
                     <xsd:element name="DeployAttributeValue" type="DeployAttributeValueType" 
                      minOccurs="0" maxOccurs="unbounded"/>
                  </xsd:sequence>
               </xsd:complexType>
            </xsd:element>
            <xsd:element name="ServiceElement" minOccurs="0" maxOccurs="unbounded">
               <xsd:complexType>
                  <xsd:sequence>
                     <xsd:element name="ServiceElementDetail" type="ServiceElementType"/>
                  </xsd:sequence>
               </xsd:complexType>
            </xsd:element>
         </xsd:sequence>
   <xsd:attribute name="processCode"/>
   <xsd:attribute name="version"/>
   <xsd:attribute name="createDate"/>
   <xsd:attribute name="uuid"/>
  </xsd:complexType>
   </xsd:element>
   <xsd:complexType name="CommonAuditType">
      <xsd:sequence>
         <xsd:element name="CreatedBy" type="xsd:string"/>
         <xsd:element name="CreationDate" type="xsd:string"/>
         <xsd:element name="LastUpdatedBy"/>
         <xsd:element name="LastUpdateDate"/>
         <xsd:element name="ObjectVersionNumber"/>
      </xsd:sequence>
   </xsd:complexType>
   <xsd:complexType name="ProcessType">
      <xsd:sequence>
         <xsd:element name="ProcessName" type="xsd:string"/>
         <xsd:element name="ProcessDesc" type="xsd:hexBinary"/>
         <xsd:element name="ProcessAssumption" type="xsd:hexBinary"/>
         <xsd:element name="ProcessSource" type="xsd:string"/>
         <xsd:element name="ProcessIndustry" type="xsd:string"/>
         <xsd:element name="ProcessCode" type="xsd:string"/>
         <xsd:element name="ProcessType" type="xsd:string"/>
         <xsd:element name="Status" type="xsd:string"/>
         <xsd:element name="Version" type="xsd:string"/>
         <xsd:element name="Audit" type="CommonAuditType"/>
      </xsd:sequence>
   </xsd:complexType>
   <xsd:complexType name="TaskType">
      <xsd:sequence>
         <xsd:element name="TaskID" type="xsd:string"/>
         <xsd:element name="TaskName" type="xsd:string"/>
         <xsd:element name="TaskDesc" type="xsd:hexBinary"/>
         <xsd:element name="TaskUuid" type="xsd:string"/>
         <xsd:element name="Audit" type="CommonAuditType"/>
      </xsd:sequence>
   </xsd:complexType>
   <xsd:complexType name="SvccompType">
      <xsd:sequence>
         <xsd:element name="SvccompID" type="xsd:string"/>
         <xsd:element name="SvccompType" type="xsd:string"/>
         <xsd:element name="SvccompName" type="xsd:string"/>
         <xsd:element name="SvccompDesc" type="xsd:hexBinary"/>
         <xsd:element name="SvccompAssumption" type="xsd:hexBinary"/>
         <xsd:element name="ProductPillar" type="xsd:string"/>
         <xsd:element name="ProductFamily" type="xsd:string"/>
         <xsd:element name="ProductCode" type="xsd:string"/>
         <xsd:element name="SvccompGUID" type="xsd:string"/>
         <xsd:element name="Audit" type="CommonAuditType"/>
      </xsd:sequence>
   </xsd:complexType>
   <xsd:complexType name="CompositeType">
      <xsd:sequence>
         <xsd:element name="CompositeID" type="xsd:string"/>
         <xsd:element name="CompositeName" type="xsd:string"/>
         <xsd:element name="Source" type="xsd:string"/>
         <xsd:element name="Audit" type="CommonAuditType"/>
      </xsd:sequence>
   </xsd:complexType>
   <xsd:complexType name="ServiceElementType">
      <xsd:sequence>
         <xsd:element name="ServiceElementID" type="xsd:string"/>
         <xsd:element name="ServiceElementType" type="xsd:string"/>
         <xsd:element name="ServiceName" type="xsd:string"/>
         <xsd:element name="OperationName" type="xsd:string"/>
         <xsd:element name="Namespace" type="xsd:string"/>
         <xsd:element name="ProductPillar" type="xsd:string"/>
         <xsd:element name="ProductFamily" type="xsd:string"/>
         <xsd:element name="ProductCode" type="xsd:string"/>
         <xsd:element name="Audit" type="CommonAuditType"/>
      </xsd:sequence>
   </xsd:complexType>
   <xsd:complexType name="DeployAttributeValueType">
      <xsd:sequence>
         <xsd:element name="GroupNumber" type="xsd:string"/>
         <xsd:element name="DeployAttributeValue" type="xsd:string"/>
         <xsd:element name="DeployAttributeCode" type="xsd:string"/>
         <xsd:element name="Audit" type="CommonAuditType"/>
      </xsd:sequence>
   </xsd:complexType>
</xsd:schema>

7.2 How to Set Up an Environment to Export or Import Seed Data for the First Time

Objective

Perform set up tasks to enable the export and import of Project Lifecycle Workbench seed data. Perform this procedure for each separate environment, whether it is being exported from or imported to. Perform this procedure only once for each environment, before the environment is accessed for export and import for the first time.

Prerequisites and Recommendations

None

Actor

  • Integration developers

  • System administrators

To set up a Linux environment to export or import seed data for the first time:

  1. Start a server session.

  2. Navigate to aiaenv.sh located in $AIA_INSTANCE/bin/aiaenv.sh.

  3. At the command prompt, execute source aiaenv.sh.

To set up a Windows environment to export or import seed data for the first time:

  1. Access a command prompt.

  2. Access the drive on which AIAHome is installed.

  3. Navigate to aiaenv.bat located in <AIA_HOME>\aia_instances\AB\bin.

  4. At the command prompt, run aiaenv.bat.

7.3 How to Export Seed Data

Objective

Export Project Lifecycle Workbench seed data.

Prerequisites

Complete the steps covered in Section 7.2, "How to Set Up an Environment to Export or Import Seed Data for the First Time."

Actors

  • System administrators

  • Integration developers

To export Project Lifecycle Workbench seed data:

  1. Access a command window on the server from which you want to export seed data.

  2. Navigate to the $AIA_HOME/Infrastructure/LifeCycle/PLWImExport folder.

  3. Run PLWExport to perform the seed data export. Output files are saved to the PLWImExport folder. One output XML file is generated per project.

PLWExport provides a set of export commands, as discussed in Table 7-1.

Table 7-1 PLWExport Commands

Command Description

-p <project code>

Provide -p or -u in the PLWExport command.

-v <version>

For optional use with -p.

If a version is not specified and there are multiple projects with the same project code, but different versions, the projects are displayed.

If a version is not specified and there is only one project that matches the project code criteria, the seed data for the project is exported.

-u <UUID value>

Provide -u or -p in the PLWExport command.

A UUID value is assigned to a Project Lifecycle Workbench project as the Project Unique ID value upon saving the project for the first time. The ID displays on the Add Project page and Update Project page and is stored in the AIA_OER_PROCESSES table.

For more information about the project unique ID value as it displays in the Project Lifecycle Workbench UI, see Section 3.3, "Working with Project Lifecycle Workbench Projects."

-s (scope)

Use as follows:

  • -s all

    Exports BOM and functional decomposition data.

  • -s fd

    Export functional decomposition data only.

If not specified, PLWExport uses -s all.

To export BOM data, also export functional decomposition data, -s all. You cannot export only BOM data.

-o <output file name>

If not specified, PLWExport uses a file name of <project code>_<UUID>.xml.


Caution:

If a project is exported with no -o command, and then is exported again with no -o command, the export file generated by the first export is overwritten by the export file generated by the subsequent export.

Following are sets of sample commands for performing exports using a variety of export criteria.

Export BOM and functional decomposition data by project code and version to a named output file:

  • For Linux: PLWExport.sh -p <Project Code> -v <version> -s all -o <output file name>

  • For Windows: PLWExport.bat -p <Project Code> -v <version> -s all -o <output file name>

Export functional decomposition data by project code and version to a named output file:

  • For Linux: PLWExport.sh -p <Project Code> -v <version> -s fd -o <output file name>

    For Windows: PLWExport.bat -p <Project Code> -v <version> -s fd -o <output file name>

Export BOM and functional decomposition data by project code to a named output file:

  • For Linux: PLWExport.sh -p <Project Code> -s all -o <output file name>

    For Windows: PLWExport.bat -p <Project Code> -s all -o <output file name>

Export functional decomposition data by project code to a named output file:

  • For Linux: PLWExport.sh -p <Project Code> -s fd -o <output file name>

    For Windows: PLWExport.bat -p <Project Code> -s fd -o <output file name>

Export BOM and functional decomposition data by UUID to a named output file:

  • For Linux: PLWExport.sh -u <UUID value> -s all -o <output file name>

    For Windows: PLWExport.bat -u <UUID value> -s all -o <output file name>

Export functional decomposition data by UUID to a named output file:

  • For Linux: PLWExport.sh -u <UUID value> -s fd -o <output file name>

    For Windows: PLWExport.bat -u <UUID value> -s fd -o <output file name>

7.4 How to Import Seed Data

Objective

Import Project Lifecycle Workbench seed data.

Prerequisites

Actors

  • Integration developers

  • System administrators

To import Project Lifecycle Workbench seed data:

  1. Access a command window on the server into which you want to import seed data.

  2. Navigate to the PLWImExport folder: $AIA_HOME/Infrastructure/LifeCycle/PLWImExport.

  3. Run PLWImport to perform the seed data import.

    PLWImport provides a set of import commands, as discussed in Table 7-2.

    Table 7-2 PLWImport Commands

    Command Description

    -f <file name or file path>

    Use to import a single file.

    If you provide a file name, PLWImport looks for the file name in the directory from which the PLWImport was invoked and attempts to import.

    For example, in Linux: ./PLWImport.sh -f import1.xml

    If you provide a file path, PLWImport looks for the file name in that specified directory and attempts to import.

    You can provide a full file path that provides a path to the file from the root of the file system.

    For example, in Linux: ./PLWImport.sh -f /home/user/plw/data/import1.xml

    You can provide a relative file path that provides a path to the file relative to the directory from which PLWImport was invoked.

    For example, in Linux: ./PLWImport.sh -f data/import1.xml

    -d <directory path>

    Use to import multiple files stored in a directory.

    If you provide a directory path, PLWImport looks for the specified directory and attempts to import using all files in the directory.

    You can provide a full directory path that provides a directory path from the root of the file system.

    For example, in Linux: ./PLWImport.sh -d /home/user/plw/data/batch

    You can provide a relative directory path that provides a directory path relative to the directory from which PLWImport was invoked.

    For example, in Linux: ./PLWImport.sh -d data/batch or ./PLWImport.sh -d batch


    Provide -f or -d in the PLWImport command, else PLWImport displays an error message as these commands are mutually exclusive.

  4. All imported seed data includes associated UUIDs.

    If a UUID associated with imported data exists in the target Project Lifecycle Workbench instance, the PLWImport updates data associated with the existing UUID.

    If the UUID is unique in the target instance, PLWImport inserts a record for the new UUID.

  5. The results of the import are stored in the plwimporter.log file located in the PLWImExport folder.

  6. After the PLWImport script has run successfully, verify that the imported data is accessible in Project Lifecycle Workbench.

    For more information about Project Lifecycle Workbench, see Section 3.3, "Working with Project Lifecycle Workbench Projects."