1. OMG Mailing List
  2. Unified Component Model 1.3 Revision Task Force

Open Issues

  • Issues not resolved
  • Name: ucm-rtf
  • Issues Count: 5

Issues Descriptions

problems in the XML schema and the DTD

  • Key: UCM13-5
  • Status: open  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    In the DTD, tag "comment" is missing in the declaration of element componentModule, line 283.

    In the XML schema, elements "componentModule" and "contractModule" are inverted with respect to the DTD, lines 672 and 673.

  • Reported: UCM 1.2b1 — Tue, 3 Mar 2020 13:49 GMT
  • Updated: Tue, 3 Mar 2020 13:49 GMT

Add a method in the comp_trace policy to log messages with a default severity

  • Key: UCM13-4
  • Status: open  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    The invocation of the standard technical policy for traces consists of a method
    log that takes two parameters:

    • the severity (trace, debug, warning, etc.)
    • the log message (a wide character string)

    It can be tedious to always have to specify the severity. There should be an
    additional log method with a default severity.

  • Reported: UCM 1.2 — Tue, 7 Jan 2020 17:13 GMT
  • Updated: Tue, 7 Jan 2020 17:13 GMT

Allow specific configuration for the ports and policies managed by a given technical policy

  • Key: UCM13-3
  • Status: open  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Technical policies can have configuration parameters, and can manage component
    features (i.e. they can intercept them). However, it is not possible to
    associate a specific configuration with a given component feature.

    Current state

    Technical policy definitions can specify configuration parameters. In the
    following example, technical policy definition watchdog specifies a
    configuration parameter for the timeout. It also declares an interface named
    watchdog_intf that must be provided by components. The policy calls method
    timeout if no activity has been detected on the intercepted component
    features for some time.

    <policyModule name="example">
     <contractModule name="api">
       <interface name="watchdog_intf">
        <method name="timeout"/>
       </interface>
     </contractModule>
    
     <technicalAspect constraint="any_number" name="asp"/>
    
     <policyDef applicability="on_some_ports" aspect="asp" name="watchdog">
      <comment>This policy intercepts some component ports and policies. It invokes method timeout if no activity is detected on one of these ports and policies after max_delay.  </comment>
      <portElement interface="api::watchdog_intf" kind="provided" name="wdg"/>
      <configParam name="max_delay" type="::ucm_ext_exec::contracts::ucm_duration_t"/>
     </policyDef>
    </policyModule>
    

    One can set the value max_delay when declaring such a policy. In the
    following, we declare an atomic component named calculation_impl that has
    two input ports input1 and input2. It is associated with technical
    policy watcher that monitors both ports. Policy watcher triggers an
    alert after 2 seconds of inactivity on both ports.

    <componentModule name="comp">
     <contractModule name="data_types">
      <integer name="int32_t" kind="int32"/> 
     </contractModule>
    
     <bindingSet name="bindings">
      <binding abstract="::ucm_core::messages::api::transm_data_t" actual="data_types::int32_t"/>
     </bindingSet>
    
     <compType name="calculation">
      <port name="input1" type="::ucm_core::message::msg_recv_pt" bindings="bindings"/>
      <port name="input2" type="::ucm_core::message::msg_recv_pt" bindings="bindings"/>
     </compType>
    
     <policy name="watcher" def="::example::watchdog">
      <componentRef ref="calculation_impl"/>
      <managedPort ref="input1"/>
      <managedPort ref="input2"/>
      <configValue name="max_delay" value="{2, s}"/>
     </policy>
    
     <atomic name="calculation_impl" lang="::ucm_lang::cpp::cpp11_typed">
      <policyRef ref="watcher"/>
     </atomic>
    </componentModule>
    

    Limitation

    The problem is, it is impossible to set a specific timeout value for each
    intercepted port. Thus, one cannot specify that policy watcher shall
    trigger an alert after 2 seconds of inactivity on port input1, or 3 seconds
    of inactivity on port input2.

    Having two separate policies (one for each intercepted port) is not convenient
    because the component business code would then have to implement two different
    methods timeout (one for each policy).

    What should be added

    Technical policy definition should be extended to declare configuration
    parameters that apply to particular managed component features. Thus, the
    declaration of watchdog may be something like this:

    <policyDef applicability="on_some_ports" aspect="asp" name="watchdog">
     <comment>This policy intercepts some component ports and policies. It invokes method timeout if no activity is detected on one of these ports and policies after max_delay.  </comment>
     <portElement interface="api::watchdog_intf" kind="provided" name="wdg"/>
     <configParam name="default_max_delay" type="::ucm_ext_exec::contracts::ucm_duration_t"/>
     <specificConf name="specific_delays">
      <configParam name="max_delay" type="::ucm_ext_exec::contracts::ucm_duration_t"/>
     </specificConf>
    </policyDef>
    

    An additional section named featureConf allows the declaration of per-feature configuration parameters.

    Technical policy watcher may then be declared as follows:

    <policy name="watcher" def="::example::watchdog">
     <componentRef ref="calculation_impl"/>
     <managedPort ref="input1"/>
     <managedPort ref="input2"/>
     <configValue name="default_max_delay" value="{2, s}"/>
     <featureConf name="input2_config">
      <managedPort ref="input2"/>
      <configValue name="max_delay" value="{3, s}"/>
     </featureConf>
    </policy>
    

    Here, the policy triggers an alert after 2 seconds of inactivity on input1
    (default policy configuration) or after 3 seconds of inactivity on input2
    (specific configuration).

  • Reported: UCM 1.2 — Tue, 7 Jan 2020 15:17 GMT
  • Updated: Tue, 7 Jan 2020 15:18 GMT

Attribute values of parts cannot be set in composite component implementation, while configuration parameter values of connections can

  • Key: UCM13-2
  • Status: open  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    In CompositeComponentImplementation, the ucm_base meta-model allows the specification of configuration parameter values in Connection and ConnectionEnd, but it does not allow the specification of attribute values in AssemblyPart. The meta-model would be more consistent if it supported the specification of attribute values in AssemblyPart.
    For example, if we have the following component declaration:

    <componentModule name="comp">
      <compType name="C1">
        <attribute mode="read" name="attr1" type="::dataTypes::Int32_t"/>
      </compType>
    
      <atomic name="C1_i1" lang="::ucm_lang::cpp::CPP11_typed" type="C1"/>
    </componentModule>
    

    We should be able to write something like this:

    <componentModule name="comp2">
      <compType name="C2"/>
    
      <composite name="C2_i1" type="C2">
        <part name="c1a" ref="::comp::C1_i1">
          <attrVal ref="attr1" value="23"/>
        </part>
        <part name="c1b" ref="::comp::C1_i1">
          <attrVal ref="attr1" value="12"/>
        </part>
      </composite>
    </componentModule>
    

    Attribute attr1 shall be initialized to 23 for part c1a and to 12 for c1b.

  • Reported: UCM 1.2 — Thu, 5 Dec 2019 12:26 GMT
  • Updated: Thu, 5 Dec 2019 12:56 GMT

Named entities have no ID in the meta-model

  • Key: UCM13-1
  • Status: open  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    The UCM DTD and XML schema specify an ID field for each named entity. Yet, such ID do not exist in the INamed metaclass of the ucm_base metamodel. Adding IDs in INamed entities would ease the importation of XML files into existing UCM models by enabling model mergers.

  • Reported: UCM 1.2 — Thu, 5 Dec 2019 10:37 GMT
  • Updated: Thu, 5 Dec 2019 10:37 GMT