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

第249章 Smarty数据模型

第249章 Smarty数据模型

249.1 Smarty数据模型概念

第248章已经建立:

ViewData→Smarty→Template→HTMLViewData\rightarrow Smarty\rightarrow Template\rightarrow HTML

Smarty本身不产生ICAI数据,而是接收已经由Controller、Service、Engine和Domain Object处理完成的数据。

因此,本章进一步定义Smarty所使用的数据模型。

其基本关系为:

ICAI Domain Data→ViewData→Smarty→HTMLICAI\ Domain\ Data \rightarrow ViewData \rightarrow Smarty \rightarrow HTML

其中,ICAI Domain Data表示机器个体内部已经形成的领域数据;View Data表示为了页面表现而组织的数据结构。

因此:

DomainData≠ViewDataDomainData\neq ViewData ViewData≠TemplateViewData\neq Template Template≠HTMLTemplate\neq HTML

三者分别属于不同层次。


249.2 View Data定义

View Data是View层用于页面表现的数据集合。

可以定义为:

ViewData={Individual,Object,State,Cognition,…}ViewData= \{Individual,Object,State,Cognition,\ldots\}

其中:

  • Individual:机器个体数据;
  • Object:对象数据;
  • State:状态数据;
  • Cognition:认知数据。

根据具体页面,还可以继续加入:

Relation
Goal
Capability
Behavior
Action
Result
Memory
Experience
Learning
Maintenance
Message
Error

因此View Data并不是一个固定的单一数据表,而是一种页面数据结构。


249.3 View Data的来源

View Data不是凭空产生的。

其来源关系为:

Repository→DomainObject→Engine→Service→Controller→ViewDataRepository \rightarrow DomainObject \rightarrow Engine \rightarrow Service \rightarrow Controller \rightarrow ViewData

如果数据已经存在于Domain Object中,则Controller可以根据页面需要进行组织。

例如:

$viewData = array(
    'individual' => $individualData,
    'object' => $objectData,
    'state' => $stateData,
    'cognition' => $cognitionData
);

最终:

ViewData={IndividualData,ObjectData,StateData,CognitionData}ViewData= \{ IndividualData, ObjectData, StateData, CognitionData \}


249.4 View Data不是数据库记录

必须区分:

DatabaseRecord≠DomainObject≠ViewDataDatabaseRecord\neq DomainObject\neq ViewData

数据库记录主要用于持久化。

Domain Object用于表达领域对象。

View Data用于页面表现。

例如数据库可能保存:

individual_id
individual_type
current_state
current_method
updated_at

而页面可能需要:

ID
名称
类型
状态
当前方法
最后更新时间

Controller可以将数据库经过领域层处理后的结果重新组织为:

ViewDataViewData

因此页面不需要知道数据库表结构。


249.5 View Data的层次结构

ICAI页面可以建立分层View Data:

ViewData
│
├── Individual
│
├── Object
│
├── State
│
└── Cognition

进一步可以扩展:

ViewData
│
├── Individual
│   ├── ID
│   ├── Name
│   └── Type
│
├── Object
│   ├── ID
│   ├── Name
│   └── Attributes
│
├── State
│   ├── Current
│   ├── Previous
│   └── Time
│
└── Cognition
    ├── Judgment
    ├── Reason
    ├── Confidence
    └── Time

这样Smarty模板可以通过层级结构访问数据。


249.6 个体数据

个体数据用于描述当前页面所对应的ICAI机器个体。

可以定义:

IndividualData={ID,Name,Type,Status}IndividualData= \{ID,Name,Type,Status\}

例如:

$individualData = array(
    'id' => 'ICAI-001',
    'name' => '任务处理个体',
    'type' => 'TaskProcessor',
    'status' => 'running'
);

其中:

  • id表示机器个体唯一标识;
  • name表示机器个体名称;
  • type表示机器个体类型;
  • status表示当前运行状态。

Smarty模板:

<h2>{$individual.name}</h2>

<p>ID:{$individual.id}</p>

<p>类型:{$individual.type}</p>

<p>状态:{$individual.status}</p>

最终:

IndividualData→Smarty→HTMLIndividualData \rightarrow Smarty \rightarrow HTML


249.7 个体数据与机器个体

页面上的个体数据并不等于机器个体本身。

IndividualData≠IndividualIndividualData\neq Individual

机器个体可能包含:

