@staticmethod<EOL><INDENT>def generate_nodes_clasification(bpmn_diagram):<DEDENT>
nodes_classification = {}<EOL>classification_element = "<STR_LIT>"<EOL>classification_start_event = "<STR_LIT>"<EOL>classification_end_event = "<STR_LIT>"<EOL>task_list = bpmn_diagram.get_nodes(consts.Consts.task)<EOL>for element in task_list:<EOL><INDENT>classification_labels = [classification_element]<EOL>BpmnImportUtils.split_join_classification(element, classification_labels, nodes_classification)<EOL><DEDENT>subprocess_list = bpmn_diagram.get_nodes(consts.Consts.subprocess)<EOL>for element in subprocess_list:<EOL><INDENT>classification_labels = [classification_element]<EOL>BpmnImportUtils.split_join_classification(element, classification_labels, nodes_classification)<EOL><DEDENT>complex_gateway_list = bpmn_diagram.get_nodes(consts.Consts.complex_gateway)<EOL>for element in complex_gateway_list:<EOL><INDENT>classification_labels = [classification_element]<EOL>BpmnImportUtils.split_join_classification(element, classification_labels, nodes_classification)<EOL><DEDENT>event_based_gateway_list = bpmn_diagram.get_nodes(consts.Consts.event_based_gateway)<EOL>for element in event_based_gateway_list:<EOL><INDENT>classification_labels = [classification_element]<EOL>BpmnImportUtils.split_join_classification(element, classification_labels, nodes_classification)<EOL><DEDENT>inclusive_gateway_list = bpmn_diagram.get_nodes(consts.Consts.inclusive_gateway)<EOL>for element in inclusive_gateway_list:<EOL><INDENT>classification_labels = [classification_element]<EOL>BpmnImportUtils.split_join_classification(element, classification_labels, nodes_classification)<EOL><DEDENT>exclusive_gateway_list = bpmn_diagram.get_nodes(consts.Consts.exclusive_gateway)<EOL>for element in exclusive_gateway_list:<EOL><INDENT>classification_labels = [classification_element]<EOL>BpmnImportUtils.split_join_classification(element, classification_labels, nodes_classification)<EOL><DEDENT>parallel_gateway_list = bpmn_diagram.get_nodes(consts.Consts.parallel_gateway)<EOL>for element in parallel_gateway_list:<EOL><INDENT>classification_labels = [classification_element]<EOL>BpmnImportUtils.split_join_classification(element, classification_labels, nodes_classification)<EOL><DEDENT>start_event_list = bpmn_diagram.get_nodes(consts.Consts.start_event)<EOL>for element in start_event_list:<EOL><INDENT>classification_labels = [classification_element, classification_start_event]<EOL>BpmnImportUtils.split_join_classification(element, classification_labels, nodes_classification)<EOL><DEDENT>intermediate_catch_event_list = bpmn_diagram.get_nodes(consts.Consts.intermediate_catch_event)<EOL>for element in intermediate_catch_event_list:<EOL><INDENT>classification_labels = [classification_element]<EOL>BpmnImportUtils.split_join_classification(element, classification_labels, nodes_classification)<EOL><DEDENT>end_event_list = bpmn_diagram.get_nodes(consts.Consts.end_event)<EOL>for element in end_event_list:<EOL><INDENT>classification_labels = [classification_element, classification_end_event]<EOL>BpmnImportUtils.split_join_classification(element, classification_labels, nodes_classification)<EOL><DEDENT>intermediate_throw_event_list = bpmn_diagram.get_nodes(consts.Consts.intermediate_throw_event)<EOL>for element in intermediate_throw_event_list:<EOL><INDENT>classification_labels = [classification_element]<EOL>BpmnImportUtils.split_join_classification(element, classification_labels, nodes_classification)<EOL><DEDENT>return nodes_classification<EOL>
Diagram elements classification. Implementation based on article "A Simple Algorithm for Automatic Layout of
BPMN Processes".
Assigns a classification to the diagram element according to specific element parameters.
- Element - every element of the process which is not an edge,
- Start Event - all types of start events,
- End Event - all types of end events,
- Join - an element with more than one incoming edge,
- Split - an element with more than one outgoing edge.

:param bpmn_diagram: BPMNDiagramGraph class instance representing a BPMN process diagram.
:return: a dictionary of classification labels. Key - node id. Values - a list of labels.