首页 理论 架构 工程 文档 白皮书 著作 研究 案例 下载 博客 关于 开始使用 →

第222章 BehaviorActionRepository

第222章 BehaviorActionRepository

222.1 BehaviorActionRepository定义

第221章已经建立:

Goal→Capability→Matching→Method→Decision→BehaviorGoal \rightarrow Capability \rightarrow Matching \rightarrow Method \rightarrow Decision \rightarrow Behavior

DecisionEngine完成方案选择以后,系统不能停留在“选择结果”。

选定的 Method 必须转换成当前可以执行的 Behavior,Behavior进一步组织 Action,Action进入 Execution,Execution产生 Result。

因此形成:

Decision
 ↓
Method
 ↓
Behavior
 ↓
Action
 ↓
Execution
 ↓
Result

这一阶段产生大量必须长期保存的数据:

Behavior
Action
Result
Execution History

因此建立:

BehaviorActionRepositoryBehaviorActionRepository

核心模型:

BAR=(B,A,R,E,H,Q,P,T)BAR=(B,A,R,E,H,Q,P,T)

其中:

  • BB:Behavior;
  • AA:Action;
  • RR:Result;
  • EE:Execution;
  • HH:Execution History;
  • QQ:Query;
  • PP:Persistence;
  • TT:Time。

因此:

BehaviorActionRepository=Behavior+Action+Result+ExecutionHistory\boxed{ BehaviorActionRepository = Behavior + Action + Result + ExecutionHistory }

这里需要特别区分:

BehaviorActionRepository≠BehaviorEngineBehaviorActionRepository \neq BehaviorEngine BehaviorActionRepository≠ActionEngineBehaviorActionRepository \neq ActionEngine BehaviorActionRepository≠ExecutionEngineBehaviorActionRepository \neq ExecutionEngine

Repository负责保存、读取、更新和查询执行事实

Engine负责计算和运行。


222.2 Behavior领域对象

前面的 BehaviorEngine 已经定义:

B=(G,C,A,E,R,S)B=(G,C,A,E,R,S)

其中:

  • GG:Goal;
  • CC:Condition;
  • AA:Action Sequence;
  • EE:Execution;
  • RR:Result;
  • SS:State。

Behavior回答:

当前准备如何完成一个目标\boxed{当前准备如何完成一个目标}

它是从 Method 和 Decision 形成的当前可执行行为结构。

例如:

Goal G1
 ↓
Decision D1
 ↓
Method M1
 ↓
Behavior B1
 ↓
A1 → A2 → A3

Behavior不是单个 Action。

Behavior≠ActionBehavior\neq Action

Behavior是由多个 Action 组成的完整行为。


222.3 Action领域对象

Action模型:

A=(T,O,C,P,R,S)A=(T,O,C,P,R,S)

其中:

  • TT:Action Type;
  • OO:Target Object;
  • CC:Condition;
  • PP:Parameters;
  • RR:Expected Result;
  • SS:Action State。

Action表示具体操作。

例如:

Behavior B1
 ↓
Action A1:读取对象
 ↓
Action A2:修改属性
 ↓
Action A3:保存状态

因此:

Behavior={A1,A2,…,An}Behavior=\{A_1,A_2,\ldots,A_n\}

Action是 Behavior 的具体操作单元。


222.4 Result领域对象

Result表示实际执行产生的结果。

定义:

R=(Ex,Ar,S,C,T)R=(E_x,A_r,S,C,T)

其中:

  • ExE_x:Execution;
  • ArA_r:Actual Result;
  • SS:Result State;
  • CC:Comparison;
  • TT:Result Time。

这里使用 ExE_x 表示 Execution,避免与 Environment 或其他变量混淆。

Result回答:

实际发生了什么\boxed{实际发生了什么}

例如:

Expected:
success

Actual:
failed

State:
blocked

因此:

ExpectedResult≠ActualResultExpectedResult\neq ActualResult

Repository必须保存实际 Result,而不能用预期结果代替实际结果。


222.5 Execution History

Execution History记录实际发生过的执行过程。

定义:

EH=(Ex,B,A,Sb,Sa,R,T)EH=(E_x,B,A,S_b,S_a,R,T)

其中:

  • ExE_x:Execution;
  • BB:Behavior;
  • AA:Action;
  • SbS_b:执行前状态;
  • SaS_a:执行后状态;
  • RR:实际 Result;
  • TT:执行时间。

Execution History回答:

什么时候执行?
执行了什么?
执行前是什么状态?
执行后是什么状态?
产生了什么结果?

因此:

ExecutionHistory≠ResultExecutionHistory\neq Result

Result描述结果。

Execution History描述完整执行事实及其时间关系。


222.6 Behavior与Action的关系

Behavior是上层执行结构:

B→{A1,A2,…,An}B\rightarrow\{A_1,A_2,\ldots,A_n\}

例如:

Behavior B1
 ├── Action A1
 ├── Action A2
 └── Action A3

BehaviorRepository负责保存 Behavior。

ActionRepository负责保存 Action。

如果采用协作式 Repository:

BehaviorActionRepository
 ├── Behavior
 ├── Action
 ├── Result
 └── Execution History

但 Domain Object 仍然保持独立。

Behavior≠ActionBehavior\neq Action


222.7 Behavior与Method的关系

第221章中的 Method:

M=(T,C,P,A,R)M=(T,C,P,A,R)

表示可执行方案。

Behavior则是当前一次实际执行所形成的行为实例。

因此:

Method→BehaviorMethod\rightarrow Behavior

但:

Method≠BehaviorMethod\neq Behavior

例如同一个 Method:

Method M1

在不同时间可以形成:

Behavior B1
Behavior B2
Behavior B3

因为:

State
Condition
Object
Resource
Time

可能不同。

所以:

M1→B1,B2,B3M_1\rightarrow B_1,B_2,B_3

是合法的。


222.8 Behavior保存

Behavior保存流程:

Behavior
 ↓
Validate
 ↓
Map
 ↓
Persist
 ↓
ReadBack
 ↓
Verify

公式:

Save(B)→Validate→Persist→VerifySave(B) \rightarrow Validate \rightarrow Persist \rightarrow Verify

Behavior至少需要能够追踪:

Behavior ID
Goal ID
Method ID
Decision ID
Individual ID
State
Created Time

这样可以建立:

Goal→Decision→Method→BehaviorGoal \rightarrow Decision \rightarrow Method \rightarrow Behavior

完整追踪链。


222.9 Action保存

Action通常属于某个 Behavior。

因此:

Behavior→ActionBehavior \rightarrow Action

保存:

Action
 ↓
Validate
 ↓
Bind Behavior
 ↓
Persist
 ↓
Verify

Action必须记录:

Action ID
Behavior ID
Action Type
Target Object
Condition
Parameters
Expected Result
State
Sequence

其中 Sequence 很重要。

例如:

A1 → A2 → A3

不能被错误保存为:

A3 → A1 → A2

因此 Action 顺序也是 Behavior 结构的一部分。


222.10 Action Sequence

定义:

AS={A1,A2,…,An}AS=\{A_1,A_2,\ldots,A_n\}

如果存在明确依赖:

Ai→AjA_i\rightarrow A_j

则:

AiA_i

必须先于:

AjA_j

执行。

因此 Repository 保存的不仅是 Action,还要保存 Action 与 Behavior 的关联关系。

例如:

behavior_actions

behavior_id
action_id
sequence_no
state
created_at

这样可以恢复:

Behavior B1
 ↓
A1
 ↓
A2
 ↓
A3

222.11 Execution与Action

Action是操作定义。

Execution是实际执行过程。

因此:

Action≠ExecutionAction\neq Execution

例如:

Action A1

表示:

Process Object A

实际执行:

Execution E1

可能:

started
completed
failed
cancelled

因此:

A1→E1A_1\rightarrow E_1

同一个 Action 也可能被执行多次:

A1→E1,E2,E3A_1\rightarrow E_1,E_2,E_3

所以不能把 Action 和 Execution 设计成同一个对象。


222.12 Execution状态

Execution可以采用:

Created
 ↓
Ready
 ↓
Running
 ↓
Completed

异常分支:

Running
 ├── Failed
 ├── Cancelled
 └── Interrupted

因此:

ExecutionStateExecutionState

应该独立保存。

ExecutionRepository负责保存实际执行状态。

StateEngine负责计算合法状态转换。


222.13 Result保存

执行完成以后:

Execution→ResultExecution\rightarrow Result

Result必须来自实际 Execution。

保存过程:

Execution
 ↓
Actual Result
 ↓
Compare Expected / Actual
 ↓
Result
 ↓
Persist
 ↓
Verify

比较:

C=Compare(Re,R)C=Compare(R_e,R)

其中:

  • ReR_e:Expected Result;
  • RR:Actual Result;
  • CC:Comparison。

可能结果:

Equal
Partial
Different
Failed
Unknown

不能因为 Execution 状态为 completed 就直接认为:

Result=SuccessResult=Success

因为:

ExecutionCompleted≠GoalCompletedExecutionCompleted \neq GoalCompleted

甚至:

ExecutionCompleted≠ResultVerifiedExecutionCompleted \neq ResultVerified


222.14 Execution History保存

每次真实执行都应该形成历史记录。

例如:

E1
 ↓
Failed

E2
 ↓
Completed

应该保存:

Execution History 1
Execution History 2

而不是只保存:

last_execution = E2

历史模型:

EH={eh1,eh2,…,ehn}EH=\{eh_1,eh_2,\ldots,eh_n\}

这为:

Memory
Experience
Risk
Diagnosis
Learning

提供真实数据来源。


222.15 Execution History与State History

二者必须区分。

Execution History:

EH=(Ex,B,A,Sb,Sa,R,T)EH=(E_x,B,A,S_b,S_a,R,T)

State History:

SH=(O,Sb,Sa,E,R,T)SH=(O,S_b,S_a,E,R,T)

Execution History关注:

执行过程\boxed{执行过程}

State History关注:

状态变化\boxed{状态变化}

一次 Execution 可以导致多个 State Change。

因此:

ExecutionHistory≠StateHistoryExecutionHistory\neq StateHistory


222.16 Execution History与Feedback

Execution完成:

Execution
 ↓
Result
 ↓
Feedback

History则记录事实:

Execution
 ↓
Execution History

因此:

ExecutionHistoryExecutionHistory

可以成为 Feedback 的事实来源,但:

ExecutionHistory≠FeedbackExecutionHistory\neq Feedback

Feedback 是对实际结果、状态变化、环境变化等进行结构化处理后的信息。


222.17 Result与Feedback

必须继续保持前面建立的边界:

Result≠FeedbackResult\neq Feedback

Result:

实际结果\boxed{实际结果}

Feedback:

对实际结果及状态变化的结构化反馈\boxed{对实际结果及状态变化的结构化反馈}

完整关系:

Execution
 ↓
Result
 ↓
Feedback
 ↓
State Update

而 Repository 分别保存:

ResultRepository
FeedbackRepository
StateRepository

或者由更高层协作 Repository 进行查询协调。


222.18 BehaviorActionRepository查询

Repository应该支持多种查询。

Behavior:

findBehaviorById()
findBehaviorsByGoalId()
findBehaviorsByMethodId()
findBehaviorsByDecisionId()
findBehaviorsByIndividualId()

Action:

findActionById()
findActionsByBehaviorId()
findActionsByType()

Result:

findResultByExecutionId()
findResultsByBehaviorId()
findFailedResults()
findSuccessfulResults()

Execution History:

findExecutionHistoryByBehaviorId()
findExecutionHistoryByActionId()
findExecutionHistoryByIndividualId()
findExecutionHistoryByTimeRange()

注意:

Query≠CalculationQuery\neq Calculation

Repository查询结果以后,还需要由相应 Engine 进行认知计算。


222.19 Behavior查询不等于Behavior计算

例如:

findBehaviorById(B1)→B1findBehaviorById(B1)\rightarrow B1

只是读取。

如果需要判断:

Behavior是否可执行?

则应该:

BehaviorEngineBehaviorEngine

计算:

BehaviorReady=Gv∧Sv∧Mv∧Cv∧Rv∧EvBehaviorReady = G_v \land S_v \land M_v \land C_v \land R_v \land E_v

因此:

Repository=ReadRepository=Read Engine=CalculateEngine=Calculate


222.20 Action查询不等于Action执行

Repository可以:

findAction(A1)→A1findAction(A1)\rightarrow A1

但不能:

Repository→Execute(A1)Repository\rightarrow Execute(A1)

正确结构:

BehaviorRepository
 ↓
Behavior
 ↓
BehaviorEngine
 ↓
ActionEngine
 ↓
ExecutionEngine
 ↓
Result

Repository不能越过 Engine 直接承担执行职责。


222.21 PHP接口

可以建立:

<?php

interface BehaviorActionRepositoryInterface
{
    public function findBehaviorById($id);

    public function findBehaviorsByGoalId($goalId);

    public function findBehaviorsByMethodId($methodId);

    public function findBehaviorsByDecisionId($decisionId);

    public function findBehaviorByIndividualId($individualId);

    public function saveBehavior($behavior);

    public function updateBehavior($behavior);

    public function findActionById($id);

    public function findActionsByBehaviorId($behaviorId);

    public function saveAction($action);

    public function updateAction($action);

    public function findResultByExecutionId($executionId);

    public function findResultsByBehaviorId($behaviorId);

    public function saveResult($result);

    public function updateResult($result);

    public function saveExecutionHistory($history);

    public function findExecutionHistoryByBehaviorId($behaviorId);

    public function findExecutionHistoryByActionId($actionId);

    public function findExecutionHistoryByIndividualId($individualId);
}

这是 Repository 层接口定义。


222.22 BehaviorMapper

class BehaviorMapper
{
    public function toPersistence($behavior)
    {
        return array(
            'id' => $behavior->getId(),
            'individual_id' =>
                $behavior->getIndividualId(),
            'goal_id' =>
                $behavior->getGoalId(),
            'method_id' =>
                $behavior->getMethodId(),
            'decision_id' =>
                $behavior->getDecisionId(),
            'state' =>
                $behavior->getState(),
            'created_at' =>
                $behavior->getCreatedAt()
        );
    }

    public function toDomain($data)
    {
        $behavior = new Behavior();

        $behavior->setId($data['id']);
        $behavior->setIndividualId(
            $data['individual_id']
        );
        $behavior->setGoalId(
            $data['goal_id']
        );
        $behavior->setMethodId(
            $data['method_id']
        );
        $behavior->setDecisionId(
            $data['decision_id']
        );
        $behavior->setState(
            $data['state']
        );

        return $behavior;
    }
}

Mapper只负责:

PersistenceData↔DomainObjectPersistenceData \leftrightarrow DomainObject

不负责 Behavior 计算。


222.23 ActionMapper

class ActionMapper
{
    public function toPersistence($action)
    {
        return array(
            'id' => $action->getId(),
            'behavior_id' =>
                $action->getBehaviorId(),
            'action_type' =>
                $action->getType(),
            'target_object_id' =>
                $action->getTargetObjectId(),
            'condition_data' =>
                $action->getCondition(),
            'parameter_data' =>
                $action->getParameters(),
            'expected_result' =>
                $action->getExpectedResult(),
            'state' =>
                $action->getState()
        );
    }

    public function toDomain($data)
    {
        $action = new Action();

        $action->setId($data['id']);
        $action->setBehaviorId(
            $data['behavior_id']
        );
        $action->setType(
            $data['action_type']
        );
        $action->setTargetObjectId(
            $data['target_object_id']
        );
        $action->setCondition(
            $data['condition_data']
        );
        $action->setParameters(
            $data['parameter_data']
        );
        $action->setExpectedResult(
            $data['expected_result']
        );
        $action->setState(
            $data['state']
        );

        return $action;
    }
}

222.24 ResultMapper

class ResultMapper
{
    public function toPersistence($result)
    {
        return array(
            'id' => $result->getId(),
            'execution_id' =>
                $result->getExecutionId(),
            'actual_result' =>
                $result->getActualResult(),
            'comparison' =>
                $result->getComparison(),
            'state' =>
                $result->getState(),
            'result_time' =>
                $result->getTime()
        );
    }

    public function toDomain($data)
    {
        $result = new Result();

        $result->setId($data['id']);
        $result->setExecutionId(
            $data['execution_id']
        );
        $result->setActualResult(
            $data['actual_result']
        );
        $result->setComparison(
            $data['comparison']
        );
        $result->setState(
            $data['state']
        );
        $result->setTime(
            $data['result_time']
        );

        return $result;
    }
}

222.25 Execution History Mapper

class ExecutionHistoryMapper
{
    public function toPersistence($history)
    {
        return array(
            'execution_id' =>
                $history->getExecutionId(),
            'behavior_id' =>
                $history->getBehaviorId(),
            'action_id' =>
                $history->getActionId(),
            'before_state' =>
                $history->getBeforeState(),
            'after_state' =>
                $history->getAfterState(),
            'result_data' =>
                $history->getResult(),
            'created_at' =>
                $history->getTime()
        );
    }
}

History Mapper 的目标是保持实际执行事实可恢复、可追踪。


222.26 MySQL数据结构

Behavior:

CREATE TABLE behaviors (
    id INT NOT NULL AUTO_INCREMENT,
    individual_id INT NOT NULL,
    goal_id INT NOT NULL,
    method_id INT NOT NULL,
    decision_id INT NOT NULL,
    state VARCHAR(50) NOT NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME,
    PRIMARY KEY (id)
);

Action:

CREATE TABLE actions (
    id INT NOT NULL AUTO_INCREMENT,
    behavior_id INT NOT NULL,
    action_type VARCHAR(100) NOT NULL,
    target_object_id INT,
    condition_data TEXT,
    parameter_data TEXT,
    expected_result TEXT,
    state VARCHAR(50) NOT NULL,
    PRIMARY KEY (id)
);

Behavior与Action关联:

CREATE TABLE behavior_actions (
    id INT NOT NULL AUTO_INCREMENT,
    behavior_id INT NOT NULL,
    action_id INT NOT NULL,
    sequence_no INT NOT NULL,
    state VARCHAR(50),
    PRIMARY KEY (id)
);

Result:

CREATE TABLE results (
    id INT NOT NULL AUTO_INCREMENT,
    execution_id INT NOT NULL,
    actual_result TEXT,
    comparison VARCHAR(50),
    state VARCHAR(50),
    result_time DATETIME NOT NULL,
    PRIMARY KEY (id)
);

Execution History:

CREATE TABLE execution_history (
    id INT NOT NULL AUTO_INCREMENT,
    execution_id INT NOT NULL,
    behavior_id INT NOT NULL,
    action_id INT,
    before_state VARCHAR(50),
    after_state VARCHAR(50),
    result_data TEXT,
    created_at DATETIME NOT NULL,
    PRIMARY KEY (id)
);

上述 SQL 是 Repository 结构设计示例,正式工程中应根据实际数据库版本、已有表结构和外键策略进行验证后实施。


222.27 一个Behavior对应多个Action

例如:

Behavior B1

包含:

A1
A2
A3

数据库关系:

1:N1:N

即:

Behavior→Action1Behavior \rightarrow Action_1 Behavior→Action2Behavior \rightarrow Action_2 Behavior→Action3Behavior \rightarrow Action_3

因此不能把所有 Action 简单压缩成一个无法独立查询的字段。

如果 Action 需要独立生命周期、执行记录和历史,则应作为独立 Domain Object 持久化。


222.28 一个Action可以产生多个Execution

实际系统中:

Action A1

可能第一次失败:

Execution E1 = Failed

经过 Diagnosis / Repair 后再次执行:

Execution E2 = Completed

因此:

Action→{E1,E2,…,En}Action\rightarrow\{E_1,E_2,\ldots,E_n\}

这也是为什么:

Action≠ExecutionAction\neq Execution

必须保持独立。


222.29 一个Execution产生Result

通常:

Execution→ResultExecution \rightarrow Result

例如:

Execution E1
 ↓
Actual Result = Failed

然后:

Result R1

进入:

FeedbackEngine
DiagnosisEngine
RiskEngine
MemoryEngine
LearningEngine

形成:

Execution
 ↓
Result
 ↓
Feedback
 ↓
Diagnosis / Memory / Learning

222.30 执行失败的完整历史

例如:

Behavior B1
 ↓
Action A2
 ↓
Execution E1
 ↓
Result R1 = Failed
 ↓
Execution History EH1

然后:

Feedback
 ↓
Diagnosis
 ↓
Repair
 ↓
Action A2
 ↓
Execution E2
 ↓
Result R2 = Success
 ↓
Execution History EH2

因此:

EH1≠EH2EH_1\neq EH_2

两个执行事实都必须保存。


222.31 Repository与Memory

Execution History 是 MemoryEngine 的重要事实来源。

Execution History
 ↓
History
 ↓
MemoryEngine
 ↓
Memory

但:

ExecutionHistory≠MemoryExecutionHistory\neq Memory

History记录:

发生过什么\boxed{发生过什么}

Memory记录:

哪些过去信息值得保留和调用\boxed{哪些过去信息值得保留和调用}

因此 Repository 不负责决定哪些历史应该进入 Memory。


222.32 Repository与Experience

ExperienceEngine可以使用:

Execution History
Result
Feedback
Behavior History

形成:

ExperienceExperience

完整关系:

Execution History
 ↓
Comparison
 ↓
Relation
 ↓
Pattern
 ↓
Experience

所以:

ExecutionHistory→ExperienceExecutionHistory\rightarrow Experience

但不能直接:

Repository→ExperienceRepository\rightarrow Experience

Experience 的形成仍然属于 ExperienceEngine。


222.33 Repository与Learning

LearningEngine可以从执行历史获得学习事实:

Execution History
 ↓
Result
 ↓
Feedback
 ↓
Experience
 ↓
LearningEngine
 ↓
Update Candidate
 ↓
UpdateEngine

Repository只提供真实持久化数据。

因此:

Repository≠LearningEngineRepository\neq LearningEngine


222.34 Behavior状态更新

Behavior状态可能由 Action / Execution / Result 产生。

例如:

Behavior B1
 ↓
A1 Completed
 ↓
A2 Failed
 ↓
Behavior Failed

或者:

A1 Completed
 ↓
A2 Completed
 ↓
A3 Completed
 ↓
Behavior Completed

因此:

SB=f(SA,SEx,C)S_B=f(S_A,S_{E_x},C)

其中:

  • SBS_B:Behavior State;
  • SAS_A:Action States;
  • SExS_{E_x}:Execution States;
  • CC:Behavior Condition。

BehaviorEngine计算状态。

StateEngine负责合法状态转换。

BehaviorActionRepository负责保存结果。


222.35 Result验证

Result不能仅因为存在就认为有效。

定义:

ValidResult=Execution∧Actual∧Comparison∧EvidenceValidResult = Execution \land Actual \land Comparison \land Evidence

其中:

  • Execution:存在真实 Execution;
  • Actual:存在实际结果;
  • Comparison:存在预期与实际比较;
  • Evidence:存在可验证证据。

因此:

Exists(Result)≠Valid(Result)Exists(Result) \neq Valid(Result)

进一步:

Valid(Result)≠Verified(Result)Valid(Result) \neq Verified(Result)


222.36 BehaviorActionRepository与事务

一个完整执行过程可能同时产生:

Behavior
Action
Execution
Result
Execution History

可以由 Service / TransactionManager 协调:

Begin
 ↓
Create Behavior
 ↓
Create Action
 ↓
Create Execution
 ↓
Actual Execution
 ↓
Create Result
 ↓
Create Execution History
 ↓
Verify
 ↓
Commit

但是:

DatabaseRollback≠ExternalExecutionRollbackDatabaseRollback \neq ExternalExecutionRollback

如果 Execution 已经对外部对象产生实际影响,数据库回滚并不能让外部世界自动恢复。

因此实际系统必须区分:

Persistence Transaction

与:

Execution Compensation / Repair

222.37 BehaviorActionRepository的完整PHP结构

推荐结构:

app/
├── Domain/
│   ├── Behavior/
│   │   └── Behavior.php
│   ├── Action/
│   │   └── Action.php
│   ├── Result/
│   │   └── Result.php
│   └── Execution/
│       └── ExecutionHistory.php
│
├── Engines/
│   ├── BehaviorEngine.php
│   ├── ActionEngine.php
│   └── ExecutionEngine.php
│
├── Services/
│   ├── BehaviorService.php
│   └── ExecutionService.php
│
├── Repositories/
│   ├── BehaviorRepository.php
│   ├── ActionRepository.php
│   ├── ResultRepository.php
│   ├── ExecutionHistoryRepository.php
│   └── BehaviorActionRepository.php
│
└── Infrastructure/
    ├── Database/
    └── Mapping/

这种结构能够继续保持:

Domain≠Engine≠Service≠RepositoryDomain \neq Engine \neq Service \neq Repository


222.38 完整执行持久化链

最终形成:

Goal
 ↓
Capability
 ↓
Matching
 ↓
Method
 ↓
Decision
 ↓
Behavior
 ↓
Action
 ↓
Execution
 ↓
Result
 ↓
Execution History

Repository对应:

Goal
 ↓
GoalRepository

Capability
 ↓
CapabilityRepository

Method
 ↓
MethodRepository

Decision
 ↓
DecisionRepository

Behavior
 ↓
BehaviorRepository

Action
 ↓
ActionRepository

Result
 ↓
ResultRepository

Execution History
 ↓
ExecutionHistoryRepository

协作层则可以提供:

BehaviorActionRepositoryBehaviorActionRepository

对上述执行阶段数据进行联合查询。


222.39 从执行结果进入认知闭环

执行数据保存以后,继续进入 ICAI 的认知闭环:

Behavior
 ↓
Action
 ↓
Execution
 ↓
Result
 ↓
Feedback
 ↓
Memory
 ↓
Experience
 ↓
Learning
 ↓
Update
 ↓
New Cognitive State

其中:

BehaviorActionRepository

负责保存:

Behavior+Action+Result+ExecutionHistoryBehavior+Action+Result+ExecutionHistory

而不是负责整个学习闭环。


222.40 与前一章MethodDecisionRepository连接

第221章:

Method
 ↓
Decision
 ↓
Selected Method

第222章:

Selected Method
 ↓
Behavior
 ↓
Action
 ↓
Execution
 ↓
Result
 ↓
Execution History

于是:

Method→Decision→Behavior→Action→Execution→Result\boxed{ Method \rightarrow Decision \rightarrow Behavior \rightarrow Action \rightarrow Execution \rightarrow Result }

已经形成完整的执行主链。


222.41 异常执行路径

正常:

Decision
 ↓
Behavior
 ↓
Action
 ↓
Execution
 ↓
Result
 ↓
Completed

异常:

Decision
 ↓
Behavior
 ↓
Action
 ↓
Execution
 ↓
Failure
 ↓
Result
 ↓
Feedback
 ↓
Diagnosis
 ↓
Repair
 ↓
Execution
 ↓
Result
 ↓
Verification

Execution History 保存:

第一次执行
第二次执行

因此系统可以知道:

Failure→Repair→SuccessFailure\rightarrow Repair\rightarrow Success

而不是只看到最终:

Success

222.42 本章核心公式

Behavior:

B=(G,C,A,E,R,S)\boxed{ B=(G,C,A,E,R,S) }

Action:

A=(T,O,C,P,R,S)\boxed{ A=(T,O,C,P,R,S) }

Result:

R=(Ex,Ar,S,C,T)\boxed{ R=(E_x,A_r,S,C,T) }

Execution History:

EH=(Ex,B,A,Sb,Sa,R,T)\boxed{ EH=(E_x,B,A,S_b,S_a,R,T) }

Behavior与Action:

B→{A1,A2,…,An}\boxed{ B\rightarrow\{A_1,A_2,\ldots,A_n\} }

Action与Execution:

Ai→{E1,E2,…,En}\boxed{ A_i\rightarrow\{E_1,E_2,\ldots,E_n\} }

Execution与Result:

Ex→R\boxed{ E_x\rightarrow R }

Expected / Actual:

C=Compare(Re,R)\boxed{ C=Compare(R_e,R) }

有效Result:

ValidResult=Execution∧Actual∧Comparison∧Evidence\boxed{ ValidResult = Execution \land Actual \land Comparison \land Evidence }


