当前位置: 首页 > 知识库问答 >
问题:

AnyLogic汇编程序作为网关

范峰
2023-03-14

早上好,我是AnyLogic平台的新手,我已经开始学习它,因为我想用它来映射公司的业务流程。我计划使用该工具的过程模型库对不同的部门进行建模,目的是研究部门之间的信息流是如何实现的。

我的图表将由“源”元素和不同的“汇编器”元素组成,我希望最后一个(汇编器)作为网关工作。我附上一个简单的图表来更好地说明这种情况(例子)。

假设“sourcea”和“sourceb”(放置在不同的部门)生成两个不同的文档,用两个自定义代理实现(例如,从“sourcea”生成的代理具有“orderid”参数,从“sourceb”生成的代理具有“qualitycheckid”参数),这些代理在到达汇编器组件(放置在不同的部门)之前在各自的队列中被传递。在模拟过程中,队列很有可能不对齐(queue[10]=agent.orderId设置为10,queue[10]=agent.qualityIdCheck设置为9),因为部门没有同步。我希望装配工作为一个网关工作,这样它就可以等待具有“orderid”等于“qualitycheckid”(这意味着特定订单上的产品已经由质量部门验证)的代理。

有人可以帮助我了解如何实现这个场景。

共有1个答案

濮丁雷
2023-03-14

早上好,安德里亚。

对此有一些替代方案。如果这两个ID都是增量生成的(1,2,3,...,N),则可以使用匹配块,它将同步流。此外,您可以删除队列元素,因为该块已经合并了队列。

但是,如果ID是随机生成的,您可能需要做一些工作,并使用Java代码和函数。我要做的是:

每当代理进入一个等待块时,我会将它添加到LinkedHashMap或HashMap集合中,其中包含一个整数(或order参数的类型)键和代理值(每个等待块对应一个值)。这将允许更容易地访问信息(而不是每次我想检查特定代理是否在那里时都搜索整个等待内容)。下一步是简单地检查另一个等待块上是否有执行组装任务所需的元素。如果是,释放它们(和当前代理)。

守则如下:

进入时:

WaitBlockHashMap.put(agent.orderID, agent)
if (WaitBlockHashMap2.get(agent.orderID)!=null) { //if the matching element 
                                                  //is on the other Wait Block
    self.free(agent);
    WaitBlock2.free(WaitBlockHashMap2.get(agent.orderID));
}
WaitBlockHashMap.put(agent.qualityCheckID, agent)
if (WaitBlockHashMap2.get(agent.qualityCheckID)!=null) { //if the matching element 
                                                         //is on the other Wait Block
    self.free(agent);
    WaitBlock2.free(WaitBlockHashMap2.get(agent.qualityCheckID));
}
 类似资料:
  • 我试图在anylogic中获取汇编程序中的时间,我可以为服务使用measuretimestart/end特性,并且我可以获取分布图,但是当我尝试使用以下代码获取汇编程序的时间时:输入3:time=time();退出时:timeDS。添加(time()-时间);我觉得中庸之道毫无意义。我真的不知道在这个阶段,是什么元素在软件中提供了真实的信息。我正在测试每个块有10周的延迟时间,队列中没有延迟,甚至

  • 问题内容: 是否有任何Linux程序可以反汇编OSX通用x86 / x86_64胖Mach-O二进制文件,如objdump?GNU binutils的objdump支持ELF和Windows PE文件,但不支持Mach-O。 问题答案: AFAIK,本地的Darwin二进制工具是cctools软件包的一部分。它们没有与GNU binutils 相同的命令行语法或输出。但是后来的binutils(即

  • 1. 汇编程序的Hello world 之前我们学习了如何用C标准I/O库读写文件,本章详细讲解这些I/O操作是怎么实现的。所有I/O操作最终都是在内核中做的,以前我们用的C标准I/O库函数最终也是通过系统调用把I/O操作从用户空间传给内核,然后让内核去做I/O操作,本章和下一章会介绍内核中I/O子系统的工作原理。首先看一个打印Hello world的汇编程序,了解I/O操作是怎样通过系统调用传给

  • 3. 第二个汇编程序 例 18.2. 求一组数的最大值的汇编程序 #PURPOSE: This program finds the maximum number of a # set of data items. # #VARIABLES: The registers have the following uses: # # %edi - Holds the index of the data

  • 我试图理解这个简单的C程序: 当它在汇编代码中时: 第三线和第四线发生了什么 为什么必须使用另外两个寄存器(edi和eax)来代替rsp DWORD PTR[rbp-4]实际发生了什么

  • 1. 最简单的汇编程序 例 18.1. 最简单的汇编程序 #PURPOSE: Simple program that exits and returns a # status code back to the Linux kernel # #INPUT: none # #OUTPUT: returns a status code. This can be viewed # by ty