SamCooper / COMMON_SPEC_RIDS

1 stars 0 forks source link

[Configuration Service] ExportXML operation example XML documents #101

Closed apinder closed 5 years ago

apinder commented 5 years ago

I'm opening this issue to track and come to a consensus on the output of the current XML documents generated by the exportXML operation.

We have 4 possible XML documents that we can generate - at the Provider configuration level both compact and complete and at the ServiceConfiguration level, again for compact and complete.

Keep in mind I'll be editing the current form shortly to adhere to the 'MO MAL binding to HTTP transport and XML encoding' blue book.

EDIT: I've just noticed after posting this issue that we already have a discussion regarding this here : https://github.com/SamCooper/COMMON_SPEC_RIDS/issues/92. However I'll keep this issue open and use it to track the latest XML.

Service level, compact:

<Object xmlns="COM">
  <ObjectId>
    <ObjectKey>
      <Domain>
        <wstxns1:IdentifierList xmlns:wstxns1="MAL">
          <wstxns1:Identifier>mo</wstxns1:Identifier>
          <wstxns1:Identifier>common</wstxns1:Identifier>
        </wstxns1:IdentifierList>
      </Domain>
      <InstanceId>2</InstanceId>
    </ObjectKey>
    <ObjectType area="3" service="5" version="1" number="1" />
  </ObjectId>
  <ObjectBody>
    <serviceKey xmlns="" area="1" service="2" version="3" />
  </ObjectBody>
  <ObjectDetails>
    <SourceObject />
    <RelatedObject>
      <ObjectId>
        <ObjectKey>
          <Domain>
            <wstxns2:IdentifierList xmlns:wstxns2="MAL">
              <wstxns2:Identifier>mo</wstxns2:Identifier>
              <wstxns2:Identifier>common</wstxns2:Identifier>
            </wstxns2:IdentifierList>
          </Domain>
          <InstanceId>1</InstanceId>
        </ObjectKey>
        <ObjectType area="3" service="5" version="1" number="3" />
      </ObjectId>
      <ObjectBody>
        <configurationObjectDetailsSet xmlns="">
          <configurationObjectDetailsSet>
            <ObjectType xmlns="COM" area="3" service="5" version="1" number="3" />
            <Domain xmlns="COM">
              <wstxns3:IdentifierList xmlns:wstxns3="MAL">
                <wstxns3:Identifier>mo</wstxns3:Identifier>
                <wstxns3:Identifier>common</wstxns3:Identifier>
              </wstxns3:IdentifierList>
            </Domain>
          </configurationObjectDetailsSet>
        </configurationObjectDetailsSet>
      </ObjectBody>
      <ObjectDetails>
        <SourceObject />
        <RelatedObject />
      </ObjectDetails>
    </RelatedObject>
  </ObjectDetails>
</Object>

Service level, complete:

<Object xmlns="COM">
  <ObjectId>
    <ObjectKey>
      <Domain>
        <wstxns1:IdentifierList xmlns:wstxns1="MAL">
          <wstxns1:Identifier>mo</wstxns1:Identifier>
          <wstxns1:Identifier>common</wstxns1:Identifier>
        </wstxns1:IdentifierList>
      </Domain>
      <InstanceId>2</InstanceId>
    </ObjectKey>
    <ObjectType area="3" service="5" version="1" number="1" />
  </ObjectId>
  <ObjectBody>
    <ServiceKey area="1" service="2" version="3" />
  </ObjectBody>
  <ObjectDetails>
    <SourceObject />
    <RelatedObject>
      <ObjectId>
        <ObjectKey>
          <Domain>
            <wstxns2:IdentifierList xmlns:wstxns2="MAL">
              <wstxns2:Identifier>mo</wstxns2:Identifier>
              <wstxns2:Identifier>common</wstxns2:Identifier>
            </wstxns2:IdentifierList>
          </Domain>
          <InstanceId>1</InstanceId>
        </ObjectKey>
        <ObjectType area="3" service="5" version="1" number="3" />
      </ObjectId>
      <ObjectBody>
        <configurationObjectDetailsSet xmlns="">
          <configurationObjectDetailsSet>
            <ObjectType xmlns="COM" area="3" service="5" version="1" number="3" />
            <Domain xmlns="COM">
              <wstxns3:IdentifierList xmlns:wstxns3="MAL">
                <wstxns3:Identifier>mo</wstxns3:Identifier>
                <wstxns3:Identifier>common</wstxns3:Identifier>
              </wstxns3:IdentifierList>
            </Domain>
            <ObjectIds>
              <InstanceId xmlns="COM">10</InstanceId>
              <InstanceId xmlns="COM">20</InstanceId>
              <InstanceId xmlns="COM">30</InstanceId>
            </ObjectIds>
          </configurationObjectDetailsSet>
        </configurationObjectDetailsSet>
        <ConfigurationObjectSet>
          <ConfigurationObjectSet>
            <ObjectType area="3" service="5" version="1" number="3" />
            <Domain>
              <wstxns4:IdentifierList xmlns:wstxns4="MAL">
                <wstxns4:Identifier>mo</wstxns4:Identifier>
                <wstxns4:Identifier>common</wstxns4:Identifier>
              </wstxns4:IdentifierList>
            </Domain>
            <ObjectIds xmlns="">
              <InstanceId xmlns="COM">10</InstanceId>
              <InstanceId xmlns="COM">20</InstanceId>
              <InstanceId xmlns="COM">30</InstanceId>
            </ObjectIds>
          </ConfigurationObjectSet>
        </ConfigurationObjectSet>
      </ObjectBody>
      <ObjectDetails>
        <SourceObject />
        <RelatedObject />
      </ObjectDetails>
    </RelatedObject>
  </ObjectDetails>
</Object>

Provider level, compact:

<Object xmlns="COM">
  <ObjectId>
    <ObjectKey>
      <Domain>
        <wstxns1:IdentifierList xmlns:wstxns1="MAL">
          <wstxns1:Identifier>mo</wstxns1:Identifier>
          <wstxns1:Identifier>common</wstxns1:Identifier>
        </wstxns1:IdentifierList>
      </Domain>
      <InstanceId>4</InstanceId>
    </ObjectKey>
    <ObjectType area="3" service="5" version="1" number="2" />
  </ObjectId>
  <ObjectBody>
    <wstxns2:Identifier xmlns:wstxns2="MAL">test provider</wstxns2:Identifier>
  </ObjectBody>
  <ObjectDetails>
    <SourceObject />
    <RelatedObject>
      <ObjectId>
        <ObjectKey>
          <Domain>
            <wstxns3:IdentifierList xmlns:wstxns3="MAL">
              <wstxns3:Identifier>mo</wstxns3:Identifier>
              <wstxns3:Identifier>common</wstxns3:Identifier>
            </wstxns3:IdentifierList>
          </Domain>
          <InstanceId>3</InstanceId>
        </ObjectKey>
        <ObjectType area="3" service="5" version="1" number="3" />
      </ObjectId>
      <ObjectBody>
        <ObjectId>
          <ObjectKey>
            <Domain>
              <wstxns4:IdentifierList xmlns:wstxns4="MAL">
                <wstxns4:Identifier>mo</wstxns4:Identifier>
                <wstxns4:Identifier>common</wstxns4:Identifier>
              </wstxns4:IdentifierList>
            </Domain>
            <InstanceId>2</InstanceId>
          </ObjectKey>
          <ObjectType area="3" service="5" version="1" number="1" />
        </ObjectId>
        <ObjectBody>
          <serviceKey xmlns="" area="1" service="2" version="3" />
        </ObjectBody>
        <ObjectDetails>
          <SourceObject />
          <RelatedObject>
            <ObjectId>
              <ObjectKey>
                <Domain>
                  <wstxns5:IdentifierList xmlns:wstxns5="MAL">
                    <wstxns5:Identifier>mo</wstxns5:Identifier>
                    <wstxns5:Identifier>common</wstxns5:Identifier>
                  </wstxns5:IdentifierList>
                </Domain>
                <InstanceId>1</InstanceId>
              </ObjectKey>
              <ObjectType area="3" service="5" version="1" number="3" />
            </ObjectId>
            <ObjectBody>
              <configurationObjectDetailsSet xmlns="">
                <configurationObjectDetailsSet>
                  <ObjectType xmlns="COM" area="3" service="5" version="1" number="3" />
                  <Domain xmlns="COM">
                    <wstxns6:IdentifierList xmlns:wstxns6="MAL">
                      <wstxns6:Identifier>mo</wstxns6:Identifier>
                      <wstxns6:Identifier>common</wstxns6:Identifier>
                    </wstxns6:IdentifierList>
                  </Domain>
                </configurationObjectDetailsSet>
              </configurationObjectDetailsSet>
            </ObjectBody>
            <ObjectDetails>
              <SourceObject />
              <RelatedObject />
            </ObjectDetails>
          </RelatedObject>
        </ObjectDetails>
      </ObjectBody>
      <ObjectDetails>
        <SourceObject />
        <RelatedObject />
      </ObjectDetails>
    </RelatedObject>
  </ObjectDetails>
</Object>

Provider level, complete

<Object xmlns="COM">
  <ObjectId>
    <ObjectKey>
      <Domain>
        <wstxns1:IdentifierList xmlns:wstxns1="MAL">
          <wstxns1:Identifier>mo</wstxns1:Identifier>
          <wstxns1:Identifier>common</wstxns1:Identifier>
        </wstxns1:IdentifierList>
      </Domain>
      <InstanceId>4</InstanceId>
    </ObjectKey>
    <ObjectType area="3" service="5" version="1" number="2" />
  </ObjectId>
  <ObjectBody>
    <wstxns2:Identifier xmlns:wstxns2="MAL">test provider</wstxns2:Identifier>
  </ObjectBody>
  <ObjectDetails>
    <SourceObject />
    <RelatedObject>
      <ObjectId>
        <ObjectKey>
          <Domain>
            <wstxns3:IdentifierList xmlns:wstxns3="MAL">
              <wstxns3:Identifier>mo</wstxns3:Identifier>
              <wstxns3:Identifier>common</wstxns3:Identifier>
            </wstxns3:IdentifierList>
          </Domain>
          <InstanceId>3</InstanceId>
        </ObjectKey>
        <ObjectType area="3" service="5" version="1" number="3" />
      </ObjectId>
      <ObjectBody>
        <ObjectId>
          <ObjectKey>
            <Domain>
              <wstxns4:IdentifierList xmlns:wstxns4="MAL">
                <wstxns4:Identifier>mo</wstxns4:Identifier>
                <wstxns4:Identifier>common</wstxns4:Identifier>
              </wstxns4:IdentifierList>
            </Domain>
            <InstanceId>2</InstanceId>
          </ObjectKey>
          <ObjectType area="3" service="5" version="1" number="1" />
        </ObjectId>
        <ObjectBody>
          <ServiceKey area="1" service="2" version="3" />
        </ObjectBody>
        <ObjectDetails>
          <SourceObject />
          <RelatedObject>
            <ObjectId>
              <ObjectKey>
                <Domain>
                  <wstxns5:IdentifierList xmlns:wstxns5="MAL">
                    <wstxns5:Identifier>mo</wstxns5:Identifier>
                    <wstxns5:Identifier>common</wstxns5:Identifier>
                  </wstxns5:IdentifierList>
                </Domain>
                <InstanceId>1</InstanceId>
              </ObjectKey>
              <ObjectType area="3" service="5" version="1" number="3" />
            </ObjectId>
            <ObjectBody>
              <configurationObjectDetailsSet xmlns="">
                <configurationObjectDetailsSet>
                  <ObjectType xmlns="COM" area="3" service="5" version="1" number="3" />
                  <Domain xmlns="COM">
                    <wstxns6:IdentifierList xmlns:wstxns6="MAL">
                      <wstxns6:Identifier>mo</wstxns6:Identifier>
                      <wstxns6:Identifier>common</wstxns6:Identifier>
                    </wstxns6:IdentifierList>
                  </Domain>
                  <ObjectIds>
                    <InstanceId xmlns="COM">10</InstanceId>
                    <InstanceId xmlns="COM">20</InstanceId>
                    <InstanceId xmlns="COM">30</InstanceId>
                  </ObjectIds>
                </configurationObjectDetailsSet>
              </configurationObjectDetailsSet>
              <ConfigurationObjectSet>
                <ConfigurationObjectSet>
                  <ObjectType area="3" service="5" version="1" number="3" />
                  <Domain>
                    <wstxns7:IdentifierList xmlns:wstxns7="MAL">
                      <wstxns7:Identifier>mo</wstxns7:Identifier>
                      <wstxns7:Identifier>common</wstxns7:Identifier>
                    </wstxns7:IdentifierList>
                  </Domain>
                  <ObjectIds xmlns="">
                    <InstanceId xmlns="COM">10</InstanceId>
                    <InstanceId xmlns="COM">20</InstanceId>
                    <InstanceId xmlns="COM">30</InstanceId>
                  </ObjectIds>
                </ConfigurationObjectSet>
              </ConfigurationObjectSet>
            </ObjectBody>
            <ObjectDetails>
              <SourceObject />
              <RelatedObject />
            </ObjectDetails>
          </RelatedObject>
        </ObjectDetails>
      </ObjectBody>
      <ObjectDetails>
        <SourceObject />
        <RelatedObject />
      </ObjectDetails>
    </RelatedObject>
  </ObjectDetails>