I={ID,T,O,A,S,R,K,G,C,Md,B,H}I= \{ ID,T,O,A,S,R,K,G,C,Md,B,H \}

而某个页面可能只需要:

ViewData.Individual={ID,Name,Type,Status}ViewData.Individual= \{ID,Name,Type,Status\}

因此View Data是机器个体信息的页面表现子集。


249.8 对象数据

ICAI中的机器个体不是孤立的数据集合,而是由多个对象构成。

对象数据可以定义为:

ObjectData={ID,Type,Name,Attributes}ObjectData= \{ID,Type,Name,Attributes\}

例如:

$objectData = array(
    'id' => 'OBJ-001',
    'type' => 'Task',
    'name' => 'Task-001',
    'attributes' => array(
        'priority' => 'high',
        'source' => 'internal'
    )
);

模板:

<h2>对象信息</h2>

<p>对象ID:{$object.id}</p>

<p>对象类型:{$object.type}</p>

<p>对象名称:{$object.name}</p>

<p>优先级:{$object.attributes.priority}</p>

<p>来源:{$object.attributes.source}</p>

249.9 对象数据与个体数据

个体是机器个体的主体。

对象是机器个体认知和行为所涉及的具体对象。

因此:

Individual≠ObjectIndividual\neq Object

例如:

ICAI-001
   ↓
认知
   ↓
Task-001

页面数据:

Individual
    ID = ICAI-001

Object
    ID = OBJ-001
    Name = Task-001

二者可以同时存在于View Data:

ViewData={IndividualData,ObjectData}ViewData= \{ IndividualData, ObjectData \}


249.10 对象集合数据

一个机器个体可能同时面对多个对象。

因此:

Objects={O1,O2,…,On}Objects=\{O_1,O_2,\ldots,O_n\}

Controller可以提供:

$objects = array(
    array(
        'id' => 'OBJ-001',
        'name' => 'Task-001',
        'type' => 'Task'
    ),
    array(
        'id' => 'OBJ-002',
        'name' => 'Task-002',
        'type' => 'Task'
    )
);

Smarty:

<h2>对象列表</h2>

<ul>
{foreach $objects as $object}
    <li>
        {$object.id}
        -
        {$object.name}
        -
        {$object.type}
    </li>
{/foreach}
</ul>

这里Smarty只负责集合显示。

对象识别和对象选择仍然属于ICAI认知系统。


249.11 状态数据

状态数据用于表示机器个体、对象或者运行过程在某一时间点的状态。

可以定义:

StateData={Current,Previous,Time}StateData= \{Current,Previous,Time\}

例如:

$stateData = array(
    'current' => 'running',
    'previous' => 'waiting',
    'time' => '2026-09-13 20:00:00'
);

Smarty:

<h2>状态</h2>

<p>当前状态:{$state.current}</p>

<p>之前状态:{$state.previous}</p>

<p>更新时间:{$state.time}</p>

249.12 状态数据的变化

ICAI运行过程中:

Statet→EventStatet+1State_t\xrightarrow{Event}State_{t+1}

例如:

waiting→Startrunningwaiting \xrightarrow{Start} running

View Data应该显示最新状态。

因此:

Statet+1→ViewDatat+1→SmartyState_{t+1} \rightarrow ViewData_{t+1} \rightarrow Smarty

页面显示:

当前状态:running

页面没有改变机器个体状态。

真正的状态变化发生在:

DomainObjectDomainObject

或者对应的领域运行结构中。


249.13 状态数据与状态计算

必须区分:

StateCalculation≠StateDisplayStateCalculation\neq StateDisplay

例如Engine判断:

当前条件满足

并使状态变成:

running

这是领域计算。

而Smarty:

{$state.current}

只是显示:

running

因此:

Engine→StateEngine\rightarrow State

而:

State→ViewData→SmartyState\rightarrow ViewData\rightarrow Smarty


249.14 认知数据

认知数据是ICAI认知过程产生的、用于页面表现的结构化结果。

可以定义:

CognitionData={Object,State,Relation,Judgment,Reason,Confidence,Time}CognitionData= \{ Object, State, Relation, Judgment, Reason, Confidence, Time \}

例如:

$cognitionData = array(
    'object' => 'Task-001',
    'state' => 'available',
    'relation' => 'belongs_to',
    'judgment' => '可执行',
    'reason' => '对象状态正常且当前能力匹配',
    'confidence' => 0.90,
    'time' => '2026-09-13 20:05:00'
);

