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>