Issues for Mailing list of the Robot Technology Components (RTC) Finalization Task Force

To comment on any of these issues, send email to rtc-ftf@omg.org. (Please include the issue number in the Subject: header, thusly: [Issue ###].) To submit a new issue, send email to issues@omg.org.

List of issues (green=resolved, yellow=pending Board vote, red=unresolved)

List options: All ; Open Issues only; or Closed Issues only

Issue 10477: Lightweight RTC package diagram
Issue 10478: RTC lifecycle state machine
Issue 10479: Sequence diagrams for activation/deactivation should be added
Issue 10480: Data flow diagrams
Issue 10481: Sequence diagrams for Data Flow Types should be added
Issue 10482: Stimulus response execution diagrams
Issue 10483: Modes of operation diagrams
Issue 10486: Stimulus response and modes of operation sequence diagrams should be added
Issue 10487: Introspection interfaces diagram
Issue 10488: Sequence diagrams for Introspection should be added
Issue 10489: Connector End omitted from diagram
Issue 10490: Inconsistent definition of LifeCycle::reset
Issue 10491: Inconsistent definition of ComponentAction callbacks
Issue 10492: Component can't reset another component
Issue 10493: Clarify contract between execution context and non-initialized components
Issue 10494: Update references to newest versions
Issue 10495: ComponentAction callbacks argument
Issue 10496: ExecutionContextAdmin should receive RTObject not ComponentProfile
Issue 10497: CORBA IDL definition of Port::connect
Issue 10532: It seems better to merge LifeCycle with LightweightRTObject
Issue 10533: Definition of Connector in PSM is unclear
Issue 10534: Type Mode is not clearly defined
Issue 10535: Typographical Errors
Issue 10559: CORBA IDL's syntax error
Issue 10601: refactoring of the ExecutionContext model element
Issue 11005: Page: 5, 11
Issue 11110: FINALIZED in LifeCycleState
Issue 11111: Diagrams do not agree with text

Issue 10477: Lightweight RTC package diagram (rtc-ftf)

Click here for this issue's archive.
Nature: Uncategorized Issue
Severity: Minor
Summary:
At the Figure 7.2 Lightweight RTC package, it explains about Lightweight RTC but followings are mixed in the diagram.

    * Meta model:
          o Describes how each model element relates to other elements. Since it is a model that focused on the static relationship among elements, it does not describe operation usually. 
    * Stereotype description
          o Describes what the base elements such as Component, elements already described for the elements described newly in the specification, are and what additive attributes are . 
    * Interface description
          o Describes what sort of operation each element has. 

In the OMG specification, it seems that the elements are categorized and described in separate diagrams mostly. Therefore, I think it would be better if the diagram should be divided as follows. (I think it would be better that Interface description should be described at the beginning of explanation about individual element.)

Resolution: Add diagrams as described below
Revised Text: · In section 7.2.2, Components, the Figure 7.2, Lightweight RTC Package, should be replaced with the following. Figure 7.2 - Lightweight RTC Stereotypes · In section 7.2.2.1, lightweightRTComponent, Figure 7.3, Example component realizes LightweightRTObject, should be replaced with the following. (Note that the return types of all ComponentAction callbacks have been changed to ReturnCode_t-see issue 10491.) Figure 7.3 - Lightweight RTC M1 Illustration
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Discussion:
Proposed Resolution

The element of !ExecutionContextEntity is added. This is because !ExecutionContext is defined as interface. I think it would be better that the element that realized !ExecutionContext was necessary and added it.

[attachment:lightweight-rtc-metamodel.png] [[BR]] Meta-Model

[attachment:lightweight-rtc-stereotype.png] [[BR]] Stereotype

Discussion

I agree with the reorganization of the diagrams. Regarding !ExecutionContextEntity: if a class would be clearer/more useful than an interface, I think it would be better to just make !ExecutionContext a class instead of introducing a new type. -- RickWarren, 2006/11/27


Issue 10478: RTC lifecycle state machine (rtc-ftf)

Click
here for this issue's archive.
Source: Shibaura Institute of Technology (Mr. Takeshi Sakamoto, sakamoto(at)globalassist.co.jp)
Nature: Uncategorized Issue
Severity: Minor
Summary:
Source: Technologic Arts (Takeshi Sakamoto, <tsakamoto AT SPAMFREE tech-arts DOT co DOT jp>)

Severity: Minor

Disposition: Resolution Proposed

Summary

The state machine diagram and the sequence diagram are related as follows.

[attachment:sequence-with-fsm.png]

Transition (Event) in the state machine diagram responds to operation called by other elements, and actions in the state respond to operation calls other elements operation. In Figure 7.4 RTC lifecycle, it describes operation that owned ExecutionContextEntity for Transition (Event) among Inactive state and Active states. Also, there is an explanation: "When an RTC is in Error, it may be reset. If resetting is successful, the RTC shall return to the Inactive state. If resetting is unsuccessful, it shall remain in the Error state" (Page 14). But Figure 5 describes that whenever "LifeCycle::reset" is called, it should transition from Error state to Inactive state for sure. Considering these points, I think that state machine diagram (part) about RTC becomes the following.

Proposed Resolution

[attachment:rtc-lifecycle3.png]

Discussion

I agree with the movement of the reset operation from LifeCycle to ExecutionContext. However, the updated diagram implies some behaviors that seem unusual to me. Are these intended?

    *

      When a component first enters the Alive state, it will receive an on_deactivate message even though it has never been Active.
    *

      A component leaving the Active state for the Error state will not receive an on_deactivate message.
    *

      on_reset occurs only when exiting the Error state, meaning after reset_component() has returned successfully. But the result from reset_component() should be based on the result from on_reset(). 

The only transition in the original lifecycle diagram that looks problematical to me is the reset transition. What if we keep the original diagram with the following two small changes:

    *

      change LifeCycle::reset to ExecutionContext::reset_component
    *

      add a guard condition [return == OK] 

Would that address the concerns?

-- RickWarren, 2006/12/1

Yes. The state machine diagram included some mistakes. Sakamoto-san corrected it. The state machine diagram was updated.

    *

      on_deactivate was moved from Inactive entry action to Active exit action.
    *

      Therefore, when a component does transition from "Active" state to "Error" or to "Inactive", now the component receives on_deactivate message.
    *

      If on_reset() returns error, "Error" state would not move to "Inactive" state. 

-- NoriakiAndo, 2006/12/4

Resolution: The lifecycle is currently modeled as belonging to a component itself and having parallel regions corresponding to the execution context in which the component participates. This relationship should be reversed. The lifecycle should belong to the execution context and have parallel regions for the participating components. That change will give the transitions the correspondence to sequence diagram messages that is described above.
Revised Text: · Remove Figure 7.4, RTC Lifecycle, from section 7.2.2.3, LifeCycle. · In the same section, "Initialization" subsection, remove last sentence. ("This composite state incorporates a number of concurrent and non-concurrent sub-states described below.") · In the same section, at the end of the "Initialization" subsection, add the following figure: Figure 7.4 - Lightweight RTC Lifecycle · In the same section, the first paragraph under "Execution Context" should be replaced: An RTC in the Alive state may participate in any number of execution contexts (see Section <cross reference to ExecutionContext >). These contexts shall be represented to an RTC as distinct instances of the ExecutionContext class. The ExecutionContext manages the behavior of each RTC that participates in it. This relationship is defined by the following state machine, which is embedded within the ExecutionContext's own lifecycle (see Figure <cross reference to ExecutionContext-Managed Lifecycle >). Each participating RTC is represented as a separate parallel region. Figure 7.5 - Execution Context-Managed Lifecycle · In the same section, "Execution Context" subsection, remove the last paragraph. · In the same section, add the following figure to the end of the "Error Handling" subsection: Figure 7.6 - Error Recovery · In section 7.2.2.6, ExecutionContext, replace Figure 7.5, ExecutionContext states, with the following: Figure <number> - ExecutionContextThe state machine of an ExecutionContext has two parts. The behavior of the ExecutionContext itself is defined by the upper region in the above figure. The behavior of the RTCs that participate in the context is defined by the lower region. The contents of that region are displayed in more detail in Figure <cross reference to ExecutionContext-Managed Lifecycle > in Section <cross reference to LightweightRTObject section>.
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10479: Sequence diagrams for activation/deactivation should be added (rtc-ftf)

Click
here for this issue's archive.
Source: Shibaura Institute of Technology (Mr. Takeshi Sakamoto, sakamoto(at)globalassist.co.jp)
Nature: Uncategorized Issue
Severity: Minor
Summary:
everity: Support Text

Disposition: Resolution Proposed

Summary

I think it is difficult to understand behavior. I think it would be better that sequence diagrams is added.

Proposed Resolution

[attachment:rtc-activate-sequence.png] [[BR]] Activate

[attachment:rtc-activate-sequence2.png] [[BR]] Activate (Updated)

[attachment:rtc-deactivate-sequence2.png] [[BR]] Deactivate

Discussion

According to the update of the state machine diagram in FTF-2 issue, Activate sequence diagrams was updated.

-- NoriakiAndo, 2006/12/4

Should callbacks be executed in the thread of the method that triggered the callback or in the thread of the execution context they refer to? For example, if I call myContext::activate_component(myComp) and the activation fails, should on_aborting be called in my calling thread or in the thread represented by myContext?

    * Can the choice of thread be left to the implementation?
    * Can the observed concurrency be left to the implementation? That is, if activate_component returns with a failure, can I assume that on_aborting has already been called? 

I would propose that:

    * The specification already says that the relationship between execution contexts and physical threads is implementation-defined. Therefore, components should not make any assumption about what thread they are called from. The callback argument identified the relevant context; that is the only important thing.
    *

      The observed behavior of the callback should be synchronous with the method that resulted in the callback. For example, if I call activate_component, I can assume that on_activate will have finished before activate_component returns. This behavior simplifies error propagation and the programming model in general. 

-- RickWarren, 2006/12/4

Resolution: Add the non-normative example diagrams as described below.
Revised Text: · In section 7.2.2.6.6, activate_component, the following sentences and diagrams should be added after the "Description" subsection. SemanticsThe following figure is a non-normative example sequence diagram for activate_component. Figure 7.8 - ExecutionContextOperations::activate_component · In section 7.2.2.6.7, deactivate_component, the following sentences and diagrams should be added after the "Description" subsection. SemanticsThe following figure is a non-normative example sequence diagram for deactivate_component(). Figure 7.9 - ExecutionContextOperations::deactivate_component
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10480: Data flow diagrams (rtc-ftf)

Click
here for this issue's archive.
Source: Shibaura Institute of Technology (Mr. Takeshi Sakamoto, sakamoto(at)globalassist.co.jp)
Nature: Uncategorized Issue
Severity: Minor
Summary:
Summary

Like Figure 7.2 Lightweight RTC package,I think it would be better that Figure 7.6 Data flow type be divided into several diagrams.

In terms of the Stereotype description, dataFlowComposite (Page 33) and dataFlowParticipant (Page 35), since there is a description, "The dataFlowComposite stereotype may only be applied to a component that is also extended by the lightweightRTComponent stereotype or some subtype thereof" in Constraints, I think it would be better to take over the lightweightRTComponent stereotype. If lightweightRTComponent is taken over, the stereotype that takes over the characteristics of lightweightRTComponent is only one, either dataFlowComposite or dataFlowParticipant, and the description in Constraints can be deleted.

Proposed Resolution

[attachment:data-flow-metamodel.png] [[BR]] Meta-Model

[attachment:data-flow-stereotypes.png] [[BR]] Stereotypes

Discussion

I agree with the reorganization of the diagrams. I'm not sure about the stereotypes, though. By "take over the lightweightRTComponent stereotype," you mean define dataFlow* as subtypes of lightweightRTComponent? I think there may be a problem with that when multiple stereotypes are used. If a component has both dataFlowParticipant and dataFlowComposite, the lightweightRTComponent stereotype will really be there twice. I don't know whether that's a problem in UML, but when it is mapped to IDL and then to code, it will result in diamond inheritance, which can be inconvenient.

-- RickWarren, 2006/11/27

Sakamot-san's comment.

Although two stereotypes have inheritance relation in stereotypes definition, they need not have inheritance relation in implementation.

    * The stereotype definition defines how the meta-class (in our case, it is Component) should be extended.
    * The inheritance (or generalization) makes the feature that is defined in the upper-class take over to a lower-classes as it is.
    * According to the stereotype inheritance, the lower-classes can use extension method that is defined in upper-class. 

Since the stereotype defines only meta-classes extension, it does not limit implementation or PSM.

-- NoriakiAndo, 2006/12/4

Resolution: Unify the dataFlowParticipant and dataFlowComposite stereotypes. The combined stereotype will extend the lightweightRTComponent stereotype directly.
Revised Text: · In section 7.3.1, Periodic Sampled Data Processing, the sentence "In a hierarchical component-based application, data flow consists of two roles:" and the bulleted list that follows should be replaced with the following sentences. A periodic execution context executes data flow components periodically in a well-defined order relative to one another. A data flow component may also be a composite component containing other data flow components. In this way, sampled data processing may be decomposed to an arbitrary level of hierarchy. · In section 7.3.1, Periodic Sampled Data Processing, the following figure should replace Figure 7.6, Data Flow Types. Figure < number > - Periodic Sampled Data Processing Stereotypes · In section 7.3.1, below Figure7.6, Data Flow Type, the following sentence "An RTC developer declares a particular RTC to be a data flow composite and/or participant by extending it with the stereotypes dataFlowComposite and/or dataFlowParticipant respectively." should be replaced with "An RTC developer declares a particular RTC to be a data flow component by extending it with the stereotype dataFlowComponent." · In section 7.3.1, Periodic Sampled Data Processing, the following figure should replace Figure 7.7, Data Flow Example. Figure < number > - Periodic Sampled Data Processing M1 Illustration · Rename section 7.3.1.1 dataFlowComposite, to dataFlowComponent. · In section 7.3.1.1 dataFlowComposite (now dataFlowComponent), replace the sentence under Description with the following: "The dataFlowComponent stereotype may be applied to a component type to indicate that its instances should be executed in sorted order by a periodic execution context." · In section 7.3.1.1 dataFlowComposite (now dataFlowComponent), the first constraint should be deleted. · In section 7.3.1.1 dataFlowComposite (now dataFlowComponent), the second constraint should be rewritten as "An instance of a component extended by the dataFlowComponent stereotype must participate in at least one execution context of kind PERIODIC, which shall also be used for the execution of any contained data flow components." · In section 7.3.1.1 dataFlowComposite (now dataFlowComponent), a third constraint should be added: "A component extended by dataFlowComponent must realize the interface DataFlowComponentAction." · In section 7.3.1.1 dataFlowComposite (now dataFlowComponent), the following unnumbered subsection should be added after Description subsection. Generalizations· lightweightRTComponent · In section 7.3.1.1.1 Execution Sorting, rename "data flow composite" and "data flow participant" to "data flow component". · In section 7.3.1.1.1, Execution Sorting, the following figure should replace Figure 7.8, Data flow composite containing data flow participants. Figure < number > - Hierarchical Data flow Component · In section 7.3.1.1.2 Two-Pass Execution, rename "data flow participant" to "data flow component". · In section 7.3.1.1.2, Two-Pass Execution, the following figure should replace Figure Two-pass Execution Example. (This figure was added by the resolution to issue 10481.) Figure < number > - Two-pass Execution Example · In section 7.3.1.1.2, Two-Pass Execution, the following figure should replace Figure ExecutionContextOperations::set_rate Example. (This figure was added by the resolution to issue 10481.) Figure < number > - ExecutionContextOperations::set_rate Example · Remove section 7.3.1.2 dataFlowParticipant. · In section 7.3.1.3 DataFlowComponentAction, Description, replace the sentence with the following: "DataFlowComponentAction is a companion to ComponentAction (see Section 7.2.2.5<cross reference to ComponentAction>) that provides additional callbacks for intercepting the two execution passes defined in Section 7.3.1.1.2<cross reference to Two-Pass Execution>." · In section 8.2.2, Stereotypes, replace the dataFlowComposite and dataFlowParticipant bullets with a single bullet "dataFlowComponent is represented by the DataFlowComponent interface." · In RTC.idl and in Annex A, remove the definition of DataFlowComposite and rename DataFlowParticipant to DataFlowComponent. · Subsequent sections and Figure numbers should be renumbered accordingly.
Actions taken:

Issue 10481: Sequence diagrams for Data Flow Types should be added (rtc-ftf)

Click
here for this issue's archive.
Source: Shibaura Institute of Technology (Mr. Takeshi Sakamoto, sakamoto(at)globalassist.co.jp)
Nature: Uncategorized Issue
Severity: Minor
Summary:
ource: Technologic Arts (Takeshi Sakamoto, <tsakamoto AT SPAMFREE tech-arts DOT co DOT jp>)

Severity: Supporting Text

Disposition: Resolution Proposed

Summary

Just like RTC, I think it is difficult to understand behavior.

Proposed Resolution

I think it would be better that following sequence diagrams is added.

[attachment:periodic-sequence.png]
Steady state

[attachment:periodic-set-rate.png]
Set rate

Discussion

Revised Text

Resolution: I think it would be better that following sequence diagrams is added.
Revised Text: · In section 7.3.1.1.2, Two-Pass Execution, the following sentences and diagrams should be added to the end. The following figures are non-normative example sequence diagrams for two-pass execution and ExecutionContextOperations::set_rate. Figure 7.14 - Two-pass Execution Example Figure 7.15 - ExecutionContextOperations::set_rate Example
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10482: Stimulus response execution diagrams (rtc-ftf)

Click
here for this issue's archive.
Source: Shibaura Institute of Technology (Mr. Takeshi Sakamoto, sakamoto(at)globalassist.co.jp)
Nature: Uncategorized Issue
Severity:
Summary:
Source: Technologic Arts (Takeshi Sakamoto, <tsakamoto AT SPAMFREE tech-arts DOT co DOT jp>)

Severity: Supporting Text

Disposition: Resolution Proposed

Summary

Like Figure 7.6 Data type flow, I suggest it would be better that Figure 7.9 Stimulus response execution be divided into several diagrams.

Proposed Resolution

[attachment:stim-response-metamodel.png]
Meta-Model

[attachment:stim-response-stereotypes.png]
Stereotypes

Discussion

Revised Text

Resolution: Add diagrams as described below. Simplify the relationships between the lightweightRTComponent stereotype and the fsm and fsmParticipant stereotypes as described below. Add missing programmatic APIs for sending stimuli to state machine components.
Revised Text: · In section 7.3.2, Stimulus Response Processing, the following figure should replace Figure7.9, Stimulus Response Execution. Figure < number > - Stimulus Response Processing Stereotypes · In section 7.3.2, Stimulus Response Processing, the following figure should replace Figure 7.10, FSM UML example. Figure < number > - Stimulus Response Processing M1 Illustration · In section 7.3.2.1 fsm, the following unnumbered subsection should be added after Semantics subsection. Generalizations· lightweightRTComponent · In section 7.3.2.1 fsm, the first constraint should be deleted. · In section 7.3.2.1, fsm, a new constraint should be added: "A component extended by fsm must realize the interface FsmObject." · In section 7.3.2.2 fsmParticipant, the following unnumbered subsection should be added after Description subsection. Generalizations· lightweightRTComponent · In section 7.3.2.2 fsmParticipant, the first constraint should be deleted. · Rename FsmComponentAction to FsmParticipantAction. · In section 7.3.2.2 fsmParticipant, rename FsmComponentAction to FsmParticipantAction. · Rename section 7.3.2.3 FsmComponentAction, to FsmParticipantAction. Make the same replacement under Description and in the title of the Operation table in the same numbered section. · In RTC.idl and in Annex A, rename the IDL definition of FsmComponentAction to "FsmParticipantAction" including its usage in the definition of FsmParticipant. · Rename on_transition to on_action. · In section 7.2.2.5.8 on_error, rename FsmComponentAction::on_transition to FsmParticipantAction::on_action. · In section 7.3.2.2 fsmParticipant, rename on_transition to on_action. · In the Operation table in section 7.3.2.3, FsmComponentAction, rename on_transition to on_action. · Rename section 7.3.2.3.1 on_transition, to on_action. · In RTC.idl and in Annex A, rename the IDL definition of on_transition to "on_action". · In section 7.3.2.2, fsmParticipant, the following figure should replace Figure 7.11 , FSM participant defines state transition Behavior. Figure < number > - FSM Participant Defines State Transition Behavior · In section 7.3.2, Stimulus Response Processing, add the following paragraph before Figure7.9, Stimulus Response Execution. Stimulus response models can be inspected and modified dynamically using types in the Introspection package. The correspondence between state machine transitions, state entries, and state exits in an FSM and FSM participants is described in an FsmProfile (see Section <cross reference to FsmProfile section>) and its FsmBehaviorProfiles (see Section <cross reference to FsmBehaviorProfiles section>) in the Introspection package (see Section <cross reference to Introspection section>). This data is provided by an FsmService interface (see Section <cross reference to FsmService section>) in the Introspection package. · Add the following section immediately following section 7.3.2.1, fsm. 7.3.2.2 FsmObjectDescriptionThe FsmObject interface allows programs to send stimuli to a finite state machine, possibly causing it to change states.OperationsFsmObject no attributes operations send_stimulus ReturnCode_t message String exec_handle ExecutionContextHandle_t 7.3.2.2.1 send_stimulusDescriptionSend a stimulus to an FSM that realizes this interface.SemanticsIf the stimulus corresponds to any outgoing transition of the current state, that transition shall be taken and the state shall change. Any FSM participants associated with the exit of the current state, the transition to the new state, or the entry to the new state shall be invoked. If the stimulus does not correspond to any such transition, this operation shall succeed but have no effect.If the given execution context is a non-nil reference to a context in which this FSM participates, the transition shall be executed in that context. If the argument is nil, the FSM shall choose an EVENT_DRIVEN context in which to execute the transition. If the argument is non-nil, but this FSM does not participate in the given context, this operation shall fail with ReturnCode_t::BAD_PARAMETER.Constraints· The given execution context shall be of kind EVENT_DRIVEN. · In section 7.4.1, Resource Data Model, the following figure should replace Figure 7.15, Introspection resource data model ComponentProfile. (The following figure is also modified by the resolution to issue 10487.) Figure < number > - Introspection Resource Data Model · Add the following section immediately following section 7.4.1.6.5, properties. 7.4.1.7 FsmProfileDescriptionThe FsmProfile describes the correspondence between an FSM and its contained FSM participants. This Profile is necessary for Stimulus Response Processing.AttributesFsmProfile attributes behavior_profiles FsmBehaviorProfile[] no operations 7.4.1.7.1 behavior_profilesDescriptionThis attribute lists the correspondences between an FSM and its contained FSM participants.7.4.1.8 FsmBehaviorProfileDescriptionFsmBehaviorProfile represents the association of an FSM participant with a transition, state entry, or state exit in an FSM.SemanticsThe assignment of identifiers to particular transitions, state entries, or state exits is implementation-dependent.AttributesFsmBehaviorProfile attributes action_component FsmParticipantAction id UniqueIdentifier no operations 7.4.1.8.1 action_componentDescriptionThis attribute stores a reference to the FSM participant that is invoked when the containing Fsm receives a message distinguished by id.7.4.1.8.2 idDescriptionThis attribute stores the message identifier. · In section 7.4.2, Stereotypes and Interfaces, the following figure should replace Figure 7.16, Introspection interface. (The following figure is also modified by the resolution to issue 10487, 10488 and 10492.) Figure < number > - Introspection M1 Illustration · Add the following section immediately following section 7.4.2.4.3, remove. 7.4.2.5 FsmServiceDescriptionThe FsmService interface defines operations necessary for Stimulus Response Processing as an SDO service.Generalizations· SDOService[SDO]OperationsFsmService no attributes operations get_fsm_profile FsmProfile set_fsm_profile ReturnCode_t fsm_profile FsmProfile 7.4.2.5.1 get_fsm_profileDescriptionGet the current state of the FSM.SemanticsModifications to the object returned by this operation will not be reflected in the FSM until and unless set_fsm_profile is called.7.4.2.5.2 set_fsm_profileDescriptionThis operation will be used to modify the behavior of an FSM as described in Stimulus Response Processing. · Add the following interface to the IDL in RTC.idl and in Annex A. interface FsmObject { ReturnCode_t send_stimulus( in string message, in ExecutionContextHandle_t exec_handle); }; · Add the following definitions to the IDL in RTC.idl and in Annex A. struct FsmBehaviorProfile { FsmParticipantAction action_component; UniqueIdentifier id; }; typedef sequence<FsmBehaviorProfile> FsmBehaviorProfileList; struct FsmProfile { FsmBehaviorProfileList behavior_profiles; }; · Add the following interface to the IDL in RTC.idl and in Annex A last. interface FsmService : SDOPackage :: SDOService { FsmProfile get_fsm_profile(); ReturnCode_t set_fsm_profile(in FsmProfile fsm_profile); };
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10483: Modes of operation diagrams (rtc-ftf)

Click
here for this issue's archive.
Source: Shibaura Institute of Technology (Mr. Takeshi Sakamoto, sakamoto(at)globalassist.co.jp)
Nature: Uncategorized Issue
Severity:
Summary:
Source: Technologic Arts (Takeshi Sakamoto, [[MailTo(tsakamoto AT SPAMFREE tech-arts DOT co DOT jp)]])

Severity: Supporting Text

Disposition: Resolution Proposed

Summary

Like Figure 7.6 Data type flow, I think it would be better that Figure 7.12 Mode of operation be divided into several diagrams.

Proposed Resolution

[attachment:modes-metamodel.png] [[BR]] Meta-Model

[attachment:modes-stereotypes.png] [[BR]] Stereotypes

Discussion

Revised Text

Resolution: Add diagrams as described below. Also, the relationships among the stereotypes should be changed in the same way as the Data Flow stereotypes, as described in issue 10480.
Revised Text: · In section 7.3.3, Modes of Operation, the following figure should replace Figure7.12, Modes of operation. Figure < number > - Mode of Operation Stereotypes Figure < number > - Mode of Operation M1 Illustration · In section 7.3.3.1 multiModeComponent, the following unnumbered subsection should be added after Description subsection. Generalizations· lightweightRTComponent · In section 7.3.3.1 multiModeComponent, the first constraint should be deleted. · In section 7.3.3.3, ModeCapable, the following figure should replace Figure7.13, Mode change state machine. Figure < number > - multiModeComponent State Machine
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10486: Stimulus response and modes of operation sequence diagrams should be added (rtc-ftf)

Click
here for this issue's archive.
Source: Shibaura Institute of Technology (Mr. Takeshi Sakamoto, sakamoto(at)globalassist.co.jp)
Nature:
Severity:
Summary:
OMG ISSUE 10484: Stimulus response and modes of operation sequence diagrams should be added

Source: Technologic Arts (Takeshi Sakamoto, [[MailTo(tsakamoto AT SPAMFREE tech-arts DOT co DOT jp)]])

Severity: Supporting Text

Disposition: New

Summary

Just like RTC, I think it is difficult to understand behavior about Stimulus Response Excution and Modes of operation.

Discussion

Resolution

Revised Text

Resolution: Add diagrams as described below.
Revised Text: n section 7.3.2.2, fsmParticipant, the following text and figure should be added after Figure7.11, FSM participant defines state transition Behavior. SemanticsThe following figure is a non-normative example sequence diagram for Stimulus Response Processing. Figure < number > - Stimulus Responding Processing Execution Example · In section 7.3.3.3, ModeCapable, the following sentence and figure should be added after Figure 7.13, Mode change state machine. The following figure shows a mode change on a component that is multi-mode and also a data flow component. The mode change is not immediate, so it waits for the next "tick" of the execution context. This is a non-normative example. Figure < number > - Set Mode Non-Immediate ExampleThe following figure shows the same mode change, but this time it happens immediately instead of waiting for the execution context. Figure < number > - Set Mode Immediate Example
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10487: Introspection interfaces diagram (rtc-ftf)

Click
here for this issue's archive.
Source: Shibaura Institute of Technology (Mr. Takeshi Sakamoto, sakamoto(at)globalassist.co.jp)
Nature: Uncategorized Issue
Severity:
Summary:
Source: Technologic Arts (Takeshi Sakamoto, [[MailTo(tsakamoto AT SPAMFREE tech-arts DOT co DOT jp)]])

Severity: Supporting Text

Disposition: Resolution Proposed

Summary

Like Figure 7.2 Lightweight RTC package,I think it would be better that Figure 17 Introspection interfaces be divided into Meta model and the Interface description.

Proposed Resolution

[attachment:introspection-metamodel.png] [[BR]] Meta-Model

Discussion

Revised Text

Resolution: Add diagrams as described below. The interface Port has a confusing name, because it is the same as the Port type from UML itself. Rename the interface.
Revised Text: n section 7.4.2, Stereotypes and Interface, the following figure should be added immediately before Figure7.16, Introspection interface. Figure < number > - Introspection Stereotypes · Rename Figure7.16, Introspection interfaces, to "Introspection M1 Illustration". (See resolution for Issue 10482.) · Rename Port to PortService. · In Figure 7.14, Introspection overview, change the return type of get_ports from Port[] to PortService[]. (The following figure is also modified by the resolution to issue 10492.) Figure < number > - Introspection overview · In Figure 7.15, Introspection resource data model, change the type of PortProfile::port_ref to PortService. Make the same change in Annex A and RTC.idl. Change the type of ConnectorProfile::ports to PortService[]. · In section 7.4.1.2, PortProfile, change the type of port_ref in the attributes table to PortService. In the port_ref section below, 7.4.1.2.3, change Port to PortService. · Section 7.4.1.2.4, connection_profiles, is named incorrectly. Rename it to connector_profiles. In the Description text, replace Port with PortService. · Rename Port to PortService in the attributes table in 7.4.1.5, ConnectorProfile. · In Figure 7.16, Introspection interfaces(now "Introspection M1 Illustration"), in section 7.4.2, Stereotypes and interfaces, rename the depiction of Port to "PortService" and change the return type of RTObject::get_ports to PortService[]. · In the operations table in section 7.4.2.2, RTObject, replace "Port" with "PortService" in the return type of get_ports. · Rename section 7.4.2.3 Port to "PortService". In the first sentence of the Description in that section, replace "An instance of the Port interface…" to "An instance of the PortService interface…".Make the same replacement under Semantics ("port" becomes "port service"), and in the title of the Operations table in the same numbered section. · Change Port to PortService in the Descriptions in section 7.4.2.3.1, get_port_profile, section 7.4.2.3.2, get_connector_profiles, and section 7.4.2.3.6, disconnect_all. · Rename the forward declaration of the Port interface, and the interface definition itself, to PortService in Annex A and RTC.idl. · Change the definition of PortList in Annex A and RTC.idl to "typedef sequence<PortService> PortServiceList;". Update the declarations of ConnectorProfile::ports and RTObject::get_ports accordingly.
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10488: Sequence diagrams for Introspection should be added (rtc-ftf)

Click
here for this issue's archive.
Source: Shibaura Institute of Technology (Mr. Takeshi Sakamoto, sakamoto(at)globalassist.co.jp)
Nature: Uncategorized Issue
Severity:
Summary:
ource: Technologic Arts (Takeshi Sakamoto, [[MailTo(tsakamoto AT SPAMFREE tech-arts DOT co DOT jp)]])

Severity: Supporting Text

Disposition: Resolution Proposed

Summary

Just like RTC, I think it is difficult to understand behavior. I think it would be better that following sequence diagram is added.

Proposed Resolution

[attachment:introspection-connect-sequence.png] [[BR]] Connect

[attachment:introspection-disconnect-sequence.png] [[BR]] Disconnect

Discussion

Revised Text

Resolution: Add diagrams as described below.
Revised Text: · Add the following operations to the depiction of PortService (This interface was renamed by the resolution to issue10487.) in Figure 7.16, Introspection interface, in section 7.4.2, Stereotypes and Interfaces. + notify_connect(ConnectorProfile) : ReturnCode_t + notify_disconnect(UniqueIdentifier) : ReturnCode_t · Add the following rows to the operations table in the PortService section (renamed by the resolution to issue 10487), 7.4.2.3. The new rows should be inserted last. notify_connect ReturnCode_t inout connector_profile ConnectorProfile notify_disconnect ReturnCode_t connector_id UniqueIdentifier · In section 7.4.2.3.4 connect, Semantics section is replaced with the following section: Semantics A ConnectorProfile has a sequence of port references. This port invokes the notify_connect operation of one of the ports included in the sequence. It follows that the notification of connection is propagated by the notify_connect operation with ConnectorProfile. This operation returns ConnectorProfile return value and returns ReturnCode_t as return codes. Figure < number > - PortService::connect Example · Replace the contents of section 7.4.2.3.5, disconnect, with the following: Description This operation destroys the connection between this port and its peer ports using the ID that was given when the connection was established. Semantics This port invokes the notify_disconnect operation of one of the ports included in the sequence of the ConnectorProfile stored when the connection was established. The notification of disconnection is propagated by the notify_disconnect operation. Figure < number > - PortService::disconnect Example · Add the following sections after section 7.4.2.3.6, disconnect_all: 7.4.2.3.7 notify_connect Description This operation notifies this PortService of the connection between its corresponding port and the other ports and propagates the given ConnectionProfile. Semantics A ConnectorProfile has a sequence of port references. This PortService stores the ConnectorProfile and invokes the notify_connect operation of the next PortService in the sequence. As ports are added to the connector, PortService references are added to the ConnectorProfile and provided to the caller. In this way, notification of connection is propagated with the ConnectorProfile. 7.4.2.3.8 notify_disconnect Description This operation notifies a PortService of a disconnection between its corresponding port and the other ports. The disconnected connector is identified by the given ID, which was given when the connection was established. Semantics This port invokes the notify_disconnect operation of the next PortService in the sequence of the ConnectorProfile that was stored when the connection was established. As ports are disconnected, PortService references are removed from the ConnectorProfile. In this way, the notification of disconnection is propagated by the notify_disconnect operation. · Update the PortService::connect operation in the IDL in RTC.idl and Annex A: interface PortService : SDOPackage ::SDOService { // … ReturnCode_t connect(inout ConnectorProfile connector_profile); // }; · Add the following operations to the IDL in RTC.idl and Annex A: interface PortService : SDOPackage ::SDOService { // … disconnect_all and other operations ReturnCode_t notify_connect(inout ConnectorProfile connector_profile); ReturnCode_t notify_disconnect(in UniqueIdentifier connector_id); };
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10489: Connector End omitted from diagram (rtc-ftf)

Click
here for this issue's archive.
Source: Shibaura Institute of Technology (Mr. Takeshi Sakamoto, sakamoto(at)globalassist.co.jp)
Nature: Uncategorized Issue
Severity:
Summary:
Source: Technologic Arts (Takeshi Sakamoto, [[MailTo(tsakamoto AT SPAMFREE tech-arts DOT co DOT jp)]])

Severity: Supporting Text

Disposition: Resolution Proposed

Summary

At the Figure 7.1 Simplified depiction of components and their constituents from [UML], it describes Meta model related to Component but only Connector End is omitted as an element. Do we need to add Connector End? Was Connector End omitted because of the relationship with Profile?

Proposed Resolution

[attachment:uml-components.png]

Discussion

I think I created that diagram. I left out ConnectorEnd because I wanted to include only those things that were discussed in the specification. Component is necessary, of course. Property is the supertype of Port, but is also used to represent contained component instances. Ports have Interfaces, and Connectors join them together. ConnectorEnd is not mentioned in this specification, so I did not think it was necessary to show it. Do you think it is important? -- RickWarren, 2006/12/1

Revised Text

Resolution: ConnectorEnd is omitted for the sake of simplicity because it is not discussed in this specification.
Revised Text: none
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10490: Inconsistent definition of LifeCycle::reset (rtc-ftf)

Click
here for this issue's archive.
Source: Shibaura Institute of Technology (Mr. Takeshi Sakamoto, sakamoto(at)globalassist.co.jp)
Nature: Uncategorized Issue
Severity:
Summary:
ource: Technologic Arts (Takeshi Sakamoto, [[MailTo(tsakamoto AT SPAMFREE tech-arts DOT co DOT jp)]])

Severity: Minor

Disposition: Resolution Proposed

Summary

Which is correct as for the definition of !LifeCycle::reset?

reset(ExecutionContext) : ReturnCode_t

...as in Figure 7.2 (Page 11) and Table (Page 15)

Or:

reset() : ReturnCode_t

...as in RTC IDL (Page 75) and mars/2006-09-34 (Example C++ header)

Discussion

Resetting is relative to a particular execution context (see the lifecycle state machine), so I think it has to be the former:

reset(ExecutionContext) : ReturnCode_t

-- RickWarren, 2006/11/27

Resolution

There has been a suggestion to move reset to ExecutionContext to make it similar to activate_component, deactivate_component, and get_component_state. The new operation would be called reset_component. The ExecutionContext would therefore be a kind of "manager" for the component's per-context state. -- RickWarren, 2006/12/1

Revised Text

Resolution: Resetting a component is relative to a given execution context. This behavior should be mediated by the context, just like component activation/deactivation. Move the reset operation to ExecutionContextOperations as reset_component.
Revised Text: · In figure 7.2, Lightweight RTC Package, in section 7.2.2, Components, remove the reset operation from LifeCycle. Add the operation "reset_component(LightweightRTObject) : ReturnCode_t" to ExecutionContextOperations. (The latter was added to figure 7.3 by the resolution to issue 10601.) · In figure 7.4, RTC lifecycle, in section 7.2.2.3, LifeCycle, replace the trigger LifeCycle::reset with ExecutionContextOperations::reset_component. · Remove the "reset" row from the operations table in section 7.2.2.3, LifeCycle. · Move section 7.2.2.3.4, reset, immediately after 7.2.2.6.7, deactivate_component, and rename it to "reset_component". · In RTC.idl and in Annex A, remove the operation LifeCycle::reset. Add the following operation: interface ExecutionContext { // … (after deactivate_component) ReturnCode_t reset_component(in LightweightRTObject comp); // … };
Actions taken:
December 5, 2006: received issue
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10491: Inconsistent definition of ComponentAction callbacks (rtc-ftf)

Click
here for this issue's archive.
Source: Shibaura Institute of Technology (Mr. Takeshi Sakamoto, sakamoto(at)globalassist.co.jp)
Nature: Uncategorized Issue
Severity:
Summary:
Source: Technologic Arts (Takeshi Sakamoto, [[MailTo(tsakamoto AT SPAMFREE tech-arts DOT co DOT jp)]])

Severity: Minor

Disposition: Resolution Proposed

Summary

Which is correct as for the on_aborting and on_reset callbacks on ComponentAction?

on_aborting(ExecutionContext) : void

Figure 7.2 (Page 11)

on_aborting(ExecutionContext) : ReturnCode_t

Table (Page 19) and RTC IDL (Page 76) and mars/2006-09-34 (Example C++ header)

on_reset(ExecutionContext) : void

Figure 7.2 (Page 11)

on_reset(ExecutionContext) : ReturnCode_t

Table (Page 19) and RTC IDL (Page76) and mars/2006-09-34 (Example C++ header)

Discussion

Is it useful for on_aborting to return an error if the component is already transitioning to an error state? I suppose the middleware implementation could log it.... -- RickWarren, 2006/11/27

Resolution

I would propose that all callbacks, including on_aborting and on_error, should return ReturnCode_t instead of void to be consistent. The middleware implementation may choose to log the error or do something else; no particular behavior is required. -- RickWarren, 2006/12/1

Do you mean that activate_component only returns the result of on_activate, and for example on_aborting does not relate with activate_component operation call? The specification has the following three sets of events and callbacks.

    *

      activate_component event only assumes that on_activate has finished before it returns.
    *

      deactivate_component event only assumes that on_deactivate has finished before it returns.
    *

      reset_component event only assumes that on_reset has finished before it returns. (If reset_component operation in FTF-12 is adopted.) 

If so, I agree the above Rick's proposal. I think that the more details beyond it should be left as implementation-defined matter.

-- NoriakiAndo, 2006/12/4

Revised Text

Resolution: The return types of the ComponentAction callbacks are addressed in issue 10477, which updates the figure in question, Figure 7.2. With respect to that matter, this issue shall be considered a duplicate. The remainder of this issue is addressed as follows: · activate_component assumes that on_activate has finished before it returns. · deactivate_component assumes that on_deactivate has finished before it returns. · reset_component assumes that on_reset has finished before it returns. · Remove extra arguments from on_transition and on_mode_changed
Revised Text: · The following text should be added immediately before Constraints in section 7.2.2.6.6, activate_component: SemanticsThe callback on_activate shall be called as a result of calling this operation. This operation shall not return until the callback has returned, and shall result in an error if the callback does. · The following text should be added immediately before Constraints in section 7.2.2.6.7, deactivate_component: SemanticsThe callback on_deactivate shall be called as a result of calling this operation. This operation shall not return until the callback has returned, and shall result in an error if the callback does. · In the adjacent section reset_component (moved under 7.2.2.6 by issue 10490), the first sentence under Semantics reads: "The ComponentAction::on_reset callback shall be invoked." This sentence should be followed by this new sentence: This operation shall not return until the callback has returned, and shall result in an error if the callback does. · In the definition of the FsmComponentAction interface in RTC.idl and in Annex A, remove the argument "in LightweightRTObject comp" from the on_transition method. · In the definition of the MultiModeComponentAction interface in RTC.idl and in Annex A, remove the argument "in LightweightRTObject comp" from the on_mode_changed method.
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10492: Component can't reset another component (rtc-ftf)

Click
here for this issue's archive.
Source: DECA (Mr. Rick Warren, )
Nature: Uncategorized Issue
Severity:
Summary:
Source: RTI (Rick Warren, [[MailTo(rick DOT warren AT SPAMFREE rti DOT com)]])

Severity: Minor

Disposition: Resolution Proposed

Summary

The message to reset a component will usually come from another component. If a component resets itself, it can know which context has the error, so there is no problem. But if a different component wants to reset it, there is no way for it to know which context is the correct one.

Discussion

Resolution

I think we can solve this problem with a new method:

ExecutionContext[] LifeCycle::get_contexts()

The code would look something like this:

ExecutionContext[] contexts = myComponent.get_contexts();
//...
if (contexts[i].get_component_state(myComponent) == ERROR_STATE) {
    myComponent.reset(contexts[i]);
}

The usage is demonstrated in the following sequence diagram (which also shows a proposed move of the reset() operation from the component itself to the execution context -- thanks, Sakamoto-san):

[attachment:rtc-reset-sequence.png]

-- RickWarren, 2006/12/1

Revised Text

Resolution: It is already possible to determine the state of a component in a given context with the ExecutionContextOperations::get_component_state operation. Therefore, the only functionality that is missing is the ability to learn in which context(s) a component participates and which context is associated with which handle. Add operations to provide that information. The existing method RTObject::get_execution_context_services provides a subset of the functionality proposed here. It should be replaced with a more complete functionality.
Revised Text: · Add operations to LightweightRObject: · Add the following rows to the Operations table in section 7.2.2.2, LightweightRTObject: get_owned_contexts ExecutionContextOperations[] get_participating_contexts ExecutionContextOperations[] get_context_handle ExecutionContextHandle_t context ExecutionContext · Add the following subsections to the end of section 7.2.2.2, LightweightRTObject: 7.2.2.2.8 get_owned_contextsDescriptionThis operation returns a list of all execution contexts owned by this RTC.7.2.2.2.9 get_participating_contextsDescriptionThis operation returns a list of all execution contexts in which this RTC participates.SemanticsEach call to attach_context causes the provided context to be added to this list. Each call to detach_context causes the provided context to be removed from this list.7.2.2.2.10 get_context_handleDescriptionThis operation returns a handle that is associated with the given execution context.SemanticsThe handle returned bt this operation is same as the handle returned by attach_context. · Add the above operations to Figure 7.3, Lightweight RTC M1 Illustration. (The following figure is also modified by the resolution to issue 10492.) Figure 7.3 - Lightweight RTC M1 Illustration · Add the following to the IDL in RTC.idl and Annex A: typedef sequence<ExecutionContext> ExecutionContextList; interface LightweightRTObject : ComponentAction { // … ExecutionContextList get_owned_contexts (); ExecutionContextList get_participating_contexts (); ExecutionContextHandle_t get_context_handle ( in ExecutionContext context); // … activate_component and other operations }; · Add a sequence diagram illustrating how a RTC can be reset. In section 7.2.2.6.10, reset_component (introduced by the resolution to issue 10490), the Semantics subsection has two paragraphs. Add the following diagram in between them: Figure <number> - ExecutionContextOperations::reset_component · Remove RTObject::get_execution_context_services: it is obsolete. · Remove the operation from figure 7.22, Introspection overview, at the beginning of section 7.4, Introspection. · Remove the operation from figure 7.24, Introspection interfaces, at the beginning of section 7.4.2, Stereotypes and Interfaces. · Remove the corresponding row from the operations table in section 7.4.2.2, RTObject. · Remove section 7.4.2.2.3, get_execution_context_services. · Remove the operation's declaration from the IDL definition of RTObject in RTC.idl and in Annex A of the specification. · Remove ExecutionContextService::add() and remove() from Annex A and from RTC.idl. (These operations were removed from the PIM by issue 10496, but were accidentally not removed from the PSM.) · Specify that the execution contexts provided for an introspective component should be of type ExecutionContextService. Add the following to section 7.4.2.2, RTObject, just above the Operations subsection: Constraints· Any execution contexts returned from the inherited methods LightweightRTObject::get_owned_contexts and LightweightRTObject::get_participating_contexts shall be of type ExecutionContextService.
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10493: Clarify contract between execution context and non-initialized components (rtc-ftf)

Click
here for this issue's archive.
Source: DECA (Mr. Rick Warren, )
Nature: Uncategorized Issue
Severity: Minor
Summary:
Source: RTI (Rick Warren, [[MailTo(rick DOT warren AT SPAMFREE rti DOT com)]])

Severity: Minor

Disposition: Resolution Proposed

Summary

The behavior of various !ExecutionContext methods (start, stop, activate_component, deactivate_component) are not fully specified in the case where a component has either (a) never been initialized, or (b) been finalized.

Discussion

Resolution

The behavior should be as follows:

    * A context should not be allowed to start until all of its components are initialized. A failure should be indicated with PRECONDITION_NOT_MET.
    * Before a component can be finalized, all contexts in which it participates must be stopped. A failure should be indicated with PRECONDITION_NOT_MET.
    * Attempting to activate or deactivate a component that is not initialized or has been finalized should fail with PRECONDITION_NOT_MET. 

The following sequence diagrams are examples (thanks, Sakamoto-san):

[attachment:rtc-initialize-sequence.png] [[BR]] Initialize and start

[attachment:rtc-finalize-sequence.png] [[BR]] Stop and Finalize

-- RickWarren, 2006/12/1

Revised Text

Resolution: The behavior should be as follows: · A context should not be allowed to start until all of its components are initialized. A failure should be indicated with PRECONDITION_NOT_MET. · Before a component can be finalized, it must be detached from all contexts in which it participates. A failure should be indicated with PRECONDITION_NOT_MET. · Attempting to activate or deactivate a component that is not initialized or has been finalized should fail with BAD_PARAMETER.
Revised Text: · In section 7.2.2.3.2, finalize, there is a Constraint that begins "An RTC may not be finalized while it is Active in any Running execution context…." This constraint should be replaced with the following: An RTC may not be finalized while it is participating in any execution context. It must first be removed with ExecutionContextOperations::remove_component. Otherwise, this operation shall fail with ReturnCode_t::PRECONDITION_NOT_MET. See Figure <cross reference to Stop and Finalize>. · In section 7.2.2.6.2, start, add the following to the beginning of the Semantics subsection: An execution context may not be started until the RT components that participate in it have been initialized. Figure <number> - Initialize and Start · In section 7.2.2.6.2, start, an additional Constraint should be added with the following text: This operation shall fail with ReturnCode_t::PRECONDITION_NOT_MET if any of the participating components are not in their Alive state. · In section 7.2.2.6.3, stop, add the following to the beginning of the Semantics subsection: An execution context must be stopped before the RT components that participate in it are finalized. Figure <number> - Stop and Finalize · In section 7.2.2.6.6, activate_component, an additional Constraint should be added with the following text: This operation shall fail with ReturnCode_t::BAD_PARAMETER if the given component is not in its Alive state. · In section 7.2.2.6.7, deactivate_component, an additional Constraint should be added with the following text: This operation shall fail with ReturnCode_t::BAD_PARAMETER if the given component is not in its Alive state.
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10494: Update references to newest versions (rtc-ftf)

Click
here for this issue's archive.
Source: DECA (Mr. Rick Warren, )
Nature: Uncategorized Issue
Severity: Minor
Summary:
Source: RTI (Rick Warren, [[MailTo(rick DOT warren AT SPAMFREE rti DOT com)]])

Severity: Minor

Disposition: Resolution Proposed

Summary

The RTC specification refers to now-out-of-date versions of other specifications. These references should be updated. Examples include:

    * XMI (XMI file uses XMI 2.0; should be 2.1)
    * LwCCM (spec uses LwCCM 1.0; should be CCM 4.0, which includes LwCCM) 

UML is also in the middle of an update from 2.0 to 2.1. If that FTF finishes in time, we should update that reference as well.

Discussion

Resolution

Revised Text

Resolution: · Update XMI file format from version 2.0 to version 2.1. · Update UML from version 2.0 to version 2.1.1. · Replace references to Lightweight CCM 1.0 to CCM 4.0.
Revised Text: · Regenerate the XMI file attached to the specification in format version 2.1. · Replace the Normative Reference "Unified Modeling Language, Superstructure Specification" on page 3 with the following: [UML] Unified Modeling Language, Superstructure Specification version 2.1.1http://www.omg.org/technology/documents/formal/uml.htm · Replace the Normative Reference "Lightweight CORBA Component Model, version 1.0" on page 3 with the following: [CCM] CORBA Component Model, version 4.0http://www.omg.org/technology/documents/formal/components.htm · Replace all references to "[LWCCM]" with "[CCM]": pages 1, 2, 3, 5, and 73. · In section 6.2.1, Platform-Independent Model, and in section 7.2, Lightweight RTC, UML2.0 should be replaced with UML2.1.1.
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10495: ComponentAction callbacks argument (rtc-ftf)

Click
here for this issue's archive.
Source: AIST (Dr. Noriaki Ando, n-ando(at)aist.go.jp)
Nature: Uncategorized Issue
Severity:
Summary:
Source: AIST (Noriaki Ando, [[MailTo(n-ando AT SPAMFREE aist DOT go DOT jp)]])

Severity: Minor

Disposition: Resolution Proposed

Summary

ComponentAction callbacks (on_startup, on_shutdown, on_activate, on_deactivate, on_aborting, on_error, on_reset) receive ExecutionContext as argument. In CORBA IDL PSM, this is directly described as follows.

 interface ComponentAction {
    :
   ReturnCode_t on_activated(in ExecutionContext exec_context);
    :
 };

However, these operations only use the given context as monicker to know which ExecutionContext is calling the operation. Since the cost of an operation call giving a pointer as an argument may be low, ExecutionContext's pointer is one of better moniker of the ExecutionContext, in local mapping. In CORBA, however, giving object reference as a moniker of ExecutionContext costs very high. Especially, if DataFlowParticipant's on_execute operation would be called in real-time loop, very heavy servant side object reference creation would happen in each period. These operations only need moniker to identify the ExecutionContext, and the moniker would be PSM dependent matter.

-- Noriaki Ando, 2006/12/4

Discussion

Resolution

I'd like to propose the following CORBA IDL.

 interface ComponentAction {
  UniqueIdentifier attach_executioncontext(in ExecutionContext exec_context);
  ReturnCode_t detach_executioncontext(in UniqueIdentifier ec_id);
  ReturnCode_t on_initialize();
  ReturnCode_t on_finalize();
  ReturnCode_t on_startup(in UniqueIdentifier ec_id);
  ReturnCode_t on_shutdown(in UniqueIdentifier ec_id);
  ReturnCode_t on_activated(in UniqueIdentifier ec_id);
  ReturnCode_t on_deactivated(in UniqueIdentifier ec_id);
  ReturnCode_t on_aborting(in UniqueIdentifier ec_id);
  ReturnCode_t on_error(in UniqueIdentifier ec_id);
  ReturnCode_t on_reset(in UniqueIdentifier ec_id);
 };

In ExecutionContextAdmin::add, attach_executioncontext would be called. ExecutionContext that calls ComponentAction's callback is notified by using attach_executioncontext and it returns a unique identifier (it may be unique only in the ComponentAction).

-- Noriaki Ando, 2006/12/4

I like the proposal. Because of the dependencies between RTC and SDO, the definition of UniqueIdentifier cannot be reused from SDO. But there is a useful pattern for this situation in the DDS specification:

#define UNIQUE_ID_TYPE_NATIVE long
module RTC {
    typedef UNIQUE_ID_NATIVE UniqueId;
    // ...
};

The meaning is that the representation of the UniqueId type is outside of the RTC module, so implementations are free to choose their own. Implementations built on top of SDO can use:

#define UNIQUE_ID_TYPE_NATIVE SDO::UniqueIdentifier

...but other implementations can choose something else. -- RickWarren, 2006/12/4

Revised Text

Resolution: Define an ID to represent an execution context in the callbacks. Provide operations to map between the ID and the object reference for callback implementations that require that information. A resolution for this issue can be combined with the resolution of issue 10496. Disposition: See issue 10496 for disposition
Revised Text:
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10496: ExecutionContextAdmin should receive RTObject not ComponentProfile (rtc-ftf)

Click
here for this issue's archive.
Source: AIST (Dr. Noriaki Ando, n-ando(at)aist.go.jp)
Nature: Uncategorized Issue
Severity:
Summary:
Source: AIST (Noriaki Ando, [[MailTo(n-ando AT SPAMFREE aist DOT go DOT jp)]])

Severity: Minor

Disposition: Resolution Proposed

Summary

ExecutionContextAdmin has no way to know RTObject itself. ExecutionContextAdmin is defined as follows,

 interface ExecutionContextAdmin : ExecutionContext, Service {
   ExecutionContextProfile get_profile();
   ReturnCode_t add(in ComponentProfile comp_profile, in long index);
   ReturnCode_t remove(in ComponentProfile comp_profile);
 };

ComponentProfile does not include RTObject's reference (or pointer or object reference). Therefore ExecutionContextAdmin cannot call RTObject (or related classed for example ComponentAction, etc..)

-- Noriaki Ando, 2006/12/4

Discussion

Resolution

The definition of the ExecutionContextAdmin should be as follows,

 interface ExecutionContextAdmin : ExecutionContext, Service {
   ExecutionContextProfile get_profile();
   ReturnCode_t add(in RTObject comp, in long index);
   ReturnCode_t remove(in RTObject comp);
 };

Since RTObject has get_component_profile operation, ExecutionContextAdmin can access the component profile.

-- Noriaki Ando, 2006/12/4

Revised Text

Resolution: The add and remove operations are generally useful, not only for introspective RTCs but for all RTCs, because they effectively define an interface between a component and its hosting middleware (which will likely provide the execution context). Therefore, move the add and remove operations from ExecutionContextAdmin to ExecutionContextOperations and change the argument type from ComponentProfile to LightweightRTObject. These add and remove operations should be complemented by attach/detach operations on the RTC itself to inform it of its participation in the context and to associate the context with an identifier ("ExecutionContextHandle_t") relative to that component (see issue 10495). To make callback operations less expensive in distributed environments, all callback operations should be passed these identifiers instead of ExecutionContext references.
Revised Text: · Add the add_component/remove_component operations to ExecutionContextOperations. (The "index" parameter to ExecutionContextAdmin::add is omitted, because the ordering of periodic components is already defined in section 7.3.1.1.1, Execution Sorting.) · Add the following operations to the depiction of ExecutionContextOperations in Figure 7.2, Lightweight RTC Package, in section 7.2.2, Components: + add_component(LightweightRTObject) : ReturnCode_t + remove_component(LightweightRTObject) : ReturnCode_t · The ExecutionContextOperations interface is not a member of the Introspection package, so its members need not be displayed in diagrams of that package. Remove all operations from the depiction of ExecutionContextOperations in Figure 7.16, Introspection interfaces, in section 7.4.2, Stereotypes and Interfaces. · Add the following rows to the operations table in the ExecutionContextOperations section (introduced by the resolution to issue 10601). The new rows should be inserted immediately before activate_component. add_component ReturnCode_t comp LightweightRTComponent remove_component ReturnCode_t comp LightweightRTComponent · Add the following sections immediately before section 7.2.2.6.6, activate_component: 7.2.2.6.6 add_componentDescriptionThe operation causes the given RTC to begin participating in the execution context.SemanticsThe newly added RTC will receive a call to LightweightRTComponent::attach_context (see Section <cross reference>) and then enter the Inactive state. Figure <number> - ExecutionContextOperations::add_componentConstraints· If the ExecutionKind of this context is PERIODIC, the RTC must be a data flow participant (see Section 7.3.1.2). Otherwise, this operation shall fail with PRECONDITION_NOT_MET.· If the ExecutionKind of this context is EVENT_DRIVEN, the RTC must be an FSM participant (see Section 7.3.2.2). Otherwise, this operation shall fail with PRECONDITION_NOT_MET.7.2.2.6.7 remove_componentDescriptionThis operation causes a participant RTC to stop participating in the execution context.SemanticsThe newly added RTC will receive a call to LightweightRTComponent::detach_context (see Section <cross reference>). Figure <number> - ExecutionContextOperations::remove_componentConstraints· If the given RTC is not currently participating in the execution context, this operation shall fail with BAD_PARAMETER.· An RTC must be deactivated before it can be removed from an execution context. If the given RTC is participating in the execution context but is still in the Active state, this operation shall fail with PRECONDITION_NOT_MET. · Add the following operations to the IDL in RTC.idl and Annex A: interface ExecutionContext { // … ReturnCode_t add_component(in LightweightRTObject comp); ReturnCode_t remove_component(in LightweightRTObject comp); // … activate_component and other operations }; · Remove the operations ExecutionContextAdmin::add and ExecutionContextAdmin::remove. · Remove the operations from the depiction of ExecutionContextAdmin in Figure 7.16, Introspection interfaces, in section 7.4.2, Stereotypes and Interfaces. · Remove the corresponding rows from the Operations table in section 7.4.2.4, ExecutionContextAdmin. · Remove sections 7.4.2.4.2, add, and 7.4.2.4.3, remove. · Rename ExecutionContextAdmin to ExecutionContextService. (Without add/remove operations, it no longer has an "administrator" role greater than that of ExecutionContext itself.) · In Figure 7.14, Introspection overview, in section 7.4, Introspection, remove the depiction of the operation RTObject::get_execution_context_admins and replace it with the following: + get_execution_context_services() : ExecutionContextService[] · In Figure 7.16, Introspection interfaces, in section 7.4.2, Stereotypes and Interfaces, remove the depiction of the operation RTObject::get_execution_context_admins and replace it with the following: + get_execution_context_services() : ExecutionContextService[] · In Figure 7.16, Introspection interfaces, in section 7.4.2, Stereotypes and Interfaces, rename the depiction of ExecutionContextAdmin to "ExecutionContextService". · In the Operations table in section 7.4.2.2, RTObject, rename get_execution_context_admins to "get_execution_context_services". · Rename section 7.4.2.2.3, get_execution_context_admins, to "get_execution_context_services". In the first sentence of the Description in that section, replace "an ExecutionContextAdmin" with "an ExecutionContextService". · Rename section 7.4.2.4, ExecutionContextAdmin, to "ExecutionContextService". Make the same replacement under Description, under Semantics, and in the title of the Operations table in the same numbered section. · In RTC.idl and in Annex A, rename the IDL definition of ExecutionContextAdmin to "ExecutionContextService". · In RTC.idl and in Annex A, remove the definition ExecutionContextAdminList and replace it with the following: typedef sequence<ExecutionContextService> ExecutionContextServiceList; · Add attach/detach operations to LightweightRTObject. · Add the following to the end of section 7.2.2.2, LightweightRTObject: OperationsLightweightRTObject no attributes operations attach_context ExecutionContextHandle_t exec_context ExecutionContext detach_context ReturnCode_t exec_handle ExecutionContextHandle_t get_context ExecutionContext exec_handle ExecutionContextHandle_t 7.2.2.2.1 attach_contextDescriptionInform this RTC that it is participating in the given execution context. Return a handle that represents the association of this RTC with the context.SemanticsThis operation is intended to be invoked by ExecutionContextOperations::add_component (see Section <cross reference>. It is not intended for use by other clients.7.2.2.2.2 detach_contextDescriptionInform this RTC that it is no longer participating in the given execution context.SemanticsThis operation is intended to be invoked by ExecutionContextOperations::remove_component (see Section <cross reference>. It is not intended for use by other clients.Constraints· This operation may not be invoked if this RTC is not already participating in the execution context. Such a call shall fail with ReturnCode_t::PRECONDITION_NOT_MET.· This operation may not be invoked if this RTC is Active in the indicated execution context. Otherwise, it shall fail with ReturnCode_t::PRECONDITION_NOT_MET.7.2.2.2.3 get_contextDescriptionObtain a reference to the execution context represented by the given handle.SemanticsThe mapping from handle to context is specific to a particular RTC instance. The given handle must have been obtained by a previous call to attach_context on this RTC. · Add the following operations to the depiction of LightweightRTObject in Figure 7.2, Lightweight RTC package, in section 7.2.2: + attach_context(ExecutionContext) : ExecutionContextHandle_t + detach_context(ExecutionContextHandle_t) : ReturnCode_t + get_context(ExecutionContextHandle_t) : ExecutionContext · Add the following operations to the definition of LightweightRTObject in RTC.idl and Annex A: ExecutionContextHandle_t attach_context( in ExecutionContext exec_context); ReturnCode_t detach_context( in ExecutionContextHandle_t exec_handle); ExecutionContext get_context( in ExecutionContextHandle_t exec_handle); · Add a definition of the ExecutionContextHandle_t type. · Add the following section immediately following section 7.2.2.7, ExecutionKind. 7.2.2.8 ExecutionContextHandle_tDescriptionThis data type represents the association between an RTC and an ExecutionContext in which it participates.SemanticsThis is an opaque DataType. It has no attributes or operations. · Add the following statements to RTC.idl and Annex A: #define EXECUTION_HANDLE_TYPE_NATIVE long module RTC { typedef EXECUTION_HANDLE_TYPE_NATIVE ExecutionContextHandle_t; // ... }; · Change the types of the parameters to the callback operations. · In Figure 7.2, Lightweight RTC Package, in section 7.2.2, Components, replace the ExecutionContext parameters to the ComponentAction operations with ExecutionContextHandle_t. · In the operations table in section 7.2.2.5, ComponentAction, change the parameter types from ExecutionContext to ExecutionContextHandle_t. · In Figure 7.6, Data Flow Types, in section 7.3.1, Periodic Samples Data Processing, replace the ExecutionContext parameters to the DataFlowComponentAction operations with ExecutionContextHandle_t. · In Figure 7.7, Data Flow Example, in section 7.3.1, Periodic Samples Data Processing, replace the ExecutionContext parameters to the DataFlowComponentAction operations with ExecutionContextHandle_t. · In the operations table in section 7.3.1.3, DataFlowComponentAction, change the parameter types from ExecutionContext to ExecutionContextHandle_t. · In Figure 7.9, Stimulus Response Execution, in section 7.3.2, Stimulus Response Execution, replace the ExecutionContext parameter to FsmComponentAction::on_transition with ExecutionContextHandle_t. · In Figure 7.10, FSM UML Example, in section 7.3.2, Stimulus Response Execution, replace the ExecutionContext parameter to FsmComponentAction::on_transition with ExecutionContextHandle_t. · In the operations table in section 7.3.2.3, FsmComponentAction, change the on_transition parameter type from ExecutionContext to ExecutionContextHandle_t. · In Figure 7.12, Modes of Operation, in section 7.3.3, Modes of operation, replace the ExecutionContext parameter to MultiModeComponentAction::on_mode_changed with ExecutionContextHandle_t. · In the operations table in section 7.3.3.4, MultiModeComponentAction, change the on_mode_changed parameter type from ExecutionContext to ExecutionContextHandle_t. · In RTC.idl and Annex A, replace ExecutionContext with ExecutionContextHandle_t in the definitions of ComponentAction, DataFlowComponentAction, FsmComponentAction, and MultiModeComponentAction.
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10497: CORBA IDL definition of Port::connect (rtc-ftf)

Click
here for this issue's archive.
Source: AIST (Dr. Noriaki Ando, n-ando(at)aist.go.jp)
Nature: Uncategorized Issue
Severity:
Summary:
ource: AIST (Noriaki Ando, [[MailTo(n-ando AT SPAMFREE aist DOT go DOT jp)]])

Severity: Minor

Disposition: Resolution Proposed

Summary

The Port interface is defined as follows,

 interface Port : Service {
   PortProfile get_port_profile();
   ConnectorProfileList get_connector_profiles();
   ConnectorProfile get_connector_profile(in UniqueIdentifier connector_id);
   ReturnCode_t connect(in ConnectorProfile connector_profile);
   ReturnCode_t disconnect(in UniqueIdentifier connector_id);
   ReturnCode_t disconnect_all();
 };

The argument of Port::connect(in ConnectorProfile) is defined as in argument. Because of it, Ports cannot exchange connection information via ConnectorProfile.

To exchange connection information between Ports, ConnectorProfile argument should be inout.

 interface Port : Service {
   ReturnCode_t connect(inout ConnectorProfile connector_profile);
 };

-- Noriaki Ando, 2006/12/4

Discussion

Above mentioned issue would depend on Port'c connection sequence. -- Noriaki Ando, 2006/12/4

Resolution

Revised Text

Resolution: A resolution for this issue can be combined with the resolution of issue 10488.
Revised Text:
Actions taken:
December 5, 2006: received issue
January 15, 2008: closed issue

Issue 10532: It seems better to merge LifeCycle with LightweightRTObject (rtc-ftf)

Click
here for this issue's archive.
Source: Hitachi (Dr. Saku Egawa, saku.egawa.qm(at)hitachi.com)
Nature: Uncategorized Issue
Severity:
Summary:
Originally, LightweightRTObject was an interface that just combines LifeCycle and ComponentAction. It existed for convenience to characterize lightweightRTC by a single interface. However, in the discussion of issue 10492, an operation, get_context(), was added to LightweightRTObject and its role was changed.

LightweightRTObject is now an interface that defines basic operations for lightweightRTComponent except business logic operations defined by ComponentAction. Since the role of LifeCycle is also to provide basic component operations, it is no longer needed to define LifeCycle as a seperate interface. The model will become simpler and more clearly understandable if LifeCycle is merged with LightweightRTObject.

Proposed Resolution

Move LifeCycle operations to LightweightRTObject and delete LifeCycle.

Resolution: Merge the contents of the LifeCycle interface into the LightweightRTObject interface and remove the LifeCycle interface.
Revised Text: · The existing section 7.2.2.2, LightweightRTObject, should be deleted. In section 7.2.2.3, the section name "LifeCycle" should instead read "LightweightRTObject". · Just below heading "Description" in section 7.2.2.3, the following sentence should be inserted: This interface is realized by all lightweight RTCs (as required by the lightweightRTComponent stereotype). · In the following sentence under "Description," the phrase "The LifeCycle interface…" should be replaced with "It…". · After subsection "Description" in section 7.2.2.3, the following text should be added: Generalizations· ComponentAction · The first paragraph under "Semantics," "Initialization" in section 7.2.2.3 refers to the operation "LifeCycle::initialize". This should be changed to simply "initialize". · Under "Constraints" in section 7.2.2.3, the phrase "the LifeCycle interface" should be replaced with "this interface". · The name of the table under "Operations" in section 7.2.2.3 should be changed from "LifeCycle" to "LightweightRTObject". · In section 7.2.2.4.5, FINALIZED, under "Semantics," the word "LifeCycle" should be written "lifecycle" and should not use the mono-spaced style that indicates an API element. · In the first sentence of section 7.2.2.5, ComponentAction, the phrase "operations of LifeCycle" should be replaced with "lifecycle operations of LightweightRTObject". · In figure 7.16, Introspection interfaces, in section 7.4.2, Stereotypes and Interfaces, do not show any of the operations of LightweightRTObject-the model element is not in the package being depicted. · In RTC.idl and Annex A, all declarations and definitions of the LifeCycle interface should be removed, and the following text, interface LightweightRTObject : LifeCycle, ComponentAction { }; …should instead read, interface LightweightRTObject { ReturnCode_t initialize(); ReturnCode_t finalize(); boolean is_alive(); ReturnCode_t reset(); ReturnCode_t exit(); }; · In figure 7.4, RTC lifecycle, all occurrences of the interface name "LifeCycle" should instead read "LightweightRTObject". The title (in the graphical border and in the caption) should be changed to "Lightweight RTC Lifecycle". · In figures 7.3, 7.7, 7.10, 7.14, and 7.16, the generalization "LifeCycle" in LightweightRTObject interface should be deleted. · Figure 7.2, Lightweight RTC Package, should be modified as follows. The operations shown in the LifeCycle interface should be moved to the LightweightRTObject interface. The LifeCycle interface, and the generalization connecting it to LightweightRTObject, should be removed.
Actions taken:
December 21, 2006: received issue
January 15, 2008: closed issue

Discussion:
 like the proposal. -- RickWarren, 2006/12/12

[attachment:20061220LWRTC2.png]
LightweightRTC Example(non-normative)

I drew Component diagram example(non-normative). -- Takeshi Sakamoto, 2006/12/14

Resolution


Issue 10533: Definition of Connector in PSM is unclear (rtc-ftf)

Click
here for this issue's archive.
Source: Hitachi (Dr. Saku Egawa, saku.egawa.qm(at)hitachi.com)
Nature: Uncategorized Issue
Severity:
Summary:
Description for Connector in PSM seems confusing or insufficient.

In the first paragraph of 8.3.3 (Connectors, Local PSM), Connector is defined as a data instance. This seems to reflect the definition of Interface in 8.3.2 that allows using simple data instead of implementing "interfaces in the IDL sense". On the other hand, the last paragraph of 8.3.3 describes an implementation issue for method-type interface.

    * It is unclear whether it is mandatory to use data instances for interfaces and connectors in local PSM.
    * The multiple connection issue described in the last paragraph of 8.3.3 seems also applicable to CORBA PSM. 

Proposed Resolution

    * Modify 8.3.2 and 8.3.3 as either one of the follwoing:
          o If it is mandatory to use data instances for interfaces and connectors in local PSM, change "UML interfaces may be represented" in 8.3.2 to "UML interfaces shall be represented" and delete last paragraph of 8.3.3.
          o If it is allowed to use both data instances and method-type interfaces, modify 8.3.3 like: "In the case of using data instances as interfaces, .... In the case of using method call as interfaces ..." 
    * Add the multiple connection isssue to 8.5.2 (Mapping for Connectors, CORBA PSM).

Resolution: It is not mandatory to use data-only types for ports and connectors in the Local PSM. Therefore, section 8.3.2 does not need to be changed. However, section 8.3.3 is written in a confusing way and should be updated. CORBA-not including support for CORBA Component Model-does not include an explicit concept of connector objects. Therefore, the multiple connector mechanism described in section 8.3.3 is not applicable to the CORBA PSM.
Revised Text: · The first paragraph of section 8.3.3, Connectors, should be replaced with the following: Connectors shall be represented as instances of the type of the connected ports. This type may contain data, methods, or both.If the type of the connector contains data, implementations must ensure that all ports connected to it observe the same values at all times. · The second paragraph begins "Any operations present on the UML interface represent operations on the RTC that provides that interface. Therefore…." It should be rewritten: "If the type of the connector contains methods…."
Actions taken:
December 21, 2006: received issue
January 15, 2008: closed issue

Issue 10534: Type Mode is not clearly defined (rtc-ftf)

Click
here for this issue's archive.
Source: Hitachi (Dr. Saku Egawa, saku.egawa.qm(at)hitachi.com)
Nature: Uncategorized Issue
Severity:
Summary:
Type Mode is not clearly defined in the current specification.

    *

      Mode is used but not defined in PIM.
    *

      In the IDL, Mode is defined as an interface but it seems better to be an enumeration.
    *

      ModeList is defined but never used.
    *

      Since supported modes may vary between components, using a common Mode type in all components may not be useful. 

Proposed Resolution

    *

      Define Mode as an integer in PIM and PSM/IDL, and let the component developer assign arbitrary numbers to modes of the component.
    *

      Delete ModeList from the IDL. 

Discussion

I myself think using integer as Mode is not so good manner. -- Saku Egawa

Resolution: It is not correct that Mode is not defined in the PIM. It is defined in section 7.3.3.5. It is a class with no attributes or operations. Even though there are not currently any operations, a mode is semantically an object, and so the type should remain a class. An enumeration is not appropriate, because there are no well-known instances that are common to all mode-capable components; each component implementation defines its own. ModeList should be removed from the IDL. It is left over from a previous draft of the specification and is obsolete.
Revised Text: Remove the declaration "typedef sequence<Mode> ModeList;" from Annex A and from RTC.idl.
Actions taken:
December 21, 2006: received issue
January 15, 2008: closed issue

Issue 10535: Typographical Errors (rtc-ftf)

Click
here for this issue's archive.
Source: Hitachi (Dr. Saku Egawa, saku.egawa.qm(at)hitachi.com)
Nature: Uncategorized Issue
Severity:
Summary:
I will report several minor problems that seems not worth registering as separate issues.

Typographical errors

6.1 Requirements [[BR]] Systematic execution: The execution ordering of modules within an **R** application ...

7.2.2.3 !LifeCycle [[BR]] At any other time, it shall not be required to **performs** any ongoing activity of its own; ...

Wording inconsistency

7.3 Execution sementics [[BR]] ... stimulus response processing (also known as discrete events), ...

7.3.2 Stimulus Response Processing [[BR]] The stimulus response design pattern is also referred to as asynchronous event processing.

Discussion

We should collect all such errors we find in this issue and vote on them together at the very end so that we don't end up with many issues that are so trivial. -- RickWarren, 2006/12/13

Resolution: See the corrections noted below.
Revised Text: Correct the following typographical errors: · Section 6.1, Requirements: Remove the extraneous letter 'R' from the sentence "Systematic execution: The execution ordering of modules within an R application…." · Section 7.2.2.2, LightweightRTObject, in the sentence "At any other time, it shall not be required to performs any ongoing activity…" under the subheading "Execution Context," the verb tense is incorrect. "Performs" should be "perform." · In sections 8.3.1.3, Mapping for String Types, and 8.3.1.4, Mapping for Wide String Types, "namespace CORBA" should be "namespace RTC." · In Figure 7.4, Lightweight RTC Lifecycle, there is an incorrect closing square bracket : Inactive[n[. Correct it. · In section 7.2.2, Components, "lightweight robot technology component" should be replaced with "lightweight robotic technology component". · In section 7.2.2.1, lightweightRTComponent, "UML2.0::Components::BasicComponents::Component" should be replaced with "UML::Components::BasicComponents::Component". · In the operation table in section 7.2.2.2, LightweightRTObject, replace "exec_context" with "context" in the argument. · In the operation tables in section 7.2.2.5, ComponentAction, in section 7.3.1.2, DataFlowComponentAction, in section 7.3.2.4, FsmParticipabtAction, and in section 7.3.3.4, MultiModeComponentAction, replace "context" with "exec_handle" in the argument. · In section 7.2.2.6.7. remove_component, Semantics subsection, "The newly added RTC will receive …" should be replaced with "The removed RTC will receive…" · In section 7.3.3.4.1, on_mode_changed, Semantics subsection, remove the extraneous lettes "(context" from the sentence "The new mode can be retrieved with get_current_mode_in_context(context." . · In section 7.4.2.3, PortService, "UML2.0::CompositeStructures::Ports::Port" should be replaced with "UML::CompositeStructures::Ports::Port". · In RTC.idl and in Annex A, add the argument "in ExecutionContext exec_context" to "is_alive" operation in LightweightRTObject interface. · In RTC.idl and in Annex A, replace "exec_context" with "exec_handle" in the arguments of ComponentAction interface, DataFlowComponentAction interface and FsmParticipantAction interface. · In RTC.idl and in Annex A, replace "component" with "comp" in the arguments of ExecutionContext interface. · In the operation table in section 7.2.2.6 ExecutionContext, replace "comp" with "component" in the arguments of ExecutionContext interface. · In RTC.idl and Annex A, replace "OK" and "ERROR" with "RTC_OK" and "RTC_ERROR", and add the following sentence as third sentence in section 8.2.2 Return Codes. However, in an annex and RTC.idl, since a word confliction is expected in mapping to other languages, "OK" and "ERROR" are replaced to "RTC_OK" and "RTC_ERROR". Correct the following wording inconsistency: · The first paragraph in section 7.3, Execution Semantics, contains the text "…stimulus response processing (also known as discrete events)…." The emphasized text should read "asynchronous or discrete event processing" for consistency with other portions of the specifications. · The first sentence of section 7.3.2, Stimulus Response Processing, says "The stimulus response design pattern is also referred to as asynchronous event processing." For consistency, this sentence should be replaced with: "The stimulus response design pattern is also referred to as asynchronous or discrete event processing." · All the words "PRECONDITION_NOT_MET" and "BAD_PARAMETER" should be replaced with "ReturnCode_t::PRECONDITION_NOT_MET" and "ReturnCode_t::BAD_PARAMETER".
Actions taken:
December 21, 2006: received isuse
January 15, 2008: closed issue

Issue 10559: CORBA IDL's syntax error (rtc-ftf)

Click
here for this issue's archive.
Source: AIST (Dr. Noriaki Ando, n-ando(at)aist.go.jp)
Nature: Uncategorized Issue
Severity:
Summary:
n CORBA IDL does not allow interface's typedef. See CORBA specification, v3.0.3 http://www.omg.org/cgi-bin/apps/doc?formal/04-03-12.pdf Some IDL compilers complain that typedefed DistributedObject and Service are not interface but type when they are used as base interface.

omniORB and TAO's idl compiler allow interface typedef. MICO and ORBit2 IDL compiler does not allow interface typedef.

Proposed Resolution

The following typedefs should be deleted.

  typedef SDOPackage::SDO DistributedObject;
  typedef SDOPackage::SDOService Service;

and, the Port, ExecutionContextService and RTObject should be changed like this.

  interface Port : SDOPackage::SDOService
  {
    abbr.:
  };
  
  interface ExecutionContextService : ExecutionContext, SDOPackage::SDOService
  {
    abbr.:
  };
  
  interface RTObject : LightweightRTObject, SDOPackage::SDO
  {
    abbr.:
  };

Resolution: Remove the typedefs for SDOPackage::SDO and SDOPackage::SDOService; use the original types instead.
Revised Text: All of the following changes are limited to RTC.idl and Annex A of the specification. · The following typedefs should be deleted. typedef SDOPackage::SDO DistributedObject; typedef SDOPackage::SDOService Service; · Port, ExecutionContextAdmin and RTObject should be changed like this. interface Port : SDOPackage::SDOService { abbr.: }; interface ExecutionContextAdmin : ExecutionContext, SDOPackage::SDOService { abbr.: }; interface RTObject : LightweightRTObject, SDOPackage::SDO { abbr.: };
Actions taken:
December 22, 2006: received issue
January 15, 2008: closed issue

Issue 10601: refactoring of the ExecutionContext model element (rtc-ftf)

Click
here for this issue's archive.
Source: DECA (Mr. Rick Warren, )
Nature: Uncategorized Issue
Severity:
Summary:
The model element ExecutionContext, which is currently an interface, has association ends and a state machine. Therefor, it would be more correct to model it as a Class instead. Its operations can be moved to a new Interface "ExecutionContextOperations" that will be implemented by the Class ExecutionContext."

Resolution: ExecutionContext should be a Class so that it can have a state machine and association ends. However, a separation between Class and Interface is felt to be a good design. Therefore, the operations of ExecutionContext shall be moved to a new Interface ExecutionContextOperations, and ExecutionContext itself shall become a Class.
Revised Text: · At the beginning of section 7.2.2, Components, in the figure 7.2, Lightweight RTC Package, ExecutionContextOperations should be depicted, and ExecutionContext should not be depicted with the <<interface>> keyword. All operations of ExecutionContext should move to ExecutionContextOperations. (The Associations remain attached to ExecutionContext.) · In section 7.2.2.6, Execution Context, the following new unnumbered subsection should be inserted after the existing "Description" section: Interface Realizations· ExecutionContextOperations · In section 7.2.2.6, ExecutionContext, the "Operations" section should be moved into a new numbered section, "7.2.2.7 ExecutionContextOperations" · Subsequent sections should be renumbered accordingly. · The title of the table should be changed to "ExecutionContextOperations" accordingly. · The new section "ExecutionContextOperations" should begin with the following unnumbered subsection: DescriptionThe ExecutionContextOperations interface defines the operations that all instances of ExecutionContext must provide. · In section 7.4.2, Stereotypes and Interfaces, in figure 7.16, Introspection interfaces, the depiction of ExecutionContext should be replaced with one of ExecutionContextOperations. · In section 7.4.2.4, ExecutionContextAdmin, the bullet "ExecutionContext" under the heading Generalizations should be removed. A new unnumbered subsection "Interface Realizations" should be added with a single bullet: "ExecutionContextOperations". · The ExecutionContext arguments to ModeCapable::get_current_mode_in_context and get_pending_mode_in_context should be changed to ExecutionContextOperations so that the methods can be used when the context is an instance of ExecutionContextAdmin. · Make the change in figure 7.12, Modes of operation, at the beginning of section 7.3.3, Modes of Operation. · Make the change in the operations table in section 7.3.3.3, ModeCapable. · Make the change in the IDL definitions of ModeCapable in Annex A of the specification and in RTC.idl. · A new subsection should be added to the section 8.2, IDL Definitions, before the existing subsection 8.2.1, Stereotypes: 8.2.1 Classes and InterfacesBecause UML classes and interfaces are both represented by IDL interfaces (see section 8.1.2), the types ExecutionContext and ExecutionContextOperations are essentially identical. Therefore, in the PSMs, they have been collapsed to a single IDL interface "ExecutionContext."
Actions taken:
January 22, 2007: receiuved issue
January 15, 2008: closed issue

Issue 11005: Page: 5, 11 (rtc-ftf)

Click
here for this issue's archive.
Nature: Revision
Severity: Minor
Summary:
Typos Sec. 6.1, 4th bullet. Correct "Systematic execution: The execution ordering of modules within an R application ..." Fig. 7.4: incorrect closing square bracket -- Inactive[n[

Resolution: A resolution for this issue can be combined with the resolution of issue 10535.
Revised Text:
Actions taken:
May 14, 2007: received issue
January 15, 2008: closed issue

Discussion:


Issue 11110: FINALIZED in LifeCycleState (rtc-ftf)

Click
here for this issue's archive.
Source: Shibaura Institute of Technology (Mr. Takeshi Sakamoto, sakamoto(at)globalassist.co.jp)
Nature:
Severity: Minor
Summary:
Originally, LifeCycleState has FINALIZED attribute. I think that FINALIZED is not necessary. Because FINALIZED is compatible with Final state of statemachine. (I think that it cannot transit from FINALIZED to other states.)

In some language (such as Java), it is possible to call LightweightRTObject::finalize on the object and still have a valid object reference. But I think that it depends on implementation in PSM level. So I think that FINALIZED in LifeCycleState is not necessary in PIM level.

Resolution: Remove the FINALIZED in LifeCycleState.
Revised Text: n section 7.2.2.1, lightweightRTComponent, Figure7.3, Lightweight RTC M1 Illustration (This figure was added by the resolution to Isuue 10477), remove the attribute "FINALIZED" from LifeCycleState. (Note that the LifeCycleState have been added as Enumeration by the resolution to issue 10477.) · Remove the "FINALIZED" row from the attributes table in section 7.2.2.4, LifeCycleState. · Remove section 7.2.2.4.5 FINALIZED. · In RTC.idl and in Annex A, remove the FINALIZED member from the definition of enum LifeCycleState.
Actions taken:
July 2, 2007: received issue
January 15, 2008: closed issue

Issue 11111: Diagrams do not agree with text (rtc-ftf)

Click
here for this issue's archive.
Source: Shibaura Institute of Technology (Mr. Takeshi Sakamoto, sakamoto(at)globalassist.co.jp)
Nature: Uncategorized Issue
Severity: Minor
Summary:
In some diagrams (ex.Figure7.14), the subject matter of diagram is different from an explanation texts.

Resolution: A Resolution for this issue can be combined with the resolution of Issues 10478, 10480, 10482, 10483, 10486, 10488 and 10492. Revised Text: None Disposition: Merged (with 10478,10480,10482,10486,10488 and 10492)
Revised Text:
Actions taken:
July 2, 2007: received issue
January 15, 2008: closed issue