一种用于三维模拟系统的任务控制系统的制作方法_2

文档序号:9887354阅读:来源:国知局
步工作流程图;
[0045]图9为任务发布运行逻辑图;
[0046]图10为任务发布工作流程图;
[0047]图11为作业发布控制运行逻辑图;
[0048]图12为作业发布控制工作流程图;
[0049]图13为任务反馈控制运行逻辑图;
[0050]图14为任务反馈控制工作流程图;
[0051]图15为任务请求运行逻辑图;
[0052]图16为任务请求工作流程图;
[0053]图17为任务接收及显示发布运行逻辑图;
[0054]图18为任务接收及显示发布的工作流程图。
【具体实施方式】
[0055]下面结合附图及实施例对本发明做进一步的详细说明。
[0056]任务控制系统的基本目标:在t吴拟演练系统启动后,加载系统启动时用户选择的剧本文件,解析出剧本文件中的任务和作业,依据任务与作业间的关联关系的先后顺序发布,并及时根据作业执行反馈更新任务和作业的触发条件,再下一次扫描任务和作业队列时,将新满足触发条件的任务和作业再发布出去,保证了模拟演练过程的流畅性和完整性。任务控制系统驱动整个模拟演练系统的运行,主要通过系统内部调用,通过消息与系统的作业执行器、任务显示等组件相关联。任务控制系统功能主要表现在剧本加载解析,任务和简单作业的控制、状态监听、状态同步方面。如图2所示。
[0057]任务控制系统是模拟演练系统服务器端重要的组成部分,如图3所示,任务控制系统包括剧本加载模块、剧本解析模块、任务控制模块、简单作业解析模块、任务状态监听模块、任务状态同步模块、任务发布模块、作业发布模块。
[0058]1.剧本加载。
[0059]剧本是模拟演练的脉络,任务控制器是模拟演练的驱动器,任务控制器在接到指挥席演练启动的指令消息后,加载演练剧本到内存,以供下一步的剧本解析。
[0060]2.剧本解析。
[0061]剧本解析是将加载到内存的剧本文件,通过约定好的解析规则,将剧本中的剧本信息部分,任务和简单作业部分解析出来,将任务放到任务队列,将简单作业放到作业预发布队列中。并且,要将每个任务下相对应的作业填充到任务的作业集属性部分,以此建立任务与作业之间的关联关系。任务控制器将三维模拟系统具有特殊格式的剧本任务解析并控制发布,以便有效的控制模拟演练流程,将应急预案编辑成具有自定义语法格式的剧本,并通过能够识别该特殊语法格式的任务控制器解析。剧本解析部分主要包括的功能有:剧本记载、剧本解析、任务解析、作业解析、关联任务和作业。主要涉及的开发技术是剧本文件读取和字符串分解。文件读取通过字节流读入到内存中,以一个宽字符存储实现。该模块的运行逻辑如图4所示。
[0062]依据剧本解析模块的运行逻辑以上运行示意图,得到剧本解析模块的工作流程图如下图所示。从图4中可以看出,任务控制器剧本解析模块的基本逻辑是:任务控制组件接收来自其他地方的消息,如果收到服务器初始化组件发来的特定消息时就启动剧本加载,如果剧本加载成功紧接着依次执行剧本解析、任务解析、作业解析三个方法,这三个方法的主要逻辑就是字符串分解。三个解析方法执行完后,就将任务和作业关联起来,该方法实现原理主要依据任务和作业的语法设计中的一个特点,即作业ID都以它所属的任务ID为前缀,因此只要遍历整个作业队列,找出该作业的任务前缀,并将该作业写入任务队列中相应任务下的作业集中。
[0063]3.任务控制
[0064]任务控制是系统核心模块,控制服务器端任务作业的发布与反馈,驱动了三维模拟系统的进行。任务控制该部分主要实现两个功能:任务发布和任务状态更新。任务控制根据任务触发条件判断任务是否可发布,触发条件分为条件触发和时间触发,每个任务都有一个或多个触发条件,只有所有触发条件都满足后,才能触发当前任务,将该任务由任务发布器以消息的形式经过消息管理器传递到客户端任务显示组件,并将发布出去任务发布状态属性置于“已发布”状态。每个任务是否完成可以由两种情况决定:该任务下的所有作业处于完成状态或者该任务的任务目标集属性中描述的角色状态达到要求的状态。任务控制器接收到来自作业执行器反馈回来的作业执行结果消息和角色状态变更消息,根据作业执行结果消息更新任务的完成状态属性和任务下作业集中作业的状态,根据角色状态变更消息检查任务目标集属性中描述的角色状态是否达到,如果达到,立即将该条目标状态删除,反之则不。模拟演练系统的任务控制模型如图6。
[0065]4.简单作业解析。
[0066]该部分功能与任务控制部分功能类似,针对作业同样具备两个发布和状态更新两个功能。具体流程参考任务控制部分描述。
[0067]5.任务状态监听。
[0068]任务控制部件会根据作业执行器的反馈消息改变任务的作业集中作业状态和检验任务目标集属性中的角色状态,但是,这些任务属性的变化还不能直接决定任务完成状态的改变,需要一个监听程序,监控任务的作业集的作业状态是否完成和任务目标集属性是否为空,一旦发现任务的作业集中所有作业状态都完成则修改任务状态为完成,发现任务目标集属性为空了则修改任务状态为完成。
[0069]6.任务状态同步。
[0070]模拟演练系统要确保所有的客户端显示的任务状态时一致的,因此需要从服务器端的任务控制器统一广播发布。任务状态同步功能就是为实现这一目标而设置的,通过任务状态消息广播到各个客户端的任务显示组件。任务状态消息包括任务ID和任务完成状态两部分。任务状态同步:任务状态的变更是任务执行过程中经常会发生的事情,这一过程在客户端部分主要体现在任务同步消息的处理上,该模块主要包括:接收任务状态同步消息、更新任务状态、筛选任务、发布任务四部分。任务状态同步及显示发布模块的运行逻辑如图7所示。
[0071]由任务状态同步模块的详细设计及实际运行逻辑,得出该模块的工作流程如图8所示,进一步分析得出该模块的基本实现逻辑是:客户端的任务显示组件接收来自服务器端任务控制器组件发来的类型为TASK_STATE_SYNC_MESSAGE的任务消息,分解出消息体中任务实例,遍历任务列表,检查该任务是否在任务队列中存在。如果不存在,则执行任务添加方法,将该任务添加到任务队列中;如果已经存在,则将任务队列中对应任务的完成状态置为Y。无论执行以上那种方法,都必须筛选状态改变的任务放到任务发布缓冲队列中,紧接着将待发布显示的任务封装成类型为TASK_PROMPT_MESSAGE的消息,经由系统管理员的本地消息发送方法发送到本地客户端的GUI组件经其处理后显示在界面上。
[0072]7.任务发布
[0073]任务发布模块的实现相对简单,主要设计到任务消息的处理以及已发布任务的发布状态回写。该模块的运行逻辑如图9所示。
[0074]任务发布并不是一个每帧都在执行的方法,它的启动执行受到客户端的影响,只有客户端发出了任务请求消息,它才会执行一次。根据任务发布模块的设计及运行示意图,得到该模块的工作流程如图10所示。从工作流图中可以分析出任务发布的基本逻辑是:任务控制器组件接收到客户端发来的INFO_REQUEST_TASK_MESSAGE类型的消息时,任务控制器执行任务发布方法,按任务ID的顺序依次将任务提出并封装成类型为TASK_C0NTENT的任务消息,通过游戏管理器远程消息发送方法发到客户端任务显示组件。
[0075]8.作业发布
[0076]由于作业是模拟演练的最小执行单元,作业发布的时间和顺序决定了模拟演练推演阶段的事态发展流程,作业的控制及发布是否合理是任务控制器成败的关键因素之一,该模块的运行逻辑示意图如11所示。作业发布控制模块的实现主要涉及到问题是:检验简单作业队列中作业的触发条件是否满足,发布成功后的作业发布状态回写到简单作业发布队列,发布失败后的重发问题。作业发布控制的工作流程如图12所示。
[0077]从该模块的流程图可以得出,作业发布控制是一个每帧都在执行的方法,作业发布的基本逻辑是:任务控制器组件接收到系统管理员发出的滴答消息,任务控制器就要首先遍历简单作业队列,检查作业状态是“未发布”作业的触发条件是否满足
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1