- Update IModuleProcessor interface to accept targetBOMs collection instead of targetItemName string - Remove filtering logic from strategy implementations (AppendOnly, CloneNew) - Add LoadData method to mSpecAdditionManager for UI initialization - Rename ExecuteAddition to ExecutePipeline with refined parameters - Enhance test suite to simulate fine-grained UI selection behavior - Enable precise row-level control by delegating filtering to UI layer This refactoring achieves better separation of concerns where: - Strategy layer focuses purely on execution logic - UI layer handles selection and filtering - Manager layer coordinates the pipeline flow Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
24 lines
881 B
OpenEdge ABL
24 lines
881 B
OpenEdge ABL
' ==============================================================================
|
||
' 模块名称: cProcessor_AppendOnly
|
||
' 模块类别: 类模块
|
||
' 模块职责: 通用追加策略。
|
||
' 逻辑描述: 无脑遍历传入的 targetBOMs 集合,利用引擎进行条件追加。
|
||
' ==============================================================================
|
||
Option Explicit
|
||
Implements IModuleProcessor
|
||
|
||
Private Sub IModuleProcessor_ProcessSpec( _
|
||
ByRef allBOMs As Collection, _
|
||
ByRef targetBOMs As Collection, _
|
||
ByVal paramName As String, _
|
||
ByVal newValue As String, _
|
||
ByRef engine As cConditionEngine)
|
||
|
||
Dim rowObj As cBOMRow
|
||
|
||
' 不再需要判断名字,因为 UI 层传过来的 targetBOMs 就是已经挑好的
|
||
For Each rowObj In targetBOMs
|
||
rowObj.Condition = engine.InjectOr(rowObj.Condition, paramName, newValue)
|
||
Next rowObj
|
||
|
||
End Sub |