第159章 ICAI对象生命周期
159.1 提出背景
第158章建立了 ICAI 对象关系模型,定义了对象关联、对象组合、对象继承、对象依赖以及对象生命周期。其中,对象生命周期解决的是一个重要问题:ICAI领域对象不是静态存在的数据结构,而是在机器个体运行过程中不断创建、初始化、加载、运行、修改、保存、更新并最终销毁的动态对象。
如果只有对象结构而没有生命周期,那么 Domain Object 只能作为数据记录存在,不能形成完整的运行机制。
因此,ICAI对象必须具有明确的生命周期:
Create→Initialize→Load→Run→Modify→Save→Update→DestroyCreate \rightarrow Initialize \rightarrow Load \rightarrow Run \rightarrow Modify \rightarrow Save \rightarrow Update \rightarrow Destroy
这八个阶段不是简单的数据库操作,而是 ICAI Domain Object 从产生到终止的完整工程过程。
其基本关系为:
Object→Lifecycle→Runtime→StateChange→PersistenceObject \rightarrow Lifecycle \rightarrow Runtime \rightarrow StateChange \rightarrow Persistence
其中,Persistence 表示对象持久化,即把对象当前结构、状态和历史保存到持久化存储中。
159.2 ICAI对象生命周期定义
**ICAI对象生命周期(ICAI Object Lifecycle)**是指 ICAI Domain Object 从被创建开始,经过初始化、加载、运行、修改、保存和更新,直到最终销毁的完整存在过程。
定义:
Lifecycle(Object)={Create,Initialize,Load,Run,Modify,Save,Update,Destroy}Lifecycle(Object)= \{ Create, Initialize, Load, Run, Modify, Save, Update, Destroy \}
其中:
- Create:创建对象;
- Initialize:建立对象的初始结构和初始值;
- Load:从持久化系统或运行环境加载对象;
- Run:对象进入运行状态并参与 ICAI 计算;
- Modify:对象结构、属性、状态或关系发生变化;
- Save:保存对象当前状态;
- Update:将变化后的对象结构正式更新到系统;
- Destroy:对象终止运行并释放其生命周期。
因此:
Objectt→LifecycleObjectt+1Object_t \xrightarrow{Lifecycle} Object_{t+1}
生命周期的本质不是“对象被数据库保存了多少次”,而是:
对象存在→对象初始化→对象运行→对象变化→对象持续存在→对象终止对象存在 \rightarrow 对象初始化 \rightarrow 对象运行 \rightarrow 对象变化 \rightarrow 对象持续存在 \rightarrow 对象终止
159.3 生命周期状态
为了使生命周期能够被机器程序计算,需要把生命周期转换为明确的状态。
定义:
LS∈{Created,Initialized,Loaded,Running,Modified,Saved,Updated,Destroyed}LS\in \{ Created, Initialized, Loaded, Running, Modified, Saved, Updated, Destroyed \}
其中 LSLS 表示 Lifecycle State,即生命周期状态。
基本状态转换:
Created→Initialized→Loaded→RunningCreated \rightarrow Initialized \rightarrow Loaded \rightarrow Running
运行过程中:
Running→Modified→Saved→Updated→RunningRunning \rightarrow Modified \rightarrow Saved \rightarrow Updated \rightarrow Running
最终:
Running→DestroyedRunning \rightarrow Destroyed
完整生命周期:
Created→Initialized→Loaded→Running→Modified→Saved→Updated→Running→Destroyed\boxed{ Created \rightarrow Initialized \rightarrow Loaded \rightarrow Running \rightarrow Modified \rightarrow Saved \rightarrow Updated \rightarrow Running \rightarrow Destroyed }
需要注意,Save 和 Update 并不是生命周期只能发生一次的阶段。
一个长期运行的机器个体,其 Domain Object 可以反复经历:
Run→Modify→Save→Update→RunRun \rightarrow Modify \rightarrow Save \rightarrow Update \rightarrow Run
因此生命周期实际上是一个循环过程。
159.4 创建
**创建(Create)**是 Domain Object 生命周期的起点,表示系统根据一个明确的对象类型、身份或创建请求建立新的程序对象。
形式化表示:
∅→Object\varnothing\rightarrow Object
其中:
- ∅\varnothing 表示对象尚不存在;
- ObjectObject 表示新建立的 Domain Object。
例如创建一个机器个体对象:
∅→MachineIndividual\varnothing \rightarrow MachineIndividual
创建一个认知对象:
∅→CognitiveObject\varnothing \rightarrow CognitiveObject
创建一个能力对象:
∅→CognitiveCapability\varnothing \rightarrow CognitiveCapability
创建阶段主要解决:
这个对象是否已经产生?
而不是解决对象是否已经完整。
因此:
Created≠InitializedCreated\neq Initialized
对象创建以后可能仍然缺少属性、状态、关系、知识或其他结构。
159.5 初始化
**初始化(Initialize)**是在对象创建以后,为对象建立必要的初始结构、初始属性、初始状态、初始关系以及其他初始数据。
Created→InitializedCreated\rightarrow Initialized
初始化模型:
Initialization=Identity+Structure+Attribute+State+Relation+InitialDataInitialization= Identity+ Structure+ Attribute+ State+ Relation+ InitialData
对于机器个体:
MachineIndividual0={ID,Type,Object,Attribute,State,Relation,Knowledge}MachineIndividual_0= \{ ID, Type, Object, Attribute, State, Relation, Knowledge \}
对于认知对象:
CognitiveObject0={ID,Type,Attribute,State,Relation}CognitiveObject_0= \{ ID, Type, Attribute, State, Relation \}
初始化的核心要求是:
RequiredStructure⊆InitializedStructureRequiredStructure \subseteq InitializedStructure
如果必要结构没有建立:
Initialized=FalseInitialized=False
则对象不能直接进入正常运行状态。
因此:
Created→InitializationInitializedCreated \xrightarrow{Initialization} Initialized
初始化解决的是:
对象已经存在,那么对象最初应该具有什么结构?
159.6 加载
**加载(Load)**是将已经存在于持久化系统中的 Domain Object 数据读取到当前运行环境,并恢复为可以参与计算的运行对象。
Persistence→Load→RuntimeObjectPersistence \rightarrow Load \rightarrow RuntimeObject
例如:
MySQL→Repository→DomainObjectMySQL \rightarrow Repository \rightarrow DomainObject
加载的数据可以包括:
LoadData={Identity,Attribute,State,Relation,Knowledge,Goal,Capability,Method,Memory,History}LoadData= \{ Identity, Attribute, State, Relation, Knowledge, Goal, Capability, Method, Memory, History \}
加载并不是创建。
Load≠CreateLoad\neq Create
创建表示:
∅→Object\varnothing\rightarrow Object
加载表示:
StoredObject→RuntimeObjectStoredObject\rightarrow RuntimeObject
因此一个已经存在于数据库中的机器个体,再次启动系统时,可以通过:
Load→Restore→RunLoad \rightarrow Restore \rightarrow Run
恢复运行,而不需要重新创建整个对象。
加载还需要进行完整性检查:
Load→Validate→RuntimeLoad \rightarrow Validate \rightarrow Runtime
如果加载的数据不完整:
Load→InvalidLoad\rightarrow Invalid
则不能直接进入运行状态。
159.7 运行
**运行(Run)**是 Domain Object 真正参与 ICAI 认知、计算、行为、记忆和维护过程的生命周期阶段。
Loaded→RunningLoaded\rightarrow Running
运行对象:
RuntimeObject=Object+State+Context+Relation+BehaviorRuntimeObject= Object+ State+ Context+ Relation+ Behavior
对于 ICAI 认知对象:
Object→Attribute→State→Relation→Scene→KnowledgeObject \rightarrow Attribute \rightarrow State \rightarrow Relation \rightarrow Scene \rightarrow Knowledge
对于行为对象:
Goal→Capability→Method→Decision→Behavior→Action→ResultGoal \rightarrow Capability \rightarrow Method \rightarrow Decision \rightarrow Behavior \rightarrow Action \rightarrow Result
因此:
Runtime=Cognition+Behavior+Memory+MaintenanceRuntime = Cognition+ Behavior+ Memory+ Maintenance
运行状态并不是对象结构固定不变的状态。
相反:
Running→Event→StateChangeRunning \rightarrow Event \rightarrow StateChange
例如:
CognitiveObjectt→EventCognitiveObjectt+1CognitiveObject_t \xrightarrow{Event} CognitiveObject_{t+1}
因此 ICAI 对象的运行本质上是:
Object+State+Event+Rule→NewStateObject + State + Event + Rule \rightarrow NewState
159.8 修改
**修改(Modify)**表示 Domain Object 在运行过程中,其结构、属性、状态、关系、知识、能力、方法、行为或其他组成部分发生变化。
Running→ModifiedRunning\rightarrow Modified
对象修改可以发生在多个层面。
159.8.1 属性修改
At→At+1A_t\rightarrow A_{t+1}
例如:
Valuet→Valuet+1Value_t\rightarrow Value_{t+1}
159.8.2 状态修改
St→St+1S_t\rightarrow S_{t+1}
159.8.3 关系修改
Rt→Rt+1R_t\rightarrow R_{t+1}
159.8.4 知识修改
Kt→Kt+1K_t\rightarrow K_{t+1}
159.8.5 能力修改
Ct→Ct+1C_t\rightarrow C_{t+1}
159.8.6 方法修改
Mt→Mt+1M_t\rightarrow M_{t+1}
因此:
Modification=AttributeChange+StateChange+RelationChange+KnowledgeChange+CapabilityChange+MethodChange+BehaviorChangeModification= AttributeChange+ StateChange+ RelationChange+ KnowledgeChange+ CapabilityChange+ MethodChange+ BehaviorChange
修改并不等于保存。
Modify≠SaveModify\neq Save
修改发生在运行对象内部,保存则负责将修改后的结构提交到持久化系统。
159.9 保存
**保存(Save)**是将 Domain Object 当前运行结构转换为可持久化数据,并提交给 Repository 或其他持久化机制。
RuntimeObject→Save→PersistenceRuntimeObject \rightarrow Save \rightarrow Persistence
工程流程:
DomainObject→Repository→MySQLDomainObject \rightarrow Repository \rightarrow MySQL
保存的数据可以包括:
SaveData={Object,Attribute,State,Relation,Knowledge,Goal,Capability,Method,Behavior,Memory,History}SaveData= \{ Object, Attribute, State, Relation, Knowledge, Goal, Capability, Method, Behavior, Memory, History \}
保存的核心意义是:
使对象当前的重要状态不会因为运行环境结束而丢失。
例如:
Capabilityt→Capabilityt+1Capability_t \rightarrow Capability_{t+1}
如果新的能力状态只存在于内存中而没有保存:
RuntimeEnd→DataLossRuntimeEnd \rightarrow DataLoss
如果保存成功:
Capabilityt+1→MySQLCapability_{t+1} \rightarrow MySQL
下一次系统启动即可:
MySQL→Load→Capabilityt+1MySQL \rightarrow Load \rightarrow Capability_{t+1}
因此:
Save\rightarrowLoadSave\rightarrowLoad
构成对象连续运行的重要基础。
159.10 更新
**更新(Update)**表示把对象发生的变化正式反映到系统持久化结构、关系结构或运行结构中,使新对象状态替代旧对象状态。
Objectt→Modify→Objectt+1Object_t \rightarrow Modify \rightarrow Object_{t+1}
然后:
Objectt+1→UpdateObject_{t+1} \rightarrow Update
数据库层面可以表示为:
Recordt→Recordt+1Record_t\rightarrow Record_{t+1}
更新与保存虽然密切相关,但概念不同。
Save≠UpdateSave\neq Update
Save强调把当前对象状态进行持久化。
Update强调已经存在的对象结构被新状态替换或修正。
因此可以形成:
Modify→Save→UpdateModify \rightarrow Save \rightarrow Update
也可以在具体工程中通过一次 Repository 操作同时完成保存与更新:
Modify→Repository→MySQLModify \rightarrow Repository \rightarrow MySQL
但是在 ICAI 理论层面仍然应该保持两个概念独立。
159.11 销毁
**销毁(Destroy)**是 Domain Object 生命周期的终止阶段,表示该对象不再继续作为当前运行对象存在。
Object→∅Object\rightarrow\varnothing
生命周期:
Running→DestroyedRunning\rightarrow Destroyed
销毁可以由多种原因产生:
DestroyReason={Completed,Cancelled,Expired,Invalid,Replaced,Deleted,Terminated}DestroyReason= \{ Completed, Cancelled, Expired, Invalid, Replaced, Deleted, Terminated \}
销毁不一定意味着数据库中的全部历史数据立即删除。
必须区分:
Destroy≠DeleteAllHistoryDestroy\neq DeleteAllHistory
例如一个机器个体停止运行:
MachineIndividual→DestroyedMachineIndividual \rightarrow Destroyed
但其历史仍然可以保存:
MachineIndividual→HistoryMachineIndividual \rightarrow History
因此:
RuntimeObject=∅RuntimeObject=\varnothing
并不意味着:
HistoricalRecord=∅HistoricalRecord=\varnothing
这对于 ICAI 的连续性非常重要。
159.12 生命周期与对象状态的区别
ICAI 中必须严格区分生命周期状态(Lifecycle State)和领域状态(Domain State)。
生命周期回答:
对象是否存在,以及对象处于生命周期的哪个阶段?
领域状态回答:
对象当前是什么状态?
因此:
LifecycleState≠DomainStateLifecycleState\neq DomainState
例如一个 CognitiveObject:
LifecycleState=RunningLifecycleState=Running
同时:
DomainState=ActiveDomainState=Active
一个能力对象:
LifecycleState=RunningLifecycleState=Running
同时:
CapabilityState=UnavailableCapabilityState=Unavailable
这两个状态并不矛盾。
同样:
LifecycleState=DestroyedLifecycleState=Destroyed
表示对象生命周期已经结束,而:
DomainState=FailedDomainState=Failed
可能只是对象在销毁之前的最后一个业务状态。
因此 ICAI 对象至少需要两个不同层次的状态模型:
ObjectState={LifecycleState,DomainState}ObjectState= \{ LifecycleState, DomainState \}
159.13 生命周期与历史
生命周期中的每一次重要状态变化都应该形成历史记录。
定义:
LifecycleHistory={Before,Event,After,Reason,Time}LifecycleHistory= \{ Before, Event, After, Reason, Time \}
例如:
Created→InitializeInitializedCreated \xrightarrow{Initialize} Initialized
记录:
H={Created,Initialize,Initialized,Reason,Time}H= \{ Created, Initialize, Initialized, Reason, Time \}
下一次:
Initialized→LoadLoadedInitialized \xrightarrow{Load} Loaded
继续形成:
H1,H2,…,HnH_1,H_2,\ldots,H_n
因此:
History={H1,H2,…,Hn}History= \{H_1,H_2,\ldots,H_n\}
完整历史:
Lifecycle→Event→Transition→HistoryLifecycle \rightarrow Event \rightarrow Transition \rightarrow History
历史记录使 ICAI 能够知道:
- 对象什么时候创建;
- 什么时候初始化;
- 什么时候加载;
- 什么时候运行;
- 什么时候发生修改;
- 修改了什么;
- 什么时候保存;
- 什么时候更新;
- 为什么销毁。
因此:
History→Memory→Experience→LearningHistory\rightarrow Memory\rightarrow Experience\rightarrow Learning
生命周期历史也成为 ICAI 个体连续性的重要数据来源。
159.14 生命周期与对象关系
对象生命周期会直接影响对象之间的关系。
例如:
ObjectA→DependsOnObjectBObject_A \xrightarrow{DependsOn} Object_B
如果:
Lifecycle(ObjectB)=DestroyedLifecycle(Object_B)=Destroyed
则:
Dependency(ObjectA,ObjectB)→InvalidDependency(Object_A,Object_B) \rightarrow Invalid
进一步:
DependencyChange→ReMatchingDependencyChange \rightarrow ReMatching
再进入:
Matching→Method→DecisionMatching \rightarrow Method \rightarrow Decision
因此生命周期不是对象内部的孤立机制,而会影响整个 ICAI 对象网络。
统一表示:
Objectt+Relationt+Lifecyclet→Objectt+1+Relationt+1Object_t+ Relation_t+ Lifecycle_t \rightarrow Object_{t+1}+ Relation_{t+1}
159.15 生命周期与机器个体运行
机器个体不是只有一个生命周期,而是由大量 Domain Object 生命周期共同组成。
MachineIndividual={O1,O2,…,On}MachineIndividual= \{O_1,O_2,\ldots,O_n\}
每个对象都有自己的生命周期:
Lifecycle(O1)Lifecycle(O_1) Lifecycle(O2)Lifecycle(O_2) ⋯\cdots Lifecycle(On)Lifecycle(O_n)
因此机器个体生命周期可以表示为:
Lifecycle(MI)=F(Lifecycle(O1),Lifecycle(O2),…,Lifecycle(On))Lifecycle(MI)= F( Lifecycle(O_1), Lifecycle(O_2), \ldots, Lifecycle(O_n) )
例如:
MachineIndividual
│
├── CognitiveObject
│ └── Lifecycle
│
├── Capability
│ └── Lifecycle
│
├── Method
│ └── Lifecycle
│
├── Decision
│ └── Lifecycle
│
├── Behavior
│ └── Lifecycle
│
├── Memory
│ └── Lifecycle
│
└── Maintenance
└── Lifecycle
机器个体不是等待所有对象同时结束,而是根据对象之间的关系和依赖进行生命周期管理。
159.16 ICAI对象生命周期工程模型
理论上的生命周期必须映射到工程对象。
核心映射:
LifecycleTheory→LifecycleModel→LifecycleState→LifecycleEngine→RuntimeLifecycleTheory \rightarrow LifecycleModel \rightarrow LifecycleState \rightarrow LifecycleEngine \rightarrow Runtime
建议建立:
domain/
├── individual/
├── cognitive/
├── behavior/
├── memory/
└── maintenance/
engine/
└── lifecycle/
service/
└── lifecycle/
repository/
└── lifecycle/
核心 Domain Object:
class CognitiveObject
{
protected $id;
protected $type;
protected $attributes;
protected $state;
protected $relations;
protected $lifecycleState;
protected $createdAt;
protected $updatedAt;
}
生命周期对象:
class ObjectLifecycle
{
protected $objectId;
protected $objectType;
protected $state;
protected $previousState;
protected $event;
protected $reason;
protected $createdAt;
}
生命周期引擎:
class ObjectLifecycleEngine
{
public function create($object)
{
return null;
}
public function initialize($object, $data)
{
return null;
}
public function load($objectId, $type)
{
return null;
}
public function run($object, $context)
{
return null;
}
public function modify($object, $changes)
{
return null;
}
public function save($object)
{
return null;
}
public function update($object)
{
return null;
}
public function destroy($object, $reason)
{
return null;
}
}
生命周期状态:
class LifecycleState
{
const CREATED = 'created';
const INITIALIZED = 'initialized';
const LOADED = 'loaded';
const RUNNING = 'running';
const MODIFIED = 'modified';
const SAVED = 'saved';
const UPDATED = 'updated';
const DESTROYED = 'destroyed';
}
159.17 生命周期状态转换引擎
生命周期不能允许任意状态之间直接跳转,而应该由规则控制。
定义:
Transition={From,Event,Condition,To,Reason,Time}Transition= \{ From, Event, Condition, To, Reason, Time \}
例如:
Created→InitializeInitializedCreated \xrightarrow{Initialize} Initialized Initialized→LoadLoadedInitialized \xrightarrow{Load} Loaded Loaded→RunRunningLoaded \xrightarrow{Run} Running Running→ModifyModifiedRunning \xrightarrow{Modify} Modified Modified→SaveSavedModified \xrightarrow{Save} Saved Saved→UpdateUpdatedSaved \xrightarrow{Update} Updated Updated→RunRunningUpdated \xrightarrow{Run} Running
最终:
Running→DestroyDestroyedRunning \xrightarrow{Destroy} Destroyed
因此可以建立:
class LifecycleTransitionEngine
{
public function canTransition($from, $to, $context)
{
return false;
}
public function transition($object, $event, $context)
{
return false;
}
public function recordHistory($object, $from, $to, $event)
{
return false;
}
}
其核心原则是:
InvalidTransition⇒BlockInvalidTransition\Rightarrow Block
也就是说,非法生命周期转换不能进入下一阶段。
159.18 Repository与生命周期
生命周期最终必须与持久化机制连接。
核心结构:
DomainObject→LifecycleEngine→Repository→MySQLDomainObject \rightarrow LifecycleEngine \rightarrow Repository \rightarrow MySQL
Repository负责:
- 创建数据;
- 读取数据;
- 保存数据;
- 更新数据;
- 删除或归档数据;
- 读取生命周期历史。
例如:
class ObjectLifecycleRepository
{
public function insert($lifecycle)
{
return false;
}
public function find($objectId, $objectType)
{
return null;
}
public function save($object)
{
return false;
}
public function update($object)
{
return false;
}
public function archive($object)
{
return false;
}
public function recordHistory($history)
{
return false;
}
}
MySQL可以建立:
object_lifecycles
object_lifecycle_states
object_lifecycle_history
其中:
object_lifecycles 保存对象生命周期基本信息;
object_lifecycle_states 保存当前生命周期状态;
object_lifecycle_history 保存生命周期变化过程。
159.19 MVC运行结构
ICAI对象生命周期最终进入完整的 MVC 工程结构:
Controller→Service→LifecycleEngine→DomainObject→Repository→MySQLController \rightarrow Service \rightarrow LifecycleEngine \rightarrow DomainObject \rightarrow Repository \rightarrow MySQL
例如:
用户请求
↓
Controller
↓
ObjectLifecycleService
↓
ObjectLifecycleEngine
↓
Domain Object
↓
LifecycleTransitionEngine
↓
Repository
↓
MySQL
显示层:
Runtime→Controller→ViewData→Smarty→HTMLRuntime \rightarrow Controller \rightarrow ViewData \rightarrow Smarty \rightarrow HTML
因此生命周期本身也是 ICAI MVC 工程体系的一部分。
159.20 ICAI对象生命周期完整模型
综合八个生命周期阶段:
Create→Initialize→Load→Run→Modify→Save→Update→Run\boxed{ Create \rightarrow Initialize \rightarrow Load \rightarrow Run \rightarrow Modify \rightarrow Save \rightarrow Update \rightarrow Run }
终止:
Run→DestroyRun\rightarrow Destroy
因此完整生命周期可以表示为:
创建
↓
初始化
↓
加载
↓
运行
↓
修改
↓
保存
↓
更新
↓
再次运行
↓
……
↓
销毁
如果发生异常:
运行
↓
异常
↓
检测
↓
诊断
↓
修复
↓
验证
↓
继续运行
因此生命周期还必须与 ICAI 自我维护机制连接:
Lifecycle→SelfDetection→Diagnosis→Repair→Verification→LifecycleLifecycle \rightarrow SelfDetection \rightarrow Diagnosis \rightarrow Repair \rightarrow Verification \rightarrow Lifecycle
159.21 生命周期与ICA I连续性
ICAI 的一个重要特征是个体连续性。
如果机器个体每次启动都重新建立全部知识、经验和状态,那么它实际上不能形成真正的连续运行。
因此:
Save→Persistence→Load→ContinueSave \rightarrow Persistence \rightarrow Load \rightarrow Continue
形成连续性:
Runtimet→Savet→Shutdown→Loadt+1→Runtimet+1Runtime_t \rightarrow Save_t \rightarrow Shutdown \rightarrow Load_{t+1} \rightarrow Runtime_{t+1}
并且:
Memoryt→Memoryt+1Memory_t \rightarrow Memory_{t+1} Experiencet→Experiencet+1Experience_t \rightarrow Experience_{t+1} Knowledget→Knowledget+1Knowledge_t \rightarrow Knowledge_{t+1} Capabilityt→Capabilityt+1Capability_t \rightarrow Capability_{t+1}
因此:
Lifecycle→Persistence→Memory→Experience→Learning→IndividualContinuity\boxed{ Lifecycle \rightarrow Persistence \rightarrow Memory \rightarrow Experience \rightarrow Learning \rightarrow IndividualContinuity }
对象生命周期最终成为 ICAI 个体连续性的工程基础。
159.22 ICAI对象生命周期统一关系
本章八个核心阶段可以统一为:
Create→Initialize→Load→Run→Modify→Save→Update→RunCreate \rightarrow Initialize \rightarrow Load \rightarrow Run \rightarrow Modify \rightarrow Save \rightarrow Update \rightarrow Run
终止:
Run→DestroyRun\rightarrow Destroy
对象变化:
Objectt→EventObjectt+1Object_t \xrightarrow{Event} Object_{t+1}
对象持久化:
Objectt→Save→PersistenceObject_t \rightarrow Save \rightarrow Persistence
对象恢复:
Persistence→Load→Objectt+1Persistence \rightarrow Load \rightarrow Object_{t+1}
对象连续运行:
Create→Initialize→Load→Run→Modify→Save→Update→Load→Run→⋯→Destroy\boxed{ Create \rightarrow Initialize \rightarrow Load \rightarrow Run \rightarrow Modify \rightarrow Save \rightarrow Update \rightarrow Load \rightarrow Run \rightarrow \cdots \rightarrow Destroy }
159.23 ICAI对象生命周期与总体工程体系
至此,ICAI 对象已经从第155章的面向对象工程、第156章的 Domain Object、第157章的理论模型到对象模型、第158章的对象关系模型进一步进入动态生命周期模型。
完整工程转换关系为:
ICAI理论→形式化模型→数学模型→逻辑模型→数据对象→DomainObject→ObjectRelation→ObjectLifecycle→Service→Engine→Repository→MySQL→Runtime\boxed{ ICAI理论 \rightarrow 形式化模型 \rightarrow 数学模型 \rightarrow 逻辑模型 \rightarrow 数据对象 \rightarrow DomainObject \rightarrow ObjectRelation \rightarrow ObjectLifecycle \rightarrow Service \rightarrow Engine \rightarrow Repository \rightarrow MySQL \rightarrow Runtime }
其中:
ObjectRelation→决定对象如何关联ObjectRelation \rightarrow 决定对象如何关联 ObjectLifecycle→决定对象如何存在、变化和终止ObjectLifecycle \rightarrow 决定对象如何存在、变化和终止
二者共同构成 ICAI Domain Object 的动态工程基础。
159.24 本章总结
ICAI 对象不是静态的数据记录,而是具有明确身份、结构、状态、关系、责任和生命周期的运行对象。
其生命周期由八个基本阶段构成:
创建→初始化→加载→运行→修改→保存→更新→销毁\boxed{ 创建 \rightarrow 初始化 \rightarrow 加载 \rightarrow 运行 \rightarrow 修改 \rightarrow 保存 \rightarrow 更新 \rightarrow 销毁 }
其中,运行后的保存和更新可以循环发生:
Run→Modify→Save→Update→RunRun \rightarrow Modify \rightarrow Save \rightarrow Update \rightarrow Run
因此,ICAI 对象生命周期不是一次性的线性过程,而是:
生命周期=存在+运行+变化+持久化+恢复+终止\boxed{ 生命周期= 存在+ 运行+ 变化+ 持久化+ 恢复+ 终止 }
最终形成:
Object→Relation→Lifecycle→Runtime→Change→Persistence→Continuation\boxed{ Object \rightarrow Relation \rightarrow Lifecycle \rightarrow Runtime \rightarrow Change \rightarrow Persistence \rightarrow Continuation }
由此,ICAI 的 Domain Object 不再只是理论概念,也不再只是 PHP Class,而成为具有创建、初始化、加载、运行、修改、保存、更新、销毁能力的真实程序运行对象。
这一步完成了从“对象关系”到“对象动态存在”的工程化转换,为后续 ICAI Runtime、对象状态管理、事件驱动、生命周期管理以及机器个体持续运行提供基础。