具有多个下一节点的双链表

时间:2014-01-27 14:27:29

标签: java xml doubly-linked-list

我有一组带有任务的xml,每个任务都包含下一个和上一个任务ID。基于xml数据,我需要将所有任务加载为双链接列表内存,然后需要执行DLL。以下是xml示例。

<task id="1"> 
    <name>start</name>
    <task-class>dk.framework.task.StartTask</task-class>
    <task-type>start-task</task-type>
    <previous-task>0</previous-task>
    <next-task>2</next-task>
</task>
<task id="2"> 
    <name>validation</name>
    <task-class>dk.framework.task.UserValidationTask</task-class>
    <task-type>java-task</task-type>
    <previous-task>1</previous-task>
    <next-task>3</next-task>

</task>
<task id="3"> 
    <name>isSuccess</name>
    <task-class>dk.framework.task.BasicCondition</task-class>
    <task-type>condition-task</task-type>
    <previous-task>2</previous-task>
    <conditions>
        <condition response="TRUE">
            <next-task>5</next-task>
        </condition>
    <conditions>
    <conditions>
        <condition response="FALSE">
            <next-task>4</next-task>            
        </condition>
    <conditions>

</task>

<task id="4"> 
    <name>RetunErrorMessafe</name>
    <task-class>dk.framework.task.ErrorMessage</task-class>
    <task-type>message-task</task-type>
    <previous-task>3</previous-task>
    <next-task>7</next-task>
</task>
<task id="5"> 
    <name>InsertAudit</name>
    <task-class>dk.framework.task.InsertAudit</task-class>
    <task-type>java-task</task-type>
    <previous-task>3</previous-task>
    <next-task>6</next-task>
</task>

我可以根据next-task和previous-task将这些任务加载到双链表中,但对于任务id“3”,我必须根据条件将下一个节点作为4和5。任何人都可以帮助解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

问题本身并不是定义列表,有序集合。它“应该”是一个DAG(有向图非循环图),如果你有一个循环,你就会遇到问题。通常,可以应用任何横向算法来查找此DAG问题的列表(可执行任务),并且可能是您想要的。但是,有时它可能会更复杂。关于行动排序(计划和调度),IA有一个完整的分支。