def import_flow_node_to_graph(bpmn_graph, process_id, process_attributes, flow_node_element):
        """
        Adds a new node to graph.
        Input parameter is object of class xml.dom.Element.
        Nodes are identified by ID attribute of Element.
        Method adds basic attributes (shared by all BPMN elements) to node. Those elements are:

        - id - added as key value, we assume that this is a required value,
        - type - tagName of element, used to identify type of BPMN diagram element,
        - name - optional attribute, empty string by default.

        :param bpmn_graph: NetworkX graph representing a BPMN process diagram,
        :param process_id: string object, representing an ID of process element,
        :param process_attributes: dictionary that holds attribute values of 'process' element, which is parent of
            imported flow node,
        :param flow_node_element: object representing a BPMN XML element corresponding to given flownode,
        """
        element_id = flow_node_element.getAttribute(consts.Consts.id)
        bpmn_graph.add_node(element_id)
        bpmn_graph.node[element_id][consts.Consts.id] = element_id
        bpmn_graph.node[element_id][consts.Consts.type] = \
            utils.BpmnImportUtils.remove_namespace_from_tag_name(flow_node_element.tagName)
        bpmn_graph.node[element_id][consts.Consts.node_name] = \
            flow_node_element.getAttribute(consts.Consts.name) \
                if flow_node_element.hasAttribute(consts.Consts.name) \
                else ""
        bpmn_graph.node[element_id][consts.Consts.process] = process_id
        process_attributes[consts.Consts.node_ids].append(element_id)

        # add incoming flow node list
        incoming_list = []
        for tmp_element in utils.BpmnImportUtils.iterate_elements(flow_node_element):
            if tmp_element.nodeType != tmp_element.TEXT_NODE:
                tag_name = utils.BpmnImportUtils.remove_namespace_from_tag_name(tmp_element.tagName)
                if tag_name == consts.Consts.incoming_flow:
                    incoming_value = tmp_element.firstChild.nodeValue
                    incoming_list.append(incoming_value)
        bpmn_graph.node[element_id][consts.Consts.incoming_flow] = incoming_list

        # add outgoing flow node list
        outgoing_list = []
        for tmp_element in utils.BpmnImportUtils.iterate_elements(flow_node_element):
            if tmp_element.nodeType != tmp_element.TEXT_NODE:
                tag_name = utils.BpmnImportUtils.remove_namespace_from_tag_name(tmp_element.tagName)
                if tag_name == consts.Consts.outgoing_flow:
                    outgoing_value = tmp_element.firstChild.nodeValue
                    outgoing_list.append(outgoing_value)
        bpmn_graph.node[element_id][consts.Consts.outgoing_flow] = outgoing_list