Skip to content

KnowledgeSapceNet  #2

Description

@fushang318

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions