In Solibri, you can create sub-rules under a parent rule and use one rule to filter information and pass results to the next rule. This can be done using so called gatekeeper rules. This article explains what gatekeeper rules are and how you can create them in Ruleset Manager.
This article covers the following topics:
In a building design and construction process, it's important to keep track of the project phases and control sub-projects. Therefore, it's often necessary to deviate the quality assurance in a series of rulesets, or focus on more detailed deliveries of the project. Solibri's gatekeeper rules can help you with this.
Gatekeeper rules are most commonly used in data delivery validation, or a combination of construction and data validation rules. Here are some further examples on how to use gatekeeper rules:
You can use a gatekeeper rule to, for example, set preconditions for checking the level of information on a specific design phase, or focus on a small group of target components.
You can check if internal doors are connected to two spaces. You can use rule #230 as the gatekeeper rule to check if the door is an external or internal door ( Pset_DoorCommon IsExternal is True). Then, you can push the failures to the sub-rule #231 to check that the door has a relation to two different spaces.
You can check the level of information on a certain design phase. First, you can use rule #230 as the gatekeeper to check a selected design phase (Conceptual Design). You can then use rule #11 as a sub-rule to check that the model has spaces defined. Finally, you can use rule #230 to check that all the defined spaces are named.
In a ruleset with normal rules, each rule is checked individually, and rejected components produce issues, as described in the image below:
By using gatekeeper rules, it's possible pass only specific components (based on some condition) from a parent rule to sub-rules for further checking. The parent rule is the gatekeeper rule, and it can have one or more sub-rules nested under it. All the rules can use different rule templates, or the parent rule and sub-rules can use the same rule template.
The image below describes at a general level how gatekeeper rules operate. The example shows a gatekeeper rule and one sub-rule. The parent level rule (§1) controls what components will be checked on the second level sub-rule (§2):
As mentioned, a gatekeeper rule can also have multiple sub-rules, as shown in the example below, where the parent rule has two sub-rules. The output of §2 will be the input of §3:
You can see that there are four options for passing the components to the sub-rule(s). You can choose between these options to set the precondition for checking the whole model, or just filter out one or more specific building elements. The options become available to select once a sub-rule is added under a parent rule these are located in the Info view of the parent rule (in Ruleset Manager).
You may have to navigate from the parent rule and back to it to refresh the rule so that the options appear.
The Info view includes:
Check all model components, if passed: If the components of this rule pass, then the sub-rule(s) will check the entire model.
Check all model components, if issues: If the any of the components fail in this rule, then the sub-rule(s) will check the entire model.
Check only failed components: Only components that have failed the check will be passed to sub-rule(s).
Check only passed components: Only components that have passed the check will be passed to sub-rule(s).
The core idea of the parent and sub-rule structure is to investigate the same set of components using multiple rules. Therefore, the source component in the component filters needs to always be the same. The number of elements that will be checked will be related to the sub-rule option selected. Subsequent sub-rules can be used to refine the number of checked components. In the example below, we have a ruleset where the parent rule checks that the maximum length of pre-fabricated concrete columns is 6000 mm, and the sub-rule checks that if there are columns which are longer than 6000mm, the material of the columns must be steel or reinforced concrete:
The parent rule parameters define the maximum length of the columns, and passes only the failed components to the sub-rule:
The sub-rule checks that the material requirements for the failed components, i.e. columns longer than 6000 mm, are met:
If you have set the Sub-Rule Option to pass either passed or failed components, and you need to check all of the components that have passed or failed, you can simply set the source component to be Any.
However, in any rule that has two component filters, the parent rule will only pass components based on the sub-rule options to the Source component or Component 1, not Component 2 or Target component . The Target component or Component 2 will always need to be configured.
In the Checking view, gatekeeper rules behave differently to normal rules. If a Gatekeeper rule does not evaluate in the filter, i.e. the are no elements to check, then the Gatekeeper and sub-rules will not appear in the Checking view. However, if the gatekeeper is an independent subset, the "folder" level of the gatekeeper remains in the Checking view.
If this happens, it indicates that there's probably something missing or incorrect in the sub-rule parameter configuration. Check that the component filters include the correct components, the components have the correct properties set, and the tolerances have been set correctly.
To investigate the parameter configuration in detail, you can use the Checked Components view. The view shows you the checked, passed and rejected components, which makes it easy to see what has been checked and which components (if any) have been passed to the sub-rule.
The order of the rules can affect the way the results are shown. For example, if you're using a property rule and a distance rule and you want to visualise the distance, then this must be at the bottom of the hierarchy. If you carry out the distance check and then use the property rule to filter the elements , you loose the dimension. Therefore, it's better to filter the requirements first with the rule and then use the distance between components so that the dimension values are not lost in the interface.
You can copy the gate keeper rule and change the name slightly to give a physical result, i.e. gatekeeper rules only act as a conduit passing elements to the sub-rule.
If you do copy the gatekeeper because you are interested in the failed results, then you also need to be mindful of the Results Summary statistics for duplicated data.
Also, in the Results Summary, you may only be interested in the outcome of the final rule as a part of the gatekeeper process. Please keep this in mind.
Most rules have only one filter for components to be checked, but some rules, such as #1 General Intersection Rule and #222 Component Distance Rule, have two filters for components. The target component to be checked and passed on to the sub-rule must always be in the first filter (the one on the left hand side). For example, in the General Intersection Rule, the filter is called Component 1:
but in the Component Distance Rule, it's called Source Components to be Checked:
Also, in component-specific rules, such as rule #19, the required component (space) is stated in the name of the filter:
If the gatekeeper rule is not working as expected, check that you have set the component filters correctly, i.e. that the component to be checked is in the left-hand-side filter. If the model doesn't contain the components specified in filter table 2, the rule can't be run and the check returns the result "component not found".
Just like any other rules, gatekeeper rules are created in in the Workspace view of Ruleset Manager. First, you need to create the parent rule. Then, you can add other rules as sub-rules. You can use the same rule template in the parent and sub-rules, or choose a different one, depending on what you wish to check. To create the parent rule/sub-rule structure, you need to place the sub-rule under the parent rule.
When possible, ensure that rules run correctly independently before adding them to a gatekeeper structure.
Go to Ruleset Manager by clicking File > Ruleset Manager.
Select the rule template you wish to use. In this example, we'll use rule #230 to create a ruleset where the parent rule checks that the maximum length of pre-fabricated concrete columns is 6000 mm, and the sub-rule checks that if there are columns which are longer than 6000mm, the material of the columns must be steel or reinforced concrete:
To open the rule in the Workspace view, select the rule in the Ruleset Folders view, and click in the Workspace view toolbar. To rename the rule, select it in the Workspace view and edit the name in the Info view.
To create a copy of the rule, right-click the rule and select Copy.
Paste the copy of the rule (or any rule you wish to become the sub-rule) into the parent rule. Now it becomes a sub-rule.
Alternatively, you can add rules from the Ruleset Folders view to the Workspace view by dragging and dropping them.
Configuring the parent rule:
When you have created this structure, the parent rule shows the Sub Rule Options in the Info view. In this parent level, you have to decide how you want your checking to proceed towards the following level.
Next, you need to configure the parent rule. As explained above, you have four options to choose from:
Check all model components, if passed: If the components of this rule pass, then the sub rules will check the entire model.
Check all model components, if issues: If the any of the components fail in this rule, then the sub rules will check on the entire model.
Check only failed components: Only components that have failed the check, will be passed on to sub rules.
Check only passed components: Only components that have passed the check, will be passed on to sub rules.
In the example, we only wish to pass on the failed components to the sub-rule. The parent rule is configured to check that the maximum length of pre-fabricated concrete columns is 6000 mm. Therefore, any column which is over 6,000mm fails the parent rule and should be passed on to sub-rule for subsequent checking:
Rename the sub-rule:
Configuring the sub-rule:
Now you can configure the sub-rule. In the example below, the sub-rule is configured to check that that any columns passed from the parent rule (which are longer than 6,000mm) must have a material of steel or reinforced concrete:
To save the ruleset you created, click in the Workspace view toolbar:
You can test the behaviour of the rules by checking the model. To get a better understanding of which components have been checked, passed, or failed, open the Checked Components view: