新版对象附属属性格式
<h3>附加属性格式:</h3>
<pre><code>**redis键名
**陆洋:简化为OP_对象主键_Hash
OP_对象主键_Hash:{
//_copy_keys代表所有基于本对象的扩展属性进行复制的复制体集合,这个列表记录了所有复制体的创建时间,键,有效时间,创建的用户;所有与复制体相关的操作,都需要对这个结构进行操作
"_copy_keys":[{"ctime":"2019-11-12 14:00:12","key":"replica_key",
"cuser":"5615","vp":"2019-11-12 14:15:12",
"rn":"some reason"},],
//相关方法
//getReplicaInfo - 获取所有复制体的信息
//cleanReplica - 删除所有过期的复制体
//createReplica - 创建一个新的复制体,写入redis key,然后将新的信息写入列表
//getReplica - 获取某一个复制体主键的具体信息
//getObjectReplica - 基于当前对象的主键,搜索获取某个特定的复制体信息*
'_att':{ # 短属性,所有简单的段属性在这个固定的字典中储存
具体属性名:值, // 数据 字典的键不固定;值一律按字符串处理,长度不大于20
},
//相关方法
//getShortProperty获取所有的短属性,以字典形式返回
//getAllPropertyName获取所有属性名字,包括段属性
//addShortProperty添加新的段属性
//editProperty修改段属性
'_info':{ //带有下划线的代表是系统使用的属性,反之不是系统属性
'na':'', // 名字,可无
'dt':[{数据,标题,内容},], // 数据 字典的键总集合是固定,存在不固定
'ml':0, // 默认为0,dt是列表时才有意义,0代表不限长度,其他数值代表列表的最大长度
'ctp':'', // dt对应的数据类型,list(默认) 如果键不存在 代表list
'pos':'',// 相对位置,可无 , 默认为-1
'tp':'object', // 结构类型,支持txt,img,video,audio,object,timeline,func(控制函数) 如果键不存在 默认为txt
'rel':'', //关系,可无 ct 如果有值,包含关系;如果无值,一般引用
"st_var":"list_var", # 状态属性标记,如果有则说明这个附属属性同时也是一个状态变量,目前支持,list_var,float_var,object_var,int_var
},
//相关方法
//editProperty修改一个已有的属性
//editPropertyMulti修改多个属性
//addListPropertyUnit 向列表类型的属性中添加一个新的单元
//editPropertyPos重新设置所有属性的位置
//deleteNewProperty删除属性
//addNewProperty添加新的属性
'函数1':{ //函数类型的扩展属性,一般将操作的名字设置为属性名
'na':'', // 名字
'dt':'数据', // 控制函数类型的dt中包含了可以翻译的源代码字符串
'pos':'',// 在附属信息中整体位置 -1 没有位置 如果键不存在 代表没有位置
'tp':'func', // 结构类型:控制函数
'input':'txt', //
'output':'txt', // 输入输出的类型,默认都是txt
}
}</code></pre>
<p>dt对应的键名字:</p>
<pre><code>content 对应的内容(具体内容取决于数据的类型)
title 标题
info 介绍
time 时间
陆洋:这里的时间就是后台操作的实际时间,即使外部没有指定,也需要根据调用的时间进行填写
timeline 后台专用字段 不需要考虑
列表类型title(可无),content(必填,字符串),time(必填,时间戳),info(可无)
tp=func
dt="def xxx(a,b=1):return a+b"
tp=img,video,audio
dt=[{"title":"My Love","info":"","content":"http://music.taihe.com/song/607756184","time":182536152}]
tp=txt
dt=[{'content':'刘德华是华人','title':'',"time":182536152}]
tp=object
dt=[{"content":"c91_i04bhaz0","info":"","title":"刘德华模仿者","time":182536152},
{"content":"c91_VruEV8mM","info":"","title":"刘德华老婆","time":182536152},
{"content":"c236_SVjBQ5IB","info":"","title":"","time":182536152},
]</code></pre>
<h3>复制体格式:</h3>
<pre><code># 复制之前先检查键名是否存在
# redis键名:
陆洋:主键的格式改为,RP_主键_随机数_时间数_Hash,其中随机数是每次生成复制体时产生的随机数值,时间数则是根据操作的时间产生的数值
RP_主键_随机数_时间数_Hash:{
'cp_info':{
'time':'', // 复制时间
'reason':'', // 复制原因,常见有,copy,st_var两种,前者代表一般拷贝,后者代表给状态变量赋值
'user':'', // 复制用户
'valid':'', // 有效截止时间
}
//剩下的部分内容取决于复制时的参数
}
相关的操作:
//相关方法
//getReplicaInfo - 获取所有复制体的信息
//cleanReplica - 删除所有过期的复制体
//createReplica - 创建一个新的复制体,写入redis key,然后将新的信息写入列表
//getReplica - 获取某一个复制体主键的具体信息
//getObjectReplica - 基于当前对象的主键,搜索获取某个特定的复制体信息*
//checkReplicaDiff - 基于当前对象的主键,依次检查复制体信息相对于当前对象属性信息的差别给出结论
//getMergedReplica - 基于当前的对象主键,与一个已经存在的复制体信息进行合并,然后获取合并后的字典信息</code></pre>
<h3>状态变量格式:</h3>
<h6>list_var 列表变量</h6>
<p>choice_type 选择模式 single(单选),multiple(多选),multi_times(可重复选择),combination(组合)</p>
<h6>float_var 实数变量</h6>
<p>upper 上限
lower 下限</p>
<h6>int_var 整数变量</h6>
<p>upper 上限
lower 下限</p>
<h6>object_var 对象引用变量</h6>
<p>crange 概念范围</p>
<h6>text_var 文字类型变量</h6>
<p>与状态变量相关的操作
createListControlVar,createFloatControlVar...将不同的状态变量绑定到特定的属性中
clearState - 删除已有的状态变量
setStateValue - 实例化状态变量值
getStateValue - 获取状态变量值(如果当前是一个已经实例化的对象的话)</p>
<pre><code># redis键名
RP_主键_随机数_时间数_Hash:{
'cp_info':{
'time':'', // 复制时间
'reason':'', // 复制原因,常见有,copy,st_var两种,前者代表一般拷贝,后者代表给状态变量赋值
'user':'', // 复制用户
'valid':'', // 有效截止时间
}
'_img':{
...... //复制的其他
'st_var':'list_var', # 状态变量类型
'choice_type':'multiple', // 状态变量的控制参数
'st_value':'1,2,3,4' //状态变量值,一律采用字符串形式
},
}</code></pre>