A preliminary design for Gunvor - SOA Repository

    This document outlines a potential design of what Gunvor - SOA Repository may look like.

     

    1. Requirements:

    Please refer to http://www.jboss.org/community/docs/DOC-9834

     

     

    2. JCR Schema

    -ROOT

       -REPOSITORY_AREA
             -JBOSS ESB
                 -- AirlineReservationService

                    -jcr:content:

                        -- title

                        -- desc

                        -- lastModified

                        -- checkInComment

                        -- content: empty

                        -- content_binary: the AirlineReservationService.esb jar file is stored here in binary format

                        -- DefaultLifeCycle: created

                        -- dependency (multi-value-property)

                            --/ROOT/REPOSITORY_AREA/ESBBinaries/AirlineReservationService.esb

                            --/ROOT/REPOSITORY_AREA/WSDL/Public.wsdl

                            --/ROOT/REPOSITORY_AREA/Drools/rules.properties (refer to rule1 and rule2)

                            --/ROOT/REPOSITORY_AREA/Schemas/FlightMessage.xsd

                            --/ROOT/REPOSITORY_AREA/Schemas/PassengerListMessage.xsd

                            --/ROOT/REPOSITORY_AREA/JBPM/Notification.bpmn

                            --/ROOT/REPOSITORY_AREA/Document/ServiceDocument.doc

                            --/ROOT/REPOSITORY_AREA/Configuration/jboss-esb.xml

                        -- other metadata related properties
             -WSDL
               -- Public.wsdl
            -Drools

               -- rule1
               -- rule2
            -JBPM

               -- Notification.bpmn
            -BPEL
            -Documents
               -- ServiceDocument.doc
            -Schemas
               -- FlightMessage.xsd
               -- PassengerListMessage.xsd

            -Configurations

              -- jboss-esb.xml

                    -jcr:content:

                        -- isGlobal: set this property to false if this file does not need to be viewed outside AirlineReservationService

                        --other metadata related properties: such as serviceCategory name, mep etc

       -SCHEMA_AREA

                -METADATA_TYPE_AREA
                            -metadata_type_string
                                   -jcr:content

                                        -- description

                            -metadata_type_multi_value_string                         
                            -metadata_type_life_cycle
                            -metadata_type_dependency
                -LIFECYCLE_AREA
                            -default_life_cycle
                                  -created
                                         -jcr:content

                                             -- isInitialPhase

                                             -- description

                                             -- nextPhase
                                   -developed
                                   -tested
                                   -production
                                   -retired

     

    NOTE: AirlineReservationService is a leaf node. Under the AirlineReservationService node, its dependencies are stored using metadata_type_dependency property, which are references to other artifact nodes.

     

    This is different from the schema that is used by Drools Gunvor:

    rootnode-
              -RULES_REPOSITORY_NAME
                                        -RULE_PACKAGE_AREA
                                                                      -packageA
                                                                                     -ASSET_FOLDER_NAME
                                                                                                          -assetA
                                                                                                          -assetB
                                                                      -packageB
                                                                                     -ASSET_FOLDER_NAME
                                        -STATE_AREA
                                        -PACKAGE_SNAPSHOT_AREA

     

    3. Typical Use Cases:

     

    3.1: Connect to a Repository

     

    Overview:

    The SOA Repository is a web based application, can be accessed through browsers.

     

    Connect to a repository:

    1. Open a browser, point it to the URL of SOA repository. For example, http://soarepo.jboss.org/repo

     

    2. Select a workspace:  A list of available workspaces is displayed. Select one workspace. A workspace is an independent domain in the repository. For example, changing the content in workspace A wont have any effect on workspace B.

    selectworkspace.JPG

     

    3.  Log in with user name and password

     

     

     

    3.2: Work With Workspace

     

    Overview:

    The SOA Repository consists of three views: The workspace view, the Administration view and the Account management view.

     

    Artifacts stored in a SOA Repository workspace are organized under different categories. We may support following categories (initially): JBOSS  ESB (binary format only), Drools rules, WSDL, Schema, Document.

     

    workspaceoverview.JPG

    NOTE: The diagram showed above is actually same with the diagram below (except: 1. all artifacts are under the "global" container by default. 2. As everything are under the global container, to make things look more organized, we put things under different categories, i.e., JBOSS ESB, Drools, WSDL, Schema etc)

     


    Container1(AirlineReservationService)

        Type = Service

            Additional MetaData
                Service Type: Orchestrated, Entity, Task, Utility
                Service Category: user defined

     

            Assets:

                Message Schemas
                    xxxRequest.xsd
                    xxxResponse.xsd
                    xxxFault.xsd

     

                WSDLs
                    xxx.wsdl

     

                Configuration Artifacts
                    jboss-esb.xml

     

                Additional Archive Artififacts
                    smooks-res.xml
                    brmsdeployedrules.properties

     

                Domain Models
                    xxx.jar

     

                Additional Non-archive Artifacts
                    service candidate model
                    service compositions

     

    Container2 (xxxService)

        Type = Business Process

     

            Assets:
                Scenarios
                    xxx.scn
                Choreography
                    xxx.cdm
                Endpoint Behavioral Descriptions
                    ???
               
                BPMN Model
                    xxx.bpmn
                    xxx.bpmn_diagram

     

                Orchestration
                    xxx.bpel
                    xxx.

     

                ProcessDefinition
                    xxx.gpd
                    xxx.xml
                    xxx.gif

     

    Container3 (xxxService)
        Type = JMS Destinations
                Queues
                    queuedef.xml
               
                Topics
                    topicdef.xml

     

    Global Containers

     

        Type = Policy
                xxx.xml

     

     

     

    3.3: Create a JBOSS ESB Artifact
    Overview:

    A JBOSS ESB artifact is a .esb bundle file associated with several metadata. When adding a JBOSS ESB artifact, you will be asked for the location of ESB file (zip file) and the version label. During the uploading process, the jboss-esb.xml file is extracted from the zip file, a set of metadata is generated and stored automatically according to the information from jboss-esb.xml, such as service category name, actions etc.

     

    Create a JBOSS ESB Artifact:
    addesb.JPG

     

     

     

    3.4: View and Edit a JBOSS ESB Artifact

     

    Overview:

    We have a ESB editor to view and edit JBOSS ESB artifact (.esb file).

     

    View and Edit a JBOSS ESB Artifact

     

    1. View the esb file: click the view button, you can download the esb file and save it as a local copy.

    2. Manage the life cycle: You can choose a different life cycle type. You can also move the lifecycle phase forward or backward.
    3. JBOSS ESB Configuration file: When a .esb bundle gets uploaded into the SOA repository, the jboss-esb.xml file will be extracted from the zip file, a set of metadata is generated and stored automatically according to the information from  jboss-esb.xml.
    4.  Manage metadata: All metadata belongs to Quickstart_helloworld is displayed under the metadata section. User can add or remove a metadata type. Use can also edit the value of existing meta data.

    5.  Add a new version of .esb file: .esb bundle file is stored in SOA repository as a binary file. User can upload a new version of Quickstart_helloworld.esb file.

     

    workspaceoverview-config.JPG

     

     

     

     

    3.5: Work With Drools Artifact

     

    TBD

     

     

    3.6: Work With Life Cycle

     

    Overview:

    You can define your own life cycle type from the administration menu.

    lifecycle.JPG

     

     

     

     

    3.7: Work With Metadata

     

    Overview:

    You can define your own metadata from the administration menu. At the moment, we support four types of metadata: single-valued string, multi-valued string, life cycle, dependency.

     

    metadata.JPG

     

     

     

    TO-DO:

     

    1. Policy related:

    * policy editor: the formats of policies vary a lot. how can we have a policy editor to suit all?

    * shall we have a category called policies?

     

    2. Search/Query