code: def export_node_di_data(node_id, params, plane):
          
          output_element_di = eTree.SubElement(plane, BpmnDiagramGraphExport.bpmndi_namespace + consts.Consts.bpmn_shape)
          output_element_di.set(consts.Consts.id, node_id + "_gui")
  
          output_element_di.set(consts.Consts.bpmn_element, node_id)
          bounds = eTree.SubElement(output_element_di, "omgdc:Bounds")
          bounds.set(consts.Consts.width, params[consts.Consts.width])
          bounds.set(consts.Consts.height, params[consts.Consts.height])
          bounds.set(consts.Consts.x, params[consts.Consts.x])
          bounds.set(consts.Consts.y, params[consts.Consts.y])
          if params[consts.Consts.type] == consts.Consts.subprocess:
              output_element_di.set(consts.Consts.is_expanded, params[consts.Consts.is_expanded])
docs: Creates a new BPMNShape XML element for given node parameters and adds it to 'plane' element.
  
          :param node_id: string representing ID of given flow node,
          :param params: dictionary with node parameters,
          :param plane: object of Element class, representing BPMN XML 'BPMNPlane' element (root for node DI data).