KnowledgeSapceNet 表示一个很多 KnowledgeSapceNode 节点组成的网状结构
其中每个 KnowledgeSapceNode 节点,包含多个 KnowledgeNode 节点
一个 KnowledgeNode 可以被多个 KnowledgeSapceNode 分别包含
包括两个模型
KnowledgeSapceNet
表示一个网状结构
KnowledgeSapceNode
表示一个节点
KnowledgeSapceNode 有三个属性
knowledge_nodes: 当前节点包含的KnowledgeNode对象数组 # KnowledgeNode 由 issue1 实现
parents: 所有前置 KnowledgeSapceNode对象数组
children: 所有后续 KnowledgeSapceNode对象数组
一个 KnowledgeSapceNet 被持久化为一个 xml 文件
xml 文件结构如下
<KnowledgeSapceNet>
<nodes>
<node id="ks1">
<knowledge_node_ids>
<id>k1</id>
</knowledge_node_ids>
</node>
<node id="ks2">
<knowledge_node_ids>
<id>k1</id>
<id>k2</id>
</knowledge_node_ids>
</node>
</nodes>
<relations>
<relation>
<parent node_id="ks1"/>
<child node_id="ks2"/>
</relation>
</relations>
</KnowledgeSapceNet>
xml 说明
knowledge_node_ids 表示 一个KnowledgeSapceNode 包含的 KnowledgeNode id 数组
需要做的事情
1 实现
KnowledgeSapceNet
KnowledgeSapceNode
KnowledgeSpaceParser
三个类的逻辑
具体API如下
# 这个是获取 knowledge_net,由 issue1 实现了
knowledge_net = KnowledgeNet.load_xml_file('knowledge_net.xml')
# 解析 xml 为 KnowledgeSapceNet 实例
#1.xml 文件的位置是 rails_root/config/knowledge_sapce_nets/1.xml
# knowledge_net 对象中包含 KnowledgeNode 信息
sapce_net = KnowledgeSpaceParser.load(knowledge_net, "1.xml")
# 返回 parents 是空数组的 KnowledgeSapceNet 实例
sapce_nodes = sapce_net.root_nodes
sapce_nodes.each do |sapce_node|
sapce_node.knowledge_nodes
sapce_node.parents
sapce_node.children
end
KnowledgeSapceNet 表示一个很多 KnowledgeSapceNode 节点组成的网状结构
其中每个 KnowledgeSapceNode 节点,包含多个 KnowledgeNode 节点
一个 KnowledgeNode 可以被多个 KnowledgeSapceNode 分别包含
包括两个模型
一个 KnowledgeSapceNet 被持久化为一个 xml 文件
xml 文件结构如下
xml 说明
knowledge_node_ids 表示 一个KnowledgeSapceNode 包含的 KnowledgeNode id 数组
需要做的事情
1 实现
KnowledgeSapceNet
KnowledgeSapceNode
KnowledgeSpaceParser
三个类的逻辑
具体API如下