我有一组带有任务的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。任何人都可以帮助解决这个问题吗?
答案 0 :(得分:0)
问题本身并不是定义列表,有序集合。它“应该”是一个DAG(有向图非循环图),如果你有一个循环,你就会遇到问题。通常,可以应用任何横向算法来查找此DAG问题的列表(可执行任务),并且可能是您想要的。但是,有时它可能会更复杂。关于行动排序(计划和调度),IA有一个完整的分支。