![]() |
Telelogic System Architect (steve huntington) | ![]() |
Topic Title: Macro Creation Topic Summary: Adding Classification Notations to Definitions and Symbols Created On: 29-Nov-2005 14:11 Status: Read Only |
Linear : Threading : Single : Branch |
![]() |
![]()
|
![]() |
|
I have a project that is using SA V9.0.19 w/C4ISR. The did most of their development in an unclassified database. They are now moving that data into a classified database where they will require to have classification markings i.e. (U). They created a macro that adds the (U) notation at all definitions listed in the browser however those marking do not carry over to the Symbol Names on the diagrams. The only way that can be accomplished is by doing a symbol rename on every symbol in ever diagram. They have 100s of diagrams and thousands of symbols. Is there anyone that has encountered this problem and how was it handled?
------------------------- Theodore A. Menard |
|
![]() |
|
![]() |
|
How are you marking an object as being classified? Are you adding a prefix or suffix to the object name (e.g. - 'Customer (U)'), or are you using a property of the object?
|
|
![]() |
|
![]() |
|
They are placing the (U) as a prefix to the Object Name.
------------------------- Theodore A. Menard |
|
![]() |
|
![]() |
|
Not the approach I would have taken but you should be able to write a macro that renames symbols with the appropriate prefix.
I would have added a property to each symbol or definition type to signify whether it was classified. The value of this property can be displayed next the definiton name in the browser. |
|
![]() |
|
![]() |
|
According to DoD Security Marking Conventions the (U) needs to be in front of the Name. Question is why if I rename a definition it changest the name globally but if I add (U) to a name it doesn't change it globally.
------------------------- Theodore A. Menard |
|
![]() |
|
![]() |
|
You need to do the rename as follows:
Dim oISA As ISAImf Dim x As Long Dim lDefID as Long Set oISA = Application.Interface("ISAImf") x = oISA.SAEditDefinition(lDefID, False) x = oISA.SARenameDefinition(lDefID, "(U) New Name") where lDefID would be the ddid of the definition you want to rename. I realize this is far from obvious but it should work. I'm not 100% sure if these calls are supported in SA 9. Hope this helps. |
|
![]() |
|
![]() |
|
Does the prefix get added to the symbol when the definition is opened from the browser and changed manually? There could be two things--one, the definition that is changed is not the same as the definition represented on the diagram; or two, the macro that adds the prefix is circumventing the normal global update and leaving you with a disjoint. You'll probably want to add a section to the macro you've used or the one that Kevin posted that will look for every symbol related to the definition and carry out the rename.
|
|
![]() |
|
![]() |
|
We are able to access all of the diagrams and symbols. However, when the macro is run and we try to rename the symbols, the symbols are duplicated with the new name appearing in the duplicate. We want to be able to rename an existing symbol without a new symbol being created. The line of code in question: aSymbol.SetField SYMFLD_NAME, "(U) " + aSymbol.Name ------------------------- Theodore A. Menard |
|
![]() |
|
![]() |
|
My guess is that your code does the equivalent of "rename" on a symbol. Since you want to have the same symbol undergo a name change, that really is the renaming of the definition associated with the symbol. If the code previously posted to rename a defn won't work in v9, you may try to use a property on the defintion to capture the classification, then use the macro to change the symbol display to include that classification. (Usrprops may need to change to include the ability to display the property on the symbol). |
|
![]() |
FuseTalk Standard Edition v3.2 - © 1999-2009 FuseTalk Inc. All rights reserved.