获取更多资讯,赶快关注上面的公众号吧!

【Jasima系列教程】

  • 初识Jasima-调度仿真系列教程预告
  • 初识Jasima-Jasima中的建模对象
  • (本文)初识Jasima-Jasima中的事件和消息

文章目录

  • 初识Jasima-Jasima中的事件和消息
    • 事件
    • 消息
    • 监听器
      • 实验监听器ExperimentListener
      • 作业监听器JobListener
      • 仿真组件生命周期监听器SimComponentLifeCycleListener
      • 车间监听器ShopListener
      • 工作站监听器WorkStationListener
    • 仿真基本事件、处理和消息

初识Jasima-Jasima中的事件和消息

其实在Jasima中的事件处理和消息机制并不是很复杂,看过以下内容后你就会觉得很清楚。

事件

仿真基本的流程是作业到达后进入机床队列,如果机床空闲则开始加工,否则作业在队列中等待,由于工时提前已知且确定,所以作业一旦开始加工,加工结束时间也就确定。当作业加工完成,释放机床,如果不是最后一道工序则作业进入下一道工序的队列,同上述过程相似,而如果是最后一道工序,则作业加工完成离开系统。释放后的机床又会从自己的队列中选择等待加工的作业。当所有作业加工完成或系统在制品数达到上限,则仿真结束。

投料源事件:通过该事件不断地产生作业,在事件处理中,会不断创建新的作业,同时又会将投料源事件重新加入到事件列表中,直到达到指定的作业数量。释放的作业进入机床队列,触发机床选择加工事件。

选择加工事件:该事件触发时,机床将从队列中选择最优先的作业进行加工,并创建加工完成事件,作业开始加工时又会预约下一机床,创建未来到达事件。

加工完成事件:工序完成时触发,释放机床,机床状态变为空闲IDLE,工件当前工序完成,如果为最后一道工序,则触发工件加工完成,否则发送工件至下一机床。如果当前机床缓存中有待加工工件,则选择工件进行加工,触发选择加工事件。

未来到达事件:该事件触发时,作业会添加到机床的队列中,当至少有一台机床空闲且队列中有作业正在等待时,创建选择加工事件。

消息

Jasima中采用了消息监听机制进行相应动作的处理,各个组件实现了Notifier接口,该接口负责向各个监听器NotifierListener通知事件,使用Java泛型实现了观察者模式(Observer-pattern),在其实现类NotifierImpl中通过NotifierListener对真实的通知器subject进行处理。


监听器

实验监听器ExperimentListener

为实验监听器的基类,将所有实验相关的事件指定到不同的方法。

事件消息 事件名称
实验开始 EXPERIMENT_STARTING
实验初始化 EXPERIMENT_INITIALIZED
实验运行前 EXPERIMENT_BEFORE_RUN
实验运行 EXPERIMENT_RUN_PERFORMED
实验运行后· EXPERIMENT_AFTER_RUN
实验完成 EXPERIMENT_DONE
实验收集结果 EXPERIMENT_COLLECTING_RESULTS
实验正在完成 EXPERIMENT_FINISHING
实验已完成 EXPERIMENT_FINISHED
其他 handleOther

作业监听器JobListener

事件消息 事件名称
作业到达 JOB_RELEASED
作业完成 JOB_FINISHED
作业进入队列 JOB_ARRIVED_IN_QUEUE
作业离开队列 JOB_REMOVED_FROM_QUEUE
作业开始加工工序 JOB_START_OPERATION
作业完成加工工序 JOB_END_OPERATION
其他 handleOther

仿真组件生命周期监听器SimComponentLifeCycleListener

事件消息 事件名称
初始化 INIT
运行前 BEFORE_RUN
运行后 AFTER_RUN
完成 DONE
打印结果消息 ProduceResultsMessage
其他 handleOther

车间监听器ShopListener

事件消息 事件名称
作业到达 JOB_RELEASED
作业完成 JOB_FINISHED
生命周期监听器 SimComponentLifeCycleListener

工作站监听器WorkStationListener

事件消息 事件名称
工作站到达作业 WS_JOB_ARRIVAL
工作站选择作业 WS_JOB_SELECTED
工作站完成作业 WS_JOB_COMPLETED
工作站激活 WS_ACTIVATED
工作站失效 WS_DEACTIVATED
生命周期监听器 SimComponentLifeCycleListener

仿真基本事件、处理和消息

虽然上面的内容看起来很多,但在实际应用中不会都涉及到,下面这幅图给出了一次仿真中大多会涉及的事件、处理和消息,看完后是不是觉得很清晰。