</Object>
lacourte commented 5 years ago

I wonder about the content of the ObjectBody element. I see

 <ObjectBody>
   <configurationObjectDetailsSet xmlns="">
     <configurationObjectDetailsSet>
       <ObjectType ...
       <Domain ...
       <ObjectIds ...
     </configurationObjectDetailsSet>
   </configurationObjectDetailsSet>
 </ObjectBody>

while I would expect

 <ObjectBody>
   <configurationObjectDetails ...>
     <configurationObjectSetList>
       <configurationObjectSet>
         <ObjectType ...
         <Domain ...
         <ObjectIds ...
       </configurationObjectSet>
     </configurationObjectSetList>
   </configurationObjectDetails>
 </ObjectBody>
lacourte commented 5 years ago

Regarding only the service level configurations, compact and complete, I do not understand why the ObjectIds element (of ConfigurationObjectSet) only exist in complete and not un compact.

Moreover I understand that the complete configuration should include the content of the COM objects referenced by those ObjectIds elements. I do not find them.

lacourte commented 5 years ago

I have updated the definition of the ConfigurationTest service in bitbucket. I have declared a new COM object type Parameter. Those objects shall be used by the Configuration service prototyping as "service objects". I believe those objects are the COM objects referenced by the ObjectIds elements of ConfigurationObjectSet.

lacourte commented 5 years ago

This is what I have implemented with the new Inline* MAL objects

service level - compact

<cp:Configuration xmlns:cp="CommonPrototype">
  <InlineServiceConfiguration>
    <ObjectId>
      <ObjectKey>
    <Domain>
      <wstxns1:IdentifierList xmlns:wstxns1="MAL">
        <wstxns1:Identifier>domain</wstxns1:Identifier>
      </wstxns1:IdentifierList>
    </Domain>
    <InstanceId>2</InstanceId>
      </ObjectKey>
      <ObjectType area="3" number="1" service="5" version="1"/>
    </ObjectId>
    <ObjectBody>
      <ServiceKey keyArea="211" keyAreaVersion="1" keyService="2"/>
    </ObjectBody>
    <ObjectDetails>
      <InlineConfigurationObjects>
    <ObjectId>
      <ObjectKey>
        <Domain>
          <wstxns2:IdentifierList xmlns:wstxns2="MAL">
        <wstxns2:Identifier>domain</wstxns2:Identifier>
          </wstxns2:IdentifierList>
        </Domain>
        <InstanceId>7</InstanceId>
      </ObjectKey>
      <ObjectType area="3" number="3" service="5" version="1"/>
    </ObjectId>
    <ObjectBody>
      <InlineConfigurationObjectDetails>
        <configObjects>
          <InlineConfigurationObjectSet>
        <ObjectType area="211" number="1" service="2" version="1"/>
        <Domain>
          <wstxns3:IdentifierList xmlns:wstxns3="MAL">
            <wstxns3:Identifier>domain</wstxns3:Identifier>
          </wstxns3:IdentifierList>
        </Domain>
        <ObjectIds>
          <InstanceId>3</InstanceId>
        </ObjectIds>
          </InlineConfigurationObjectSet>
        </configObjects>
      </InlineConfigurationObjectDetails>
    </ObjectBody>
      </InlineConfigurationObjects>
    </ObjectDetails>
  </InlineServiceConfiguration>
