初识Jasima-Jasima中的事件和消息
获取更多资讯,赶快关注上面的公众号吧!
【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中的事件和消息相关推荐
- 服务器事件刷新消息,Windows Server 2003 中的 DNS 事件消息 1616 到 6702
更多信息 一般 DNS 事件消息 1616 MessageId=1616 Severity=Error SymbolicName=DNS_EVENT_TEXT_STRING_TOO_LONG DNS ...
- C#中如何截取Windows消息来触发自定义事件
原文 C#中如何截取Windows消息来触发自定义事件 在c#windows开发中,我们常常会遇到拦截windows消息,来触发某个特定任务的问题. 由于目前使用c#的开发人员非常多,而且大多数c#程 ...
- 初识 Vue(11)---(Vue 中的事件绑定)
Vue 中的事件绑定 案例:点击 Hello World ,从黑变红,再次点击,从红变黑... 通过 class 来实现 页面效果的变更 方法一:(通过对象)对象绑定 <!DOCTYPE h ...
- 三种方式实现观察者模式 及 Spring中的事件编程模型
观察者模式可以说是众多设计模式中,最容易理解的设计模式之一了,观察者模式在Spring中也随处可见,面试的时候,面试官可能会问,嘿,你既然读过Spring源码,那你说说Spring中运用的设计模式吧, ...
- C#委托、事件、消息(入门级)
本文的内容需要一定的OOP知识,不过我会在另一个内容介绍,由于实现细节,我会先写这部分. 大家关于委托.事件和消息大多是从WinForm编程接触的,首先是你在可视化的设计器里双击控件写所谓事件的处理代 ...
- 零基础逆向工程28_Win32_02_事件_消息_消息处理函数
1 第一个图形界面程序 步骤1:创建Windows应用程序 选择空项目步骤2:在新建项窗口中选C++代码文件 创建一个新的cpp文件步骤3:在新的cpp文件中添加:#include <Windo ...
- Spring中的事件机制
Spring的事件驱动模型由三部分组成: 事件(消息):ApplicationEvent,继承自JDK的EventObject,所有事件将继承它,并通过source得到事件源. 事件发布者(生产者): ...
- 使用事件和消息队列实现分布式事务
原文:http://skaka.me/blog/2016/04/21/springcloud1/ 不同于单一架构应用(Monolith), 分布式环境下, 进行事务操作将变得困难, 因为分布式环境通常 ...
- 事件映射 消息映射_映射幻影收费站
事件映射 消息映射 When I was a child, I had a voracious appetite for books. I was constantly visiting the li ...
- 如何正确使用Node.js中的事件
by Usama Ashraf 通过Usama Ashraf 如何正确使用Node.js中的事件 (How to use events in Node.js the right way) Before ...
最新文章
- 【Leetcode】 刷题之路1(python)
- 数据蒋堂 | SQL是描述性语言?
- Java 如何优雅的实现时间控制
- php5.5 mysql网站空间_PHP环境配置IIS5.0+PHP5.23+MYSQL5+phpMyAdmin
- 学习笔记之23-typedef
- linux容器进程号,linux下docker启动容器,查看容器、进程、日志等命令
- (转)C#开发微信门户及应用(1)--开始使用微信接口
- Spring中MultipartHttpServletRequest实现文件上传
- Linux 禁止和开启 ping 的方法
- zabbix中文乱码的解决办法
- 标记分布学习LDL与多标记学习MLL以及单标记学习
- 安卓app开发-02-安卓app快速开发
- Revo Uninstaller快捷键命令
- 802.11ac 速率 + 信道 + 国家码信道
- xp系统outlook突然无法连接服务器,outlook邮箱打不开是什么原因
- PCB治具设计、制造和管理
- 自做Google Chrome免安装绿色版
- 进程间通信有哪几种方式?进程间通信的方法详解
- SSM医院移动收费运维平台毕业设计源码161045
- 我们该如何在网上寻找资源!!!!
热门文章
- SqlServer实现split功能
- python条件语句练习题_[python](1)---条件语句练习题
- windows java环境搭建_Java环境搭建(Windows环境)-Fun言
- ssm项目的maven-pom.xml
- 鸿蒙有什么好处,鸿蒙系统有什么好处-鸿蒙系统有什么用-鸿蒙系统有什么区别...
- mac php编译freetype,mac OS X自带PHP环境,没有freetype的解决办法
- forever不重启 node_node.js – NodeJS和Forever(监控并重启应用)
- semantic ui中文文档_一起学Vue:UI框架(element-ui)
- 大数据学情分析_大数据时代|如何轻松做好学情分析
- 吴恩达教授机器学习课程学习【一】- 线性回归(1)