222.43 本章核心原则

原则一:Behavior不是Action

Behavior≠ActionBehavior\neq Action

Behavior是完整行为结构,Action是具体操作。

原则二:Action不是Execution

Action≠ExecutionAction\neq Execution

Action是操作定义,Execution是真实执行过程。

原则三:Execution不是Result

Execution≠ResultExecution\neq Result

Execution描述执行过程,Result描述实际结果。

原则四:Result不是Feedback

Result≠FeedbackResult\neq Feedback

Result是实际结果,Feedback是结构化反馈。

原则五:Execution History不是Result

ExecutionHistory≠ResultExecutionHistory\neq Result

History保存执行事实及时间轨迹。

原则六:完成Execution不等于完成Goal

ExecutionCompleted≠GoalCompletedExecutionCompleted \neq GoalCompleted

原则七:查询不等于计算

RepositoryQuery≠EngineCalculationRepositoryQuery\neq EngineCalculation

原则八:历史不能被当前结果覆盖

E1 Failed
E2 Completed

两个 Execution 都必须保留。

原则九:失败不能直接删除Behavior

失败属于历史事实:

Failure→HistoryFailure\rightarrow History

之后是否修改 Method、Capability 或 Behavior,需要经过:

Feedback
Diagnosis
Decision
Learning
Update

原则十:Repository不承担认知推理

Repository=Persistence\boxed{ Repository=Persistence } Engine=Calculation\boxed{ Engine=Calculation }


222.44 本章总结

第222章建立了 ICAI 执行阶段的 Repository 体系。

其核心结构为:

BehaviorActionRepository=Behavior+Action+Result+ExecutionHistory\boxed{ BehaviorActionRepository = Behavior + Action + Result + ExecutionHistory }

Behavior表示:

当前完整行为\boxed{当前完整行为}

Action表示:

行为中的具体操作\boxed{行为中的具体操作}

Result表示:

真实执行产生的实际结果\boxed{真实执行产生的实际结果}

Execution History表示:

真实执行过程及其历史轨迹\boxed{真实执行过程及其历史轨迹}

完整执行链:

Method→Decision→Behavior→Action→Execution→Result\boxed{ Method \rightarrow Decision \rightarrow Behavior \rightarrow Action \rightarrow Execution \rightarrow Result }

历史链:

Execution→ExecutionHistory\boxed{ Execution \rightarrow ExecutionHistory }

认知反馈链:

Result→Feedback→Memory→Experience→Learning→Update\boxed{ Result \rightarrow Feedback \rightarrow Memory \rightarrow Experience \rightarrow Learning \rightarrow Update }

因此,到本章为止,ICAI 的 Repository 体系已经从:

Individual
 ↓
Object
 ↓
State
 ↓
Relation
 ↓
Knowledge
 ↓
Goal
 ↓
Capability
 ↓
Matching
 ↓
Method
 ↓
Decision
 ↓
Behavior
 ↓
Action
 ↓
Result
 ↓
Execution History

逐步形成完整的数据持久化链。

其工程边界最终可以表示为:

DomainObject→Engine→Service→Repository→MySQL\boxed{ DomainObject \rightarrow Engine \rightarrow Service \rightarrow Repository \rightarrow MySQL }

但真实职责关系是:

Engine
    ↓
负责计算

Service
    ↓
负责流程编排

Domain Object
    ↓
负责表达领域对象

Repository
    ↓
负责持久化与查询

MySQL
    ↓
负责实际数据存储

因此,BehaviorActionRepository 并不是把 Behavior、Action、Result、Execution 混成一个对象,而是在保持四者独立的前提下,为行为执行数据、实际结果和执行历史建立统一的持久化协作边界。

最终形成:

Decision→Behavior→Action→Execution→Result→History\boxed{ Decision \rightarrow Behavior \rightarrow Action \rightarrow Execution \rightarrow Result \rightarrow History }

这条链是后续 FeedbackRepository、MemoryRepository、ExperienceRepository、LearningRepository 继续向认知闭环延伸的基础。

Leave a Reply

Your email address will not be published. Required fields are marked *