Table of Contents
- 3.c. Functional Chains
- Access to Functional Chains
- Add a new Functional Chain
- Functional Chains attributes
- Add new Objects to a Functional Chain
- Add existing Objects to a Functional Chain
- Show / Hide objects
- Create a new Functional Chain by merging existing ones
- Add Message Sequence Chart (MSC) object
- Add Comment in a FC
- Visualize FCs contents
- Object's colors in Functional Chains
3.c. Functional Chains
A Functional Chain is a subset of Functions of a System which are isolated in order to be visualized / focused / studied separately.
Functional chains are a very powerful mechanism to describe pieces of architecture related to a particular topic in a complex system. They are very helpful to represent all the functions, flows, components, interfaces involved in a feature or in order to show how an information that propagate from the end user man machine interface toward actuators, going through several flows, interfaces, functions, Control Units in between.
In this Projection, you can define Functional Chains composed of the existing Functions or new ones and specifies behavior with MSC diagram.
The arKitect object type for Functional Chains is Flow Chain. It is a generic object used to create Functional Chains as well as Physical Chains or Allocation Chains.
Access to Functional Chains
The Projections of Functional Chains (FCs) are placed in the folder of "3. Functional Architecture".
Add a new Functional Chain
Start by right-clicking somewhere in this Projection -> Add New Object -> Flow Chain. You can also drag and drop from the Palette menu.
The following FCs were created for our example.
Functional Chains attributes
The following table shows the properties of a functional chain:
- _data (MEMO): an attribute used by scripts to store all data related to the chain (list of objects children, hide and show properties of each object...). This attribute must not be modified manually.
- ArkiId (String(255)): an Id for all arKItect objects in arKItect SEA. You can fill it manually or use a tool, called Fill IDs, to do this.
- Author (String(255)): a textbox to enter the author of the chain.
- chain version (Integer): an attribute to show the version of the chain. This attribute must not be modified manually.
- chain_type (Enum): an enumeration of different SEA chain types (physical, functional, allocation). It shall be set to "3. functional" to appear in this projection.
- desc (MEMO): an attribute to write the chain description.
- Introduction (Rich text): an "rich text" (taking in account, font, styles, images, color, etc.) description of the chain's "story". It can be use full for deliveries generation from chains.
- Merge chains (program): a Python script to merge chains into one (or add one to another).
Add new Objects to a Functional Chain
A Functional Chain is mainly composed of Functions. They can also include some Enabling Systems and States.
There are two ways to add new object like Functions in a FC:
- Right-click anywhere on the FC and select "Add New Object", then choose Function.
- Drag and drop directly object Function from the Palette to the FC.
Add existing Objects to a Functional Chain
Add Functions from the Dictionary to a Functional Chain
After adding your Functional Chain, you can add Functions or any other Objects to it by right-clicking on it -> Add Existing Object -> enabling system / Function / State / FC Behavior. This will allow you to add the Functions already defined in the Projection 3.1. Define Functional Architecture.
Then, the Function Dictionary opens and you can choose a set of Functions to be added to the FC.
The selected Functions and their corresponding Flows are added to the FC. In the example, we hid the Flows with question marks, or not relevant to the FC.
Add Functions to a Functional Chain by Drag & Drop from the tree view
The other possibility to add an existing Function or any other object to a FC is by drag & dropping from the right tree view. While in view "3.c. Functional Chains", display the tree view of view "3.1." or "3.1.bis." on the side and drag & drop the wanted objects into the target FC.
Show / Hide objects
The main objective of Functional Chains is to be able to focus on a subset of Functions of a system. There are objects that we cannot remove from the FC, however, we are able to hide them. In order to do this, right-click on the object and select "Edit children" on the pop-up menu, a new window with a list of the children will open.
Objects added in a FC are displayed by default.
In the new panel menu, all checked objects are displayed in the IBD as shown below. It is possible to check an object and all its children objects, to do so right-click on the targeted parent object on the list and select "Check all children".
To hide an object just uncheck it from the Edit children window.
Here in our example, we have unchecked function "Capture the Wi-Fi signal". The result should look similar to this:
Note that a hidden Function disappear with all its both input and output flows.
There is also a quick way to hide actually displayed objects. Right-click on the targeted object and select either "Hide object" (object only and children still displayed) or "Hide object and children".
Show / Hide flows
An important script allows you to show or hide links between Functions. Right-click on the object and select "Edit flows". A new editing window will open, shown flows are in the right column and hidden flows are in the left column.
Note that you can select all of the non-produced or non-consumed links by one click.
Flow are identified by the following symbols:
- "?" before the name of the Flow means that the producer is unknown in the corresponding FC.
- "?" after the name of the Flow means that the consumer is unknown in the corresponding FC.
- (<-) means its an input Flow.
- (->) means its an output Flow.
- put only selected links in hidden links box.
- put all unknown links in hidden links box.
- put all links in hidden links box.
- put only selected links in shown links box.
- put all unknown links in shown links box.
- put all links in shown links box.
A window appears, and you can choose which Flow you want to see or not. This window contains all Flows connected to the selected Function, even those of its children (sub-functions), except for internal flows.
In our example, once we have hidden the unwanted flows, the final result is shown below:
Create a new Functional Chain by merging existing ones
You can merge several Function Chains into an existing FC.
To merge several FCs in an existing one, right-click on the target FC and select Merge chains. We will do this in the FC Network Functional Chain.
Then, a pop-up window opens and you only have to choose FCs to be merged.
We create a new FC by merging two existing ones.
Add Message Sequence Chart (MSC) object
As a reminder, a message Sequence Chart (MSC) is a program allowing adding a dynamic dimension to a static graph.
There are 2 "versions", the generic MSC (get the general informations : MSC) and the specific MSC which can be used a bit differently for Functional Chains in the SEA data model.
We will introduce how to configure the specific MSC for chains in arKItect designer and then how to use it knowing there is a bijection between the chains objects and the MSC objects.
Remark : specific MSC can also be used for Allocation Chains.
How to configure MSC for chains in arKItect designer
The configuration is almost the same than for the generic MSC (see MSC) excepted that you have
- To add the object MSC (called here "FC Behavior") under the object Chain in the Rules (see image below)
- To configure the 2nd attribute (see : MSC) adding " appType=u'FC' " with the objects and flows needed in your chain (see example below)
Remark : this code allows creating MSC for Functional Chains and Allocation Chains.
How to use the object MSC with chains
Once you have configured your object "FC Behavior" (MSC for chains) you have to know there are 3 main differences with generic MSC to understand how to use it (for the general informations : MSC#HowtousetheobjectMSC).
Every objects and flows existing in a chain are added in the MSC view when the program ("start msc") is launched for the first time (see table below).
Functional Chain : Cooling management MSC : FC Behavior _ cooling management
Step 1 : a chain has been created and an object FC behavior added.
Step 2 : using the object FC behavior the program "start msc" is launched.
Step 3 : the MSC view is initialized with every objects and flows of the chain.
There is a bijection between the MSC view (MSC) and the Chain view (IDB) : if the chain evolves with any modifications, the MSC view evolves too, and vice versa (see table below)
In IBD (static diagram) In MSC (dynamic diagram) Adding an element in a view adds it automatically in the other view ? Yes, it is added in MSC after running program Yes, it is added in IBD after save Renaming an element in a view renames it automatically in the other view ? Yes, it is renamed in MSC after running program Yes, it is renamed in IBD after save Deleting/ removing an element in a view delete it automatically in the other view ?
Yes, it is deleted in MSC after running program
and a note will specify which object has been deleted.
Yes, it is deleted in IBD after save
- Objects and flows are marked to know what have been added in the chain from the last save.
When the MSC view is initialized every objects and flows are marked. By right clicking on the background of the graph you can unmark all objects (see images below) :
|How to unmark all ?||Result :|
After saving your MSC view, if you add new objects and flows in your chain, the new objects and flows will be marked in the MSC view (see images below) :
|New object "New Function" (in blue) and new flow "New Flow" (in blue) are added||Object and flow are added and marked in the MSC view|
To unmark 1 object or 1 flow you can right click on it and select "Unmark" (see images below)
0. How to unmark object and flow ?
|1.a. To unmark object, right click on it --> "Unmark"||1.b. Result||2.a. Tu unmark flow, right click on it --> "Unmark"||2.b. Resu|
By the same way you can Mark an object or Flow if you need to highlight him for any reason.
MSC are also available for Allocation Chains, while respecting the exact same rules.
You can obtain for example :
|MSC (dynamic view)||Allocation Chain (static view)|
Warming : your arKItect view 5.c. (Allocation Chain) can be unavailable, if this occurs please contact your administrator.
Add Comment in a FC
It is possible to add Comments in Functional Chains. Furthermore, it is possible to do so in Functions listed in FCs as well.
Just use the Palette or right-click in the FC or Function and choose "Add New Object" -> "Comment".
Visualize FCs contents
There is an easy way to see all information about Functional Chains. You can see all of the Functional Chains allocations in tabular view mode.
Click on Project Tools icon in the toolbar. A Project Tools window appears. Click on the corresponding table : "d. Visualize FCs contents".
You will see the table with three specifics tabs : Enabling systems on FCs, Flows on FCs, Functions on FCs.
In each tab you will see all corresponding objects allocated to one or more Functional Chains.
Note that it's possible to add information in this view. You are free to modify allocations on functional chains (Add or Delete).
But don't forget to respect the specific format and the name given to FCs.
Object's colors in Functional Chains
ArKItect allows you to change the objects colors when viewed from a particular chain. This color will be visible only inside that chain, and will return to default when viewed from another chain or to another view. This means, the same object can have different colors in each chain.
This feature is useful when you want to highlight an object in a Functional Chain for a particular reason.
Note that the applied color will not affect the object's color in other views.
Tip: The object's color update is done at the moment you enter a chain, however, in other views, the object's color might be updated by refreshing, or by going back to the object's root.
The procedure will be the following:
Enter the desired Functional Chain. In our example, we will enter the "Wi-Fi Functional Chain".
Right-click on the object you wish to modify. In this example, we will do so for the "Capture Internet signals" function. Proceed to click on "Graphical Properties".
The following window will display:
Under the Graphical options, click on "Fill".
Once there, you are able to change some fill properties for the object. We will change the Foreground color.
We proceed to save the changes. The result is the following:
In the case of the flows, the procedure is the same, although instead of changing the fill color properties, we will change the "Link Line".