With the release of version R40, the configurable Grid view can be used to build an FMEA grid as an alternative to using the hard-coded FMEA grid view. This article provides an example grid configured for an "analysis area".
Note: A few functions available in the hard-coded FMEA Grid are not yet available in the configurable Grid view. They are:
|
Example Meta Model

Example Data

Example Configuration
<!--FMEA object [FMEA]-->
<!--Intent [FMIF]-->
<!--Failure Mode [FMFM]-->
<!--Failure Effect [2CFE]-->
<!--Cause [FMCA]-->
<!--Prevention [FMBP]-->
<!--Detection [FMBD]-->
<Grid>
<Options>
<CellAutoHeight/>
<HeaderAutoHeight/>
</Options>
<Variable name="FunctionalAnalysisArea" as="Item" select="."/>
<!--FMEA object [FMEA]-->
<ActionBindings>
<ActionBinding actionId="FMEAObject_New" caption="New FMEA Object" columnIds="Items_object" confirmationDialog="false">
<WithParam name="main" select="$FunctionalAnalysisArea"/>
<WithParam name="FMEAObject">
<DialogCreateItem itemType="FMEA"/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="FMEAObject_Add_Paste" caption="Add FMEA Object" columnIds="Items_object" confirmationDialog="false">
<WithParam name="main" select="$FunctionalAnalysisArea"/>
<WithParam name="FMEAObject">
<DialogSelectItems itemType="FMEA"/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="FMEAObject_Add_Paste" caption="Paste FMEA Object" columnIds="Items_object">
<WithParam name="main" select="$FunctionalAnalysisArea"/>
<WithParam name="FMEAObject">
<Clipboard/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Standard.RemovePart" columnIds="Items_object" removeObjectName="object" multiRemove="false" caption="Remove FMEA Object"/>
<!--Intent [FMIF]-->
<ActionBinding actionId="Intent_New" caption="New Design Intent" columnIds="Intent" confirmationDialog="false">
<WithParam name="object" objectName="object"/>
<WithParam name="intent">
<DialogCreateItem itemType="FMIF"/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Intent_Add_Paste" caption="Add Design Intent" columnIds="Intent" confirmationDialog="false">
<WithParam name="object" objectName="object"/>
<WithParam name="intent">
<DialogSelectItems itemType="FMIF"/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Intent_Add_Paste" caption="Paste Design Intent" columnIds="Intent">
<WithParam name="object" objectName="object"/>
<WithParam name="intent">
<Clipboard/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Standard.RemovePart" columnIds="Intent" removeObjectName="function" multiRemove="false" caption="Remove Design Intent"/>
<!--Failure Mode [FMFM]-->
<ActionBinding actionId="Failure_New" caption="New Failure Mode" columnIds="Failure" confirmationDialog="false">
<WithParam name="function" objectName="function"/>
<WithParam name="failure">
<DialogCreateItem itemType="FMFM"/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Failure_Add_Paste" caption="Add Failure Mode" columnIds="Failure" confirmationDialog="false">
<WithParam name="function" objectName="function"/>
<WithParam name="failure">
<DialogSelectItems itemType="FMFM"/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Failure_Add_Paste" caption="Paste Failure Mode" columnIds="Failure">
<WithParam name="function" objectName="function"/>
<WithParam name="failure">
<Clipboard/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Standard.RemovePart" columnIds="Failure" removeObjectName="failure" multiRemove="false" caption="Remove Failure Mode"/>
<!--Failure Effect [2CFE]-->
<ActionBinding actionId="Effects_New" caption="New Effect" columnIds="Effects" confirmationDialog="false">
<WithParam name="failure" objectName="failure"/>
<WithParam name="effect">
<DialogCreateItem itemType="2CFE"/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Effects_Add_Paste" caption="Add Effect" columnIds="Effects" confirmationDialog="false">
<WithParam name="failure" objectName="failure"/>
<WithParam name="effect">
<DialogSelectItems itemType="2CFE"/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Effects_Add_Paste" caption="Paste Effect" columnIds="Effects">
<WithParam name="failure" objectName="failure"/>
<WithParam name="effect">
<Clipboard/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Standard.RemovePart" columnIds="Effects" removeObjectName="effects" multiRemove="false" caption="Remove Effect"/>
<!--Cause [FMCA]-->
<ActionBinding actionId="Cause_New" caption="New Cause" columnIds="Cause" confirmationDialog="false">
<WithParam name="failure" objectName="failure"/>
<WithParam name="cause">
<DialogCreateItem itemType="FMCA"/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Cause_Add_Paste" caption="Add Cause" columnIds="Cause" confirmationDialog="false">
<WithParam name="failure" objectName="failure"/>
<WithParam name="cause">
<DialogSelectItems itemType="FMCA"/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Cause_Add_Paste" caption="Paste Cause" columnIds="Cause">
<WithParam name="failure" objectName="failure"/>
<WithParam name="cause">
<Clipboard/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Standard.RemovePart" columnIds="Cause" removeObjectName="cause" multiRemove="false" caption="Remove Cause"/>
<!--Prevention [FMBP]-->
<ActionBinding actionId="Prevention_New" caption="New Prevention" columnIds="Prevention" confirmationDialog="false">
<WithParam name="cause" objectName="cause"/>
<WithParam name="prevention">
<DialogCreateItem itemType="FMBP"/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Prevention_Add_Paste" caption="Add Prevention" columnIds="Prevention" confirmationDialog="false">
<WithParam name="cause" objectName="cause"/>
<WithParam name="prevention">
<DialogSelectItems itemType="FMBP"/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Prevention_Add_Paste" caption="Paste Prevention" columnIds="Prevention">
<WithParam name="cause" objectName="cause"/>
<WithParam name="prevention">
<Clipboard/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Standard.RemovePart" columnIds="Prevention" removeObjectName="prevention" multiRemove="false" caption="Remove Prevention"/>
<!--Detection [FMBD]-->
<ActionBinding actionId="Detection_New" caption="New Detection" columnIds="Detection" confirmationDialog="false">
<WithParam name="cause" objectName="cause"/>
<WithParam name="detection">
<DialogCreateItem itemType="FMBD"/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Detection_Add_Paste" caption="Add Detection" columnIds="Detection" confirmationDialog="false">
<WithParam name="cause" objectName="cause"/>
<WithParam name="detection">
<DialogSelectItems itemType="FMBD"/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Detection_Add_Paste" caption="Paste Detection" columnIds="Detection">
<WithParam name="cause" objectName="cause"/>
<WithParam name="detection">
<Clipboard/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="AddIssue" caption="Add issue">
<WithParam name="issue">
<DialogCreateIssue project="FMEA" issueType="FMEA Action"/>
</WithParam>
</ActionBinding>
<ActionBinding actionId="Standard.RemovePart" columnIds="Detection" removeObjectName="detection" multiRemove="false" caption="Remove Detection"/>
</ActionBindings>
<Actions>
<!--FMEA object [FMEA]-->
<Action id="AddIssue">
<Parameter name="issue" as="IssueData"/>
<Issue id="A" match="$issue">
</Issue>
</Action>
<Action id="FMEAObject_New">
<Parameter name="main" as="Item"/>
<Parameter name="FMEAObject" as="ItemData"/>
<Item id="FAA" match="$main"/>
<Item id="FMEAO" match="$FMEAObject"/>
<Part owner="FAA" partType="2IFB" defObj="FMEAO"/>
</Action>
<Action id="FMEAObject_Add_Paste">
<Parameter name="main" as="Item"/>
<Parameter name="FMEAObject" as="Item"/>
<Item id="FAA" match="$main"/>
<Item id="FMEAO" match="$FMEAObject"/>
<Part owner="FAA" partType="2IFB" defObj="FMEAO"/>
</Action>
<!--Intent [FMIF]-->
<Action id="Intent_New">
<Parameter name="object" as="Item"/>
<Parameter name="intent" as="ItemData"/>
<Item id="Obj" match="$object"/>
<Item id="Int" match="$intent"/>
<Part owner="Obj" partType="2IFQ" defObj="Int"/>
</Action>
<Action id="Intent_Add_Paste">
<Parameter name="object" as="Item"/>
<Parameter name="intent" as="Item"/>
<Item id="Obj" match="$object"/>
<Item id="Int" match="$intent"/>
<Part owner="Obj" partType="2IFQ" defObj="Int"/>
</Action>
<!--Failure Mode [FMFM]-->
<Action id="Failure_New">
<Parameter name="function" as="Item"/>
<Parameter name="failure" as="ItemData"/>
<Item id="Fun" match="$function"/>
<Item id="Fai" match="$failure"/>
<Part owner="Fun" partType="3IFM" defObj="Fai"/>
</Action>
<Action id="Failure_Add_Paste">
<Parameter name="function" as="Item"/>
<Parameter name="failure" as="Item"/>
<Item id="Fun" match="$function"/>
<Item id="Fai" match="$failure"/>
<Part owner="Fun" partType="3IFM" defObj="Fai"/>
</Action>
<!--Failure Effect [2CFE]-->
<Action id="Effects_New">
<Parameter name="failure" as="Item"/>
<Parameter name="effect" as="ItemData"/>
<Item id="Fai" match="$failure"/>
<Item id="Eff" match="$effect"/>
<Part owner="Fai" partType="3IFX" defObj="Eff"/>
</Action>
<Action id="Effects_Add_Paste">
<Parameter name="failure" as="Item"/>
<Parameter name="effect" as="Item"/>
<Item id="Fai" match="$failure"/>
<Item id="Eff" match="$effect"/>
<Part owner="Fai" partType="3IFX" defObj="Eff"/>
</Action>
<!--Cause [FMCA]-->
<Action id="Cause_New">
<Parameter name="failure" as="Item"/>
<Parameter name="cause" as="ItemData"/>
<Item id="Fai" match="$failure"/>
<Item id="Cau" match="$cause"/>
<Part owner="Fai" partType="3ICA" defObj="Cau"/>
</Action>
<Action id="Cause_Add_Paste">
<Parameter name="failure" as="Item"/>
<Parameter name="cause" as="Item"/>
<Item id="Fai" match="$failure"/>
<Item id="Cau" match="$cause"/>
<Part owner="Fai" partType="3ICA" defObj="Cau"/>
</Action>
<!--Prevention [FMBP]-->
<Action id="Prevention_New">
<Parameter name="cause" as="Item"/>
<Parameter name="prevention" as="ItemData"/>
<Item id="Cau" match="$cause"/>
<Item id="Pre" match="$prevention"/>
<Part owner="Cau" partType="3IPR" defObj="Pre"/>
</Action>
<Action id="Prevention_Add_Paste">
<Parameter name="cause" as="Item"/>
<Parameter name="prevention" as="Item"/>
<Item id="Cau" match="$cause"/>
<Item id="Pre" match="$prevention"/>
<Part owner="Cau" partType="3IPR" defObj="Pre"/>
</Action>
<!--Detection [FMBD]-->
<Action id="Detection_New">
<Parameter name="cause" as="Item"/>
<Parameter name="detection" as="ItemData"/>
<Item id="Cau" match="$cause"/>
<Item id="Det" match="$detection"/>
<Part owner="Cau" partType="3IDE" defObj="Det"/>
</Action>
<Action id="Detection_Add_Paste">
<Parameter name="cause" as="Item"/>
<Parameter name="detection" as="Item"/>
<Item id="Cau" match="$cause"/>
<Item id="Det" match="$detection"/>
<Part owner="Cau" partType="3IDE" defObj="Det"/>
</Action>
</Actions>
<Columns>
<ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Items/object" objectName="object" id="Items_object"/>
<Choose>
<When test="Type.SID = '2PEM'">
<ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Process intent" objectName="function" id="Intent"/>
</When>
<Otherwise>
<ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Function/Design intent" objectName="function" id="Intent"/>
</Otherwise>
</Choose>
<ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Potential failure mode" objectName="failure" id="Failure"/>
<TextColumn font="Normal8pt" cellMerge="True" multiValueStyle="Bullets" width="100" caption="Potential effect(s) of failure" objectName="effects" id="Effects">#{Name} (#{DefObj.Attribute:2AAG})</TextColumn>
<TextColumn font="Normal8pt" cellMerge="True" width="30" caption="Sev" objectName="failure">#{?DefObj/3IFX.Select(@2AAG).Max}</TextColumn>
<AttributeColumn font="Normal8pt" width="24" caption="Class" type="2SPC" objectName="cause"/>
<ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Potential cause(s)" objectName="cause" id="Cause"/>
<!--
<ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Sub cause(s)" objectName="cause2"/>
<ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Sub cause(s)" objectName="cause3"/>
<ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Sub cause(s)" objectName="cause4"/>
<ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Sub cause(s)" objectName="cause5"/>
-->
<Choose>
<When test="Type.SID = '2PEM'">
<ItemNameColumn font="Normal8pt" multiValueStyle="Bullets" width="100" caption="Current process prevention" objectName="prevention" id="Prevention"/>
</When>
<Otherwise>
<ItemNameColumn font="Normal8pt" multiValueStyle="Bullets" width="100" caption="Current design prevention" objectName="prevention" id="Prevention"/>
</Otherwise>
</Choose>
<ItemAttributeColumn font="Normal8pt" readOnly="False" width="30" caption="Occ" type="2AAH" objectName="cause"/>
<Choose>
<When test="Type.SID = '2PEM'">
<ItemNameColumn font="Normal8pt" multiValueStyle="Bullets" width="100" caption="Current process detection" objectName="detection" id="Detection"/>
</When>
<Otherwise>
<ItemNameColumn font="Normal8pt" multiValueStyle="Bullets" width="100" caption="Current design detection" objectName="detection" id="Detection"/>
</Otherwise>
</Choose>
<ItemAttributeColumn font="Normal8pt" readOnly="False" width="30" caption="Det" type="2AAI" objectName="cause"/>
<AttributeColumn font="Normal8pt" width="30" caption="RPN" type="2RP2" objectName="cause"/>
<NameColumn font="Normal8pt" multiValueStyle="Bullets" width="120" caption="Recommended actions" objectName="issues"/>
<AssignedToColumn font="Normal8pt" multiValueStyle="Bullets" width="80" caption="Responsible" objectName="issues"/>
<IssueAttributeColumn project="FMEA" font="Normal8pt" multiValueStyle="Bullets" width="80" caption="Due date" type="DUDA" objectName="issues" readOnly="false"/>
<IssueStatusColumn font="Normal8pt" multiValueStyle="Bullets" width="80" caption="Status" objectName="issues" readOnly="false"/>
<IssueAttributeColumn project="FMEA" font="Normal8pt" multiValueStyle="Bullets" width="100" caption="Action taken" type="ACTA" objectName="issues" readOnly="false"/>
<IssueAttributeColumn project="FMEA" font="Normal8pt" multiValueStyle="Bullets" width="80" caption="Completion date" type="CODA" objectName="issues" readOnly="false"/>
<TextColumn font="Normal8pt" width="30" caption="Curr. Sev." objectName="improvedFailureMode">#{?/3IFX.Select(@2AAG).Max}</TextColumn>
<ItemAttributeColumn font="Normal8pt" readOnly="False" width="30" caption="Curr. Occ." type="2AAH" objectName="improvedCause"/>
<ItemAttributeColumn font="Normal8pt" readOnly="False" width="30" caption="Curr. Det." type="2AAI" objectName="improvedCause"/>
<AttributeColumn font="Normal8pt" width="32" caption="Curr. RPN" type="2RP2" objectName="improvedCausePart" readOnly="false"/>
</Columns>
<Choose>
<When test="/2IFB">
<ForEachPart type="2IFB">
<!-- For each object -->
<ApplyTemplate name="FMEAObjectPart"/>
</ForEachPart>
</When>
<When test="/PFOB">
<ForEachPart type="PFOB">
<!-- For each object -->
<ApplyTemplate name="FMEAObjectPart"/>
</ForEachPart>
</When>
<Otherwise>
<Row/>
</Otherwise>
</Choose>
<Template name="FMEAObjectPart">
<RowObject name="object">
<DefObj>
<Choose>
<When test="/2IFQ">
<ForEachPart type="2IFQ">
<!-- For each function -->
<ApplyTemplate name="FunctionPart"/>
</ForEachPart>
</When>
<Otherwise>
<Row/>
</Otherwise>
</Choose>
</DefObj>
</RowObject>
</Template>
<Template name="FunctionPart">
<RowObject name="function">
<DefObj>
<Choose>
<When test="/3IFM">
<ForEachPart type="3IFM">
<!-- For each failure -->
<ApplyTemplate name="FailurePart"/>
</ForEachPart>
</When>
<Otherwise>
<Row/>
</Otherwise>
</Choose>
</DefObj>
</RowObject>
</Template>
<Template name="FailurePart">
<RowObject name="failure">
<DefObj>
<Choose>
<When test="/3ICA">
<ForEachPart type="3ICA">
<!-- For each cause -->
<Log>Main cause</Log>
<ApplyTemplate name="Cause"/>
</ForEachPart>
</When>
<Otherwise>
<Row>
<ForEachPart type="3IFX" sort="DefObj.Attribute:2AAG" sortOrder="descending">
<RowObject name="effects"/>
</ForEachPart>
</Row>
</Otherwise>
</Choose>
</DefObj>
</RowObject>
</Template>
<Template name="Cause">
<Row>
<ApplyTemplate name="CauseRow"/>
<RowObject name="cause"/>
</Row>
<RowObject name="cause">
<DefObj>
<ForEachPart type="3ISC">
<!-- For each cause -->
<Log>Sub cause</Log>
<ApplyTemplate name="Cause2"/>
</ForEachPart>
</DefObj>
</RowObject>
</Template>
<Template name="Cause2">
<Row>
<ApplyTemplate name="CauseRow"/>
<RowObject name="cause2"/>
</Row>
<RowObject name="cause2">
<DefObj>
<ForEachPart type="3ISC">
<!-- For each cause -->
<ApplyTemplate name="Cause3"/>
</ForEachPart>
</DefObj>
</RowObject>
</Template>
<Template name="Cause3">
<Row>
<ApplyTemplate name="CauseRow"/>
<RowObject name="cause3"/>
</Row>
<RowObject name="cause3">
<DefObj>
<ForEachPart type="3ISC">
<!-- For each cause -->
<ApplyTemplate name="Cause4"/>
</ForEachPart>
</DefObj>
</RowObject>
</Template>
<Template name="Cause4">
<Row>
<ApplyTemplate name="CauseRow"/>
<RowObject name="cause4"/>
</Row>
<RowObject name="cause4">
<DefObj>
<ForEachPart type="3ISC">
<!-- For each cause -->
<ApplyTemplate name="Cause5"/>
</ForEachPart>
</DefObj>
</RowObject>
</Template>
<Template name="Cause5">
<Row>
<ApplyTemplate name="CauseRow"/>
<RowObject name="cause5"/>
</Row>
</Template>
<Template name="CauseRow">
<Log>Cause: #{Name}</Log>
<Owner>
<ForEachPart type="3IFX" sort="DefObj.Attribute:2AAG" sortOrder="descending">
<!-- For each effect -->
<RowObject name="effects"/>
</ForEachPart>
</Owner>
<DefObj>
<ForEachIssueInObj type="ORGC">
<RowObject name="issues"/>
</ForEachIssueInObj>
<Variable name="improvedCause" select="/issueref::ORGC/objref::IMPC" as="Items"/>
<ForEach select="$improvedCause">
<RowObject name="improvedCause"/>
</ForEach>
<Variable name="improvedFailureMode" select="/issueref::ORGC/objref::IMFM" as="Items"/>
<ForEach select="$improvedFailureMode">
<RowObject name="improvedFailureMode"/>
<ForEachPart type="3ICA">
<!-- For each cause -->
<If test="DefObjIs($improvedCause)">
<RowObject name="improvedCausePart"/>
</If>
</ForEachPart>
</ForEach>
<ForEachPart type="3IPR">
<!-- Preventions -->
<RowObject name="prevention"/>
</ForEachPart>
<ForEachPart type="3IDE">
<!-- Detections-->
<RowObject name="detection"/>
</ForEachPart>
</DefObj>
</Template>
<Function name="DefObjIs" as="Boolean">
<Parameter name="DefObjItems" as="Items"/>
<DefObj>
<Value select=". in $DefObjItems"/>
</DefObj>
</Function>
</Grid>Example Result