249.15 认知数据的页面显示

Smarty可以直接显示认知结果:

<h2>认知结果</h2>

<p>对象:{$cognition.object}</p>

<p>状态:{$cognition.state}</p>

<p>关系:{$cognition.relation}</p>

<p>判断:{$cognition.judgment}</p>

<p>原因:{$cognition.reason}</p>

<p>置信度:{$cognition.confidence}</p>

<p>时间:{$cognition.time}</p>

最终:

认知结果

对象:Task-001
状态:available
关系:belongs_to
判断:可执行
原因:对象状态正常且当前能力匹配
置信度:0.90
时间:2026-09-13 20:05:00

249.16 认知数据不是认知Engine

必须明确:

CognitionData≠CognitiveEngineCognitionData\neq CognitiveEngine

CognitiveEngine负责:

C=F(O,A,S,R,Sc,K)C=F(O,A,S,R,Sc,K)

其中:

  • OO表示对象;
  • AA表示属性;
  • SS表示状态;
  • RR表示关系;
  • ScSc表示场景;
  • KK表示知识;
  • CC表示认知计算结果。

计算完成以后形成:

CognitiveResultCognitiveResult

然后才进入:

CognitiveResult→ViewData→SmartyCognitiveResult \rightarrow ViewData \rightarrow Smarty

因此Smarty不会重新进行认知计算。


249.17 四类核心数据的统一模型

本章四类数据可以统一表示:

ICAIViewData={Individual,Object,State,Cognition}ICAIViewData= \{ Individual, Object, State, Cognition \}

例如:

$viewData = array(
    'individual' => $individualData,
    'object' => $objectData,
    'state' => $stateData,
    'cognition' => $cognitionData
);

然后:

$smarty->assign(
    'icai',
    $viewData
);

模板:

<h1>{$icai.individual.name}</h1>

<p>对象:{$icai.object.name}</p>

<p>状态:{$icai.state.current}</p>

<p>认知:{$icai.cognition.judgment}</p>

形成:

ICAIViewData→Smarty→HTMLICAIViewData \rightarrow Smarty \rightarrow HTML


249.18 完整View Data示例

一个完整的ICAI页面可以使用:

$viewData = array(

    'individual' => array(
        'id' => 'ICAI-001',
        'name' => '任务处理个体',
        'type' => 'TaskProcessor',
        'status' => 'running'
    ),

    'object' => array(
        'id' => 'OBJ-001',
        'type' => 'Task',
        'name' => 'Task-001',
        'attributes' => array(
            'priority' => 'high',
            'source' => 'internal'
        )
    ),

    'state' => array(
        'current' => 'available',
        'previous' => 'waiting',
        'time' => '2026-09-13 20:05:00'
    ),

    'cognition' => array(
        'object' => 'Task-001',
        'state' => 'available',
        'relation' => 'belongs_to',
        'judgment' => '可执行',
        'reason' => '对象状态正常且当前能力匹配',
        'confidence' => 0.90,
        'time' => '2026-09-13 20:05:00'
    )
);

这个结构已经可以直接作为Smarty的数据入口。


249.19 Smarty完整模板示例

对应模板:

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <title>ICAI数据模型</title>
</head>

<body>

<h1>ICAI机器个体</h1>

<h2>个体数据</h2>

<p>ID:{$icai.individual.id}</p>
<p>名称:{$icai.individual.name}</p>
<p>类型:{$icai.individual.type}</p>
<p>运行状态:{$icai.individual.status}</p>


<h2>对象数据</h2>

<p>ID:{$icai.object.id}</p>
<p>类型:{$icai.object.type}</p>
<p>名称:{$icai.object.name}</p>
<p>优先级:{$icai.object.attributes.priority}</p>
<p>来源:{$icai.object.attributes.source}</p>


<h2>状态数据</h2>

<p>当前状态:{$icai.state.current}</p>
<p>之前状态:{$icai.state.previous}</p>
<p>时间:{$icai.state.time}</p>


<h2>认知数据</h2>

<p>对象:{$icai.cognition.object}</p>
<p>状态:{$icai.cognition.state}</p>
<p>关系:{$icai.cognition.relation}</p>
<p>判断:{$icai.cognition.judgment}</p>
<p>原因:{$icai.cognition.reason}</p>
<p>置信度:{$icai.cognition.confidence}</p>
<p>时间:{$icai.cognition.time}</p>

</body>

</html>

这就是一个完整的:

ICAIViewData→Smarty→Template→HTMLICAIViewData \rightarrow Smarty \rightarrow Template \rightarrow HTML

数据模型示例。


249.20 View Data与Controller

Controller的职责不是重新计算认知,而是组织页面需要的数据。

例如:

Controller
    ↓
调用IndividualService
    ↓
调用CognitiveService
    ↓
获得Domain Result
    ↓
组织ViewData
    ↓
Smarty

因此:

Controller→ViewDataController\rightarrow ViewData

而:

Controller≠SmartyController\neq Smarty

Controller负责页面请求控制。

Smarty负责模板渲染。


249.21 View Data与Service

Service产生业务过程结果。

例如:

CognitiveService→CognitiveResultCognitiveService \rightarrow CognitiveResult

然后:

CognitiveResult→ViewData.CognitionCognitiveResult \rightarrow ViewData.Cognition

因此:

Service≠ViewService\neq View

Service不负责HTML。

View也不负责认知计算。


249.22 View Data与Engine

Engine负责领域计算。

例如:

CognitiveEngine→CognitiveResultCognitiveEngine \rightarrow CognitiveResult

结果进入:

Service→Controller→ViewDataService \rightarrow Controller \rightarrow ViewData

最终:

ViewData→SmartyViewData \rightarrow Smarty

所以:

Engine≠ViewDataEngine\neq ViewData Engine≠SmartyEngine\neq Smarty


249.23 View Data与Repository

Repository负责持久化。

例如:

Repository→DomainObjectRepository \rightarrow DomainObject

Domain Object经过Service和Controller以后,才可能形成:

ViewDataViewData

因此:

Repository≠ViewDataRepository\neq ViewData Repository≠SmartyRepository\neq Smarty

页面不应该直接查询数据库。


249.24 View Data的页面最小原则

页面不应该接收不需要的数据。

例如页面只显示:

ID
名称
状态

则:

ViewData={ID,Name,State}ViewData= \{ID,Name,State\}

没有必要把整个机器个体的所有Memory、Experience、Knowledge和History全部交给模板。

因此:

ViewData=RequiredPresentationDataViewData=RequiredPresentationData

这可以降低页面层与领域层的耦合。


249.25 View Data与数据安全

View Data还具有一个重要作用:控制哪些数据可以进入页面。

Domain Object中可能存在:

内部配置
内部规则
维护信息
系统参数
内部标识
历史数据

页面不一定需要全部显示。

因此:

DomainObject→SelectedData→ViewDataDomainObject \rightarrow SelectedData \rightarrow ViewData

ViewData实际上形成了一层页面数据边界。


249.26 View Data与数据转换

View Data可以进行表现层格式转换。

例如Domain Object中的时间:

2026-09-13 20:05:00

页面可以显示为:

2026年09月13日 20:05

因此:

DomainValue→PresentationValueDomainValue \rightarrow PresentationValue

这种转换属于页面表现需要,而不是修改Domain Object。

因此:

PresentationTransform≠DomainUpdatePresentationTransform\neq DomainUpdate


249.27 View Data与状态颜色

页面可能根据状态显示不同的视觉形式。

例如:

{if $icai.state.current == 'running'}
    <span>运行中</span>
{elseif $icai.state.current == 'waiting'}
    <span>等待中</span>
{else}
    <span>未知状态</span>
{/if}

这是表现层判断。

实际状态仍然来自:

DomainObject.StateDomainObject.State

所以:

DisplayRule≠DomainRuleDisplayRule\neq DomainRule


249.28 View Data与认知历史

认知系统可能保存多个认知结果:

CognitionHistory={C1,C2,…,Cn}CognitionHistory= \{C_1,C_2,\ldots,C_n\}

Controller可以选择最近记录:

$viewData['cognition_history'] = $history;

Smarty循环:

{foreach $icai.cognition_history as $item}
    <p>
        {$item.time}
        -
        {$item.judgment}
    </p>
{/foreach}

页面因此能够表现认知历史。

但是历史记录的产生和保存属于认知系统与Memory/Persistence层。


249.29 View Data与ICAI页面结构

由此可以建立:

ICAIViewData
│
├── IndividualData
│
├── ObjectData
│
├── StateData
│
└── CognitionData

对应页面:

ICAI页面
│
├── 个体信息
│
├── 对象信息
│
├── 当前状态
│
└── 当前认知

这形成理论结构和页面结构之间的映射:

ICAI Theory→DomainData→ViewData→PageICAI\ Theory \rightarrow DomainData \rightarrow ViewData \rightarrow Page


249.30 四类数据之间的关系

四类数据不是完全独立的。

可以表示为:

Individual→Object→State→CognitionIndividual \rightarrow Object \rightarrow State \rightarrow Cognition

例如:

ICAI-001
   ↓
Task-001
   ↓
available
   ↓
可执行

其含义是:

某一个机器个体面对某一个对象,根据对象状态和其他认知条件形成认知结果。

但是这个关系只是数据表现结构。

真正的认知过程仍然是:

Input→Object→Attribute→State→Relation→Scene→Knowledge→Matching→Judgment→ResultInput \rightarrow Object \rightarrow Attribute \rightarrow State \rightarrow Relation \rightarrow Scene \rightarrow Knowledge \rightarrow Matching \rightarrow Judgment \rightarrow Result


249.31 Smarty数据模型的统一边界

最终可以建立以下边界:

DomainObject≠ViewDataDomainObject\neq ViewData ViewData≠SmartyViewData\neq Smarty Smarty≠HTMLSmarty\neq HTML CognitiveResult≠ViewDataCognitiveResult\neq ViewData

而完整转换链为:

CognitiveResult→ViewData.Cognition→Smarty→HTMLCognitiveResult \rightarrow ViewData.Cognition \rightarrow Smarty \rightarrow HTML

同样:

DomainObject→ViewData.Individual→Smarty→HTMLDomainObject \rightarrow ViewData.Individual \rightarrow Smarty \rightarrow HTML


249.32 Smarty数据模型与ICAI MVC

结合前面章节:

认知MVC

CognitiveEngine→CognitiveResultCognitiveEngine \rightarrow CognitiveResult

行为MVC

BehaviorEngine→BehaviorResultBehaviorEngine \rightarrow BehaviorResult

学习MVC

LearningEngine→LearningResultLearningEngine \rightarrow LearningResult

自我维护MVC

MaintenanceEngine→MaintenanceResultMaintenanceEngine \rightarrow MaintenanceResult

最终都可以进入:

Result→ViewData→Smarty→HTMLResult \rightarrow ViewData \rightarrow Smarty \rightarrow HTML

因此Smarty可以成为ICAI多个运行子系统的统一表现层。


249.33 Smarty数据模型完整流程

综合本章:

Browser
   ↓
Controller
   ↓
Service
   ↓
Engine
   ↓
Domain Object
   ↓
Result
   ↓
ViewData
   ↓
Smarty
   ↓
Template
   ↓
HTML
   ↓
Browser

其中ViewData承担一个非常重要的转换职责:

Domain/Result→PresentationDataDomain/Result \rightarrow PresentationData

因此:

ViewData=Presentation Data ModelViewData=Presentation\ Data\ Model


249.34 本章总结

第249章建立了Smarty的数据模型。

核心数据包括:

ViewDataViewData IndividualDataIndividualData ObjectDataObjectData StateDataStateData CognitionDataCognitionData

统一模型:

ICAIViewData={Individual,Object,State,Cognition}ICAIViewData= \{ Individual, Object, State, Cognition \}

其完整关系为:

DomainObject+Result→ViewData→Smarty→Template→HTMLDomainObject + Result \rightarrow ViewData \rightarrow Smarty \rightarrow Template \rightarrow HTML

其中:

个体数据回答“当前页面表现的是哪个机器个体”。

对象数据回答“当前机器个体面对或处理哪个对象”。

状态数据回答“对象或机器个体当前处于什么状态”。

认知数据回答“ICAI已经形成了什么认知结果”。

因此,Smarty数据模型不是ICAI的智能模型,而是ICAI智能运行结果进入页面表现层之前的数据组织模型。

最终形成:

Individual→Object→State→Cognition→ViewData→Smarty→HTMLIndividual \rightarrow Object \rightarrow State \rightarrow Cognition \rightarrow ViewData \rightarrow Smarty \rightarrow HTML

由此,ICAI从领域对象、认知计算一直到最终页面输出,形成了连续而清晰的数据映射关系。

Leave a Reply

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