Example: A Design Template

This example describes a template on an example.

The template lets you create the following table:



Each column of the table is described as follows:

Column Description
Function The cell contains a function implemented (reference-reference link) by the item under analysis. Here, the system is an engine control system. The function is stored as an effectsWithoutBarrierOccurrence path.
Failure Mode The cell contains "Cannot control engine power", which is a failure mode associated with the function. The failure mode is stored as an effectsWithoutBarrier path.
Failure Effects The cell contains an effectsWithoutBarrierOccurrence path.
S The cell contains 4 value, proposed from a list of authorized values. It uses a "RPNSeverity" dataIndex that is not predefined and not reserved, and which is interpreted as an attribute. No targetDataIndex is used. Hence, the severity is supposed to be an attribute of the causality relationship. In practice, an extension defines RPNSeverity as an attribute of a causality relationship.
{ "text" : "S",
  "dataIndex" : "RPNSeverity",
  "width" : "20px",
  "authorizedValues" : [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
}  
RPN The cell contains the product of values in the columns: S, O, and D.
{ "text" : "RPN",
  "dataIndex" : "RPNRiskPriorityNumber",
  "formula" : "module:MyModule/Formulas/RPN",
  "width" : "20px"
} 
The corresponding module is:
define('MyModule/Formulas/RPN', [],
function() {
	'use strict';
	var Formula = function() {};
	Formula.prototype.execute = function(fmea, causalityRelationship) {
		var rpn = parseInt(causalityRelationship.getAttribute('RPNDetection')) * parseInt(causalityRelationship.getAttribute('RPNSeverity')) + parseInt(causalityRelationship.getAttribute('RPNOccurrence'));
		if( isNaN(rpn) ) {
			return '';
		}
		return '' + rpn;
	};
	return Formula;
});
Failure Causes The cell suggests values found in the structure tree as follows:
{ "text" : "Failure Causes",
  "dataIndex" : "cause",
  "width" : "200px"
} 


The causes are found in the design of the item under analysis. The cause is the combination of a cause occurrence and a cause failure mode. It is stored in the causeOccurrence path of the causality relationship.
Prevention Controls Requirements or any subtype of requirement can be dragged in cells of this column:

This is specified by the following code where the "types" attribute defines accepted MQL types that can be dropped in the cell:
{ "text" : "Prevention Controls",
  "dataIndex" : "effectsIsPreventedBy",
  "types" : [ "Requirement" ],
  "width" : "200px"
} 
Actions The cell can contain multiple change actions as specified by the following code:
{ "text" : "Actions",
  "dataIndex" : "actions",
  "qualifiers" : [ {
    "name" : "current",
    "text" : "S",
    "width" : "20px"
    }, {
    "name" : "Assignee",
    "text" : "A",
    "width" : "20px"
    } ],
  "types" : [ "Task","Change Action"],
  "width" : "200px"
}
Here is an example of the display:

.json File

The .json code corresponding to the definition of a template is the following:

{ "title":"Design FMEA",
  "columns": [{
      "text" : "Function",
      "dataIndex" : "function",
      "width" : "200px"
  }, {
      "text" : "Failure Mode",
      "dataIndex" : "directEffect",
      "width" : "200px"
  }, {
      "text" : "Failure Effects",
      "dataIndex" : "higherLevelEffects",
      "qualifiers" : [{
              "global" : "true",
              "name" : "RPNSeverity",
              "text" : "S" 
      }],
      "width" : "200px"
  }, {
      "text" : "Sev.",
      "dataIndex" : "RPNSeverity",
      "width" : "20px",
      "authorizedValues" : [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
  }, {
      "text" : "Failure Causes",
      "dataIndex" : "cause",
      "width" : "200px"
  }, {
      "text" : "Prevention Controls",
      "dataIndex" : "effectsIsPreventedBy",
      "alternateTextAttribute": "V_Prevention",
      "types" : [ "Requirement" ],
      "width" : "200px"
  }, {
      "text" : "Occ.",
      "dataIndex" : "RPNOccurrence",
      "width" : "20px",
      "authorizedValues" : [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
  }, {
      "text" : "Detection Controls",
      "dataIndex" : "effectsIsProtectedBy",
      "types" : [ "Requirement" ],
      "width" : "200px"
  }, {
      "text" : "Det.",
      "dataIndex" : "RPNDetection",
      "width" : "20px",
      "authorizedValues" : [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
  }, {
      "text" : "RPN",
      "dataIndex" : "RPNRiskPriorityNumber",
      "formula" : "module:MyModule/Formulas/RPN",
      "width" : "20px"
  }, {
      "text" : "Actions",
      "dataIndex" : "actions",
      "qualifiers" : [ {
              "name" : "current",
              "text" : "S",
              "width" : "20px"
      }, {
              "name" : "Assignee",
              "text" : "A",
              "width" : "20px"
    } ],
      "types" : [ "Task","Change Action"],
      "width" : "200px"
  }], 
  "groups":[ "function", "directEffect", "cause" ]
  "style": "module:css!DS/CATSFYAiagVdaFailureModesEffectsAnalysis/CATSFYAiagVdaFailureModesEffectsAnalysis.css",
}