</cp:Configuration>

service level - complete

<cp:Configuration xmlns:cp="CommonPrototype">
  <InlineServiceConfiguration>
    <ObjectId>
      <ObjectKey>
    <Domain>
      <wstxns4:IdentifierList xmlns:wstxns4="MAL">
        <wstxns4:Identifier>domain</wstxns4:Identifier>
      </wstxns4:IdentifierList>
    </Domain>
    <InstanceId>2</InstanceId>
      </ObjectKey>
      <ObjectType area="3" number="1" service="5" version="1"/>
    </ObjectId>
    <ObjectBody>
      <ServiceKey keyArea="211" keyAreaVersion="1" keyService="2"/>
    </ObjectBody>
    <ObjectDetails>
      <InlineConfigurationObjects>
    <ObjectId>
      <ObjectKey>
        <Domain>
          <wstxns5:IdentifierList xmlns:wstxns5="MAL">
        <wstxns5:Identifier>domain</wstxns5:Identifier>
          </wstxns5:IdentifierList>
        </Domain>
        <InstanceId>7</InstanceId>
      </ObjectKey>
      <ObjectType area="3" number="3" service="5" version="1"/>
    </ObjectId>
    <ObjectBody>
      <InlineConfigurationObjectDetails>
        <configObjects>
          <InlineConfigurationObjectSet>
        <ObjectType area="211" number="1" service="2" version="1"/>
        <Domain>
          <wstxns6:IdentifierList xmlns:wstxns6="MAL">
            <wstxns6:Identifier>domain</wstxns6:Identifier>
          </wstxns6:IdentifierList>
        </Domain>
        <ObjectIds>
          <InstanceId>3</InstanceId>
        </ObjectIds>
        <objectBodies>
          <Parameter name="testParameter" value="7"/>
        </objectBodies>
          </InlineConfigurationObjectSet>
        </configObjects>
      </InlineConfigurationObjectDetails>
    </ObjectBody>
      </InlineConfigurationObjects>
    </ObjectDetails>
  </InlineServiceConfiguration>
</cp:Configuration>

provider level - complete

<Configuration xmlns="CommonPrototype">
  <InlineProviderConfiguration>
    <ObjectId>
      <ObjectKey>
        <Domain>
          <wstxns1:IdentifierList xmlns:wstxns1="MAL">
            <wstxns1:Identifier>domain</wstxns1:Identifier>
          </wstxns1:IdentifierList>
        </Domain>
      </ObjectKey>
      <ObjectType area="3" service="5" version="1" number="2" />
    </ObjectId>
    <ObjectBody>
      <wstxns2:Identifier xmlns:wstxns2="MAL">pConf8</wstxns2:Identifier>
    </ObjectBody>
    <ObjectDetails>
      <InlineConfigurationObjects>
        <ObjectId>
          <ObjectKey>
            <Domain>
              <wstxns3:IdentifierList xmlns:wstxns3="MAL">
                <wstxns3:Identifier>domain</wstxns3:Identifier>
              </wstxns3:IdentifierList>
            </Domain>
          </ObjectKey>
          <ObjectType area="3" service="5" version="1" number="3" />
        </ObjectId>
        <ObjectBody>
          <InlineConfigurationObjectDetails>
            <configObjects>
              <InlineConfigurationObjectSet>
                <ObjectType xmlns="COM" area="211" service="2" version="1" number="1" />
                <Domain xmlns="COM">
                  <wstxns4:IdentifierList xmlns:wstxns4="MAL">
                    <wstxns4:Identifier>domain</wstxns4:Identifier>
                  </wstxns4:IdentifierList>
                </Domain>
                <objectBodies>
                  <Parameter name="testParameter" value="8" />
                </objectBodies>
              </InlineConfigurationObjectSet>
            </configObjects>
          </InlineConfigurationObjectDetails>
        </ObjectBody>
      </InlineConfigurationObjects>
    </ObjectDetails>
  </InlineProviderConfiguration>
</Configuration>
apinder commented 5 years ago

Thanks Serge, I've added these as an annex in the spec (closing this now)