初识Jasima-Jasima中的事件和消息相关推荐

  1. 服务器事件刷新消息,Windows Server 2003 中的 DNS 事件消息 1616 到 6702

    更多信息 一般 DNS 事件消息 1616 MessageId=1616 Severity=Error SymbolicName=DNS_EVENT_TEXT_STRING_TOO_LONG DNS ...

  2. C#中如何截取Windows消息来触发自定义事件

    原文 C#中如何截取Windows消息来触发自定义事件 在c#windows开发中,我们常常会遇到拦截windows消息,来触发某个特定任务的问题. 由于目前使用c#的开发人员非常多,而且大多数c#程 ...

  3. 初识 Vue(11)---(Vue 中的事件绑定)

    Vue 中的事件绑定 案例:点击 Hello World ,从黑变红,再次点击,从红变黑... 通过 class 来实现 页面效果的变更 方法一:(通过对象)对象绑定 ​​<!DOCTYPE h ...

  4. 三种方式实现观察者模式 及 Spring中的事件编程模型

    观察者模式可以说是众多设计模式中,最容易理解的设计模式之一了,观察者模式在Spring中也随处可见,面试的时候,面试官可能会问,嘿,你既然读过Spring源码,那你说说Spring中运用的设计模式吧, ...

  5. C#委托、事件、消息(入门级)

    本文的内容需要一定的OOP知识,不过我会在另一个内容介绍,由于实现细节,我会先写这部分. 大家关于委托.事件和消息大多是从WinForm编程接触的,首先是你在可视化的设计器里双击控件写所谓事件的处理代 ...

  6. 零基础逆向工程28_Win32_02_事件_消息_消息处理函数

    1 第一个图形界面程序 步骤1:创建Windows应用程序 选择空项目步骤2:在新建项窗口中选C++代码文件 创建一个新的cpp文件步骤3:在新的cpp文件中添加:#include <Windo ...

  7. Spring中的事件机制

    Spring的事件驱动模型由三部分组成: 事件(消息):ApplicationEvent,继承自JDK的EventObject,所有事件将继承它,并通过source得到事件源. 事件发布者(生产者): ...

  8. 使用事件和消息队列实现分布式事务

    原文:http://skaka.me/blog/2016/04/21/springcloud1/ 不同于单一架构应用(Monolith), 分布式环境下, 进行事务操作将变得困难, 因为分布式环境通常 ...

  9. 事件映射 消息映射_映射幻影收费站

    事件映射 消息映射 When I was a child, I had a voracious appetite for books. I was constantly visiting the li ...

  10. 如何正确使用Node.js中的事件

    by Usama Ashraf 通过Usama Ashraf 如何正确使用Node.js中的事件 (How to use events in Node.js the right way) Before ...

最新文章

  1. 【Leetcode】 刷题之路1(python)
  2. 数据蒋堂 | SQL是描述性语言?
  3. Java 如何优雅的实现时间控制
  4. php5.5 mysql网站空间_PHP环境配置IIS5.0+PHP5.23+MYSQL5+phpMyAdmin
  5. 学习笔记之23-typedef
  6. linux容器进程号,linux下docker启动容器,查看容器、进程、日志等命令
  7. (转)C#开发微信门户及应用(1)--开始使用微信接口
  8. Spring中MultipartHttpServletRequest实现文件上传
  9. Linux 禁止和开启 ping 的方法
  10. zabbix中文乱码的解决办法
  11. 标记分布学习LDL与多标记学习MLL以及单标记学习
  12. 安卓app开发-02-安卓app快速开发
  13. Revo Uninstaller快捷键命令
  14. 802.11ac 速率 + 信道 + 国家码信道
  15. xp系统outlook突然无法连接服务器,outlook邮箱打不开是什么原因
  16. PCB治具设计、制造和管理
  17. 自做Google Chrome免安装绿色版
  18. 进程间通信有哪几种方式?进程间通信的方法详解
  19. SSM医院移动收费运维平台毕业设计源码161045
  20. 我们该如何在网上寻找资源!!!!

热门文章

  1. SqlServer实现split功能
  2. python条件语句练习题_[python](1)---条件语句练习题
  3. windows java环境搭建_Java环境搭建(Windows环境)-Fun言
  4. ssm项目的maven-pom.xml
  5. 鸿蒙有什么好处,鸿蒙系统有什么好处-鸿蒙系统有什么用-鸿蒙系统有什么区别...
  6. mac php编译freetype,mac OS X自带PHP环境,没有freetype的解决办法
  7. forever不重启 node_node.js – NodeJS和Forever(监控并重启应用)
  8. semantic ui中文文档_一起学Vue:UI框架(element-ui)
  9. 大数据学情分析_大数据时代|如何轻松做好学情分析
  10. 吴恩达教授机器学习课程学习【一】- 线性回归(1)