处理模块基类 所有处理模块都应该继承此类并实现 process() 方法。 子模块职责: 1. 处理自己负责的元素类型 2. 生成对应的mxCell XML代码 3. 设置 element.xml_fragment 和 element.layer_level 使用示例: class MyProcessor(BaseProcessor): def process(self, context: ProcessingContext) -> Proce
| 67 | |
| 68 | |
| 69 | class BaseProcessor(ABC): |
| 70 | """ |
| 71 | 处理模块基类 |
| 72 | |
| 73 | 所有处理模块都应该继承此类并实现 process() 方法。 |
| 74 | |
| 75 | 子模块职责: |
| 76 | 1. 处理自己负责的元素类型 |
| 77 | 2. 生成对应的mxCell XML代码 |
| 78 | 3. 设置 element.xml_fragment 和 element.layer_level |
| 79 | |
| 80 | 使用示例: |
| 81 | class MyProcessor(BaseProcessor): |
| 82 | def process(self, context: ProcessingContext) -> ProcessingResult: |
| 83 | for elem in context.elements: |
| 84 | if self._should_process(elem): |
| 85 | xml = self._generate_xml(elem) |
| 86 | elem.xml_fragment = xml |
| 87 | elem.layer_level = LayerLevel.BASIC_SHAPE.value |
| 88 | return ProcessingResult(success=True, elements=context.elements) |
| 89 | """ |
| 90 | |
| 91 | def __init__(self, config: Optional['ProcessingConfig'] = None): |
| 92 | """ |
| 93 | 初始化处理器 |
| 94 | |
| 95 | Args: |
| 96 | config: 处理配置,如果为None则使用默认配置 |
| 97 | """ |
| 98 | from .data_types import ProcessingConfig |
| 99 | self.config = config or ProcessingConfig() |
| 100 | self._model = None # 延迟加载的模型实例 |
| 101 | |
| 102 | @property |
| 103 | def name(self) -> str: |
| 104 | """模块名称(用于日志和标识)""" |
| 105 | return self.__class__.__name__ |
| 106 | |
| 107 | @abstractmethod |
| 108 | def process(self, context: ProcessingContext) -> 'ProcessingResult': |
| 109 | """ |
| 110 | 处理入口 - 子类必须实现 |
| 111 | |
| 112 | Args: |
| 113 | context: 处理上下文,包含输入数据和共享状态 |
| 114 | |
| 115 | Returns: |
| 116 | ProcessingResult: 处理结果 |
| 117 | |
| 118 | 子类实现要点: |
| 119 | 1. 遍历 context.elements,找到需要处理的元素 |
| 120 | 2. 生成 mxCell XML字符串 |
| 121 | 3. 设置 element.xml_fragment = xml_string |
| 122 | 4. 设置 element.layer_level = 合适的层级 |
| 123 | 5. 返回 ProcessingResult |
| 124 | """ |
| 125 | pass |
| 126 |
nothing calls this directly
no outgoing calls
no test coverage detected