@staticmethod<EOL><INDENT>def import_shape_di(participants_dict, diagram_graph, shape_element):<DEDENT>
element_id = shape_element.getAttribute(consts.Consts.bpmn_element)<EOL>bounds = shape_element.getElementsByTagNameNS("<STR_LIT:*>", "<STR_LIT>")[<NUM_LIT:0>]<EOL>if diagram_graph.has_node(element_id):<EOL><INDENT>node = diagram_graph.node[element_id]<EOL>node[consts.Consts.width] = bounds.getAttribute(consts.Consts.width)<EOL>node[consts.Consts.height] = bounds.getAttribute(consts.Consts.height)<EOL>if node[consts.Consts.type] == consts.Consts.subprocess:<EOL><INDENT>node[consts.Consts.is_expanded] =shape_element.getAttribute(consts.Consts.is_expanded)if shape_element.hasAttribute(consts.Consts.is_expanded) else "<STR_LIT:false>"<EOL><DEDENT>node[consts.Consts.x] = bounds.getAttribute(consts.Consts.x)<EOL>node[consts.Consts.y] = bounds.getAttribute(consts.Consts.y)<EOL><DEDENT>if element_id in participants_dict:<EOL><INDENT>participant_attr = participants_dict[element_id]<EOL>participant_attr[consts.Consts.is_horizontal] = shape_element.getAttribute(consts.Consts.is_horizontal)<EOL>participant_attr[consts.Consts.width] = bounds.getAttribute(consts.Consts.width)<EOL>participant_attr[consts.Consts.height] = bounds.getAttribute(consts.Consts.height)<EOL>participant_attr[consts.Consts.x] = bounds.getAttribute(consts.Consts.x)<EOL>participant_attr[consts.Consts.y] = bounds.getAttribute(consts.Consts.y)<EOL><DEDENT>
Adds Diagram Interchange information (information about rendering a diagram) to appropriate
BPMN diagram element in graph node.
We assume that those attributes are required for each BPMNShape:

- width - width of BPMNShape,
- height - height of BPMNShape,
- x - first coordinate of BPMNShape,
- y - second coordinate of BPMNShape.

:param participants_dict: dictionary with 'participant' elements attributes,
:param diagram_graph: NetworkX graph representing a BPMN process diagram,
:param shape_element: object representing a BPMN XML 'BPMNShape' element.