【仿真建模-anylogic】FlowchartPort原理解析

2024-06-14 14:44

本文主要是介绍【仿真建模-anylogic】FlowchartPort原理解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Author:赵志乾
Date:2024-06-14
Declaration:All Right Reserved!!!

1. 类图

2. 原理解析

2.1 核心函数

        FlowchartPort继承Port类,并定义了一系列抽象函数;核心函数如下:

函数功能
FlowchartPort(FlowchartBlock owner)构造函数,入参指定Port所属的FlowchartBlock;FlowchartBlock继承自Agent;
abstract long count()获取到目前为止通过该端口的Agent个数;

abstrack void markError()

abstract boolean isError()

标注端口发生错误

判定端口是否发生错误

boolean isReadyToExit()

boolean isCannotAccept()

用于输出端口判定是否有Agent准备离开

用于输入端口判定此刻是否不能接收Agent

FlowchartBlock getFlowchartBlockRepresentative()对于owner为内部block时,获取owner的owner;属于内部函数,不建议用户调用;
2.2 代码解析
//******************核心字段************************
// 非内部block为null,内部block为owner的owner;
private FlowchartBlock representativeOwner;//*******************构造函数************************
public FlowchartPort(FlowchartBlock owner) {super(owner);
}//*******************抽象方法,需由子类实现**************
public abstract long count();
public abstract void markError();
public abstract boolean isError();//*******************默认实现,子类一般会覆写************
public boolean isReadyToExit() {return false;
}
public boolean isCannotAccept() {return false;
}//*******************获取owner************************
//获取端口直接归属的owner
public FlowchartBlock getAgent() {return (FlowchartBlock)super.getAgent();
}
//对于直接归属的owner为内部block时,获取owner的ownerBlock
public FlowchartBlock getFlowchartBlockRepresentative() {if (this.representativeOwner == null) {this.representativeOwner = this.getAgent().getFlowchartBlockRepresentative();if (this.representativeOwner == null) {this.markError();this.getAgent().error("Internal error: this block has been set as 'internal block' but it has no 'not internal' owner");}}return this.representativeOwner;}

3. 应用场景

       FlowchartPort是流图组件端口的基类,一般不会直接使用;如果需要自行封装组件库时会用到;

这篇关于【仿真建模-anylogic】FlowchartPort原理解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1060692

相关文章

IDEA与JDK、Maven安装配置完整步骤解析

《IDEA与JDK、Maven安装配置完整步骤解析》:本文主要介绍如何安装和配置IDE(IntelliJIDEA),包括IDE的安装步骤、JDK的下载与配置、Maven的安装与配置,以及如何在I... 目录1. IDE安装步骤2.配置操作步骤3. JDK配置下载JDK配置JDK环境变量4. Maven配置下

Spring Cloud Hystrix原理与注意事项小结

《SpringCloudHystrix原理与注意事项小结》本文介绍了Hystrix的基本概念、工作原理以及其在实际开发中的应用方式,通过对Hystrix的深入学习,开发者可以在分布式系统中实现精细... 目录一、Spring Cloud Hystrix概述和设计目标(一)Spring Cloud Hystr

Python中配置文件的全面解析与使用

《Python中配置文件的全面解析与使用》在Python开发中,配置文件扮演着举足轻重的角色,它们允许开发者在不修改代码的情况下调整应用程序的行为,下面我们就来看看常见Python配置文件格式的使用吧... 目录一、INI配置文件二、YAML配置文件三、jsON配置文件四、TOML配置文件五、XML配置文件

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

MySQL中的MVCC底层原理解读

《MySQL中的MVCC底层原理解读》本文详细介绍了MySQL中的多版本并发控制(MVCC)机制,包括版本链、ReadView以及在不同事务隔离级别下MVCC的工作原理,通过一个具体的示例演示了在可重... 目录简介ReadView版本链演示过程总结简介MVCC(Multi-Version Concurr

使用Java实现一个解析CURL脚本小工具

《使用Java实现一个解析CURL脚本小工具》文章介绍了如何使用Java实现一个解析CURL脚本的工具,该工具可以将CURL脚本中的Header解析为KVMap结构,获取URL路径、请求类型,解析UR... 目录使用示例实现原理具体实现CurlParserUtilCurlEntityICurlHandler

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT