`
chelsea
  • 浏览: 123709 次
  • 来自: ...
社区版块
存档分类
最新评论

Vitria BusinessWare: 事件与端口

    博客分类:
 
阅读更多

Event

BusinessWare是一个事件驱动的系统,所有数据都由事件来携带和传递,但这里有两种事件,一种是外部系统真实发生的事件,如你的MIS系统中数据库记录的增删改,文件系统或FTP服务器上文件的增删改,Web系统中HTTP请求的到达,MQ、JMS等队列中消息的到达,甚至时间的流逝(超时事件)...,当这些纷纭芜杂的事件发生时,BusinessWare会帮你把这些事件转化为统一的格式,即BusinessWare的内部事件,然后在系统内部从一个业务流程传递到另一个业务流程,内部事件携带了所有必要的信息,如数据库记录的内容,文件内容等,作为BusinessWare的用户,你只需要指定你想处理的内部事件,到时BusinessWare会把事件推给你,检视出事件内容进行处理即可

事件的表现形式与内容

BusinessWare的内部事件,其实就是被重新包装过的函数调用,用一个叫做EventBody的数据结构,记录了被调用的函数签名和参数;BusinessWare为每个Connector定义了一些标准事件,也具有将任何Java接口的函数作为自定义事件的功能;函数的签名是唯一且直观的,于是便被用作事件的标识,建模环境(BME)提供了图形界面,让你通过浏览并选择系统内一切Java接口和函数来确定你想处理的事件

外部事件到内部事件的转化

BusinessWare通过Connector连接各种外部系统,其中监控外部系统发生的事件的,称作Source Connector;Source Connector启动后,会按指定的时间间隔轮循外部系统,如果外部系统提供了通知机制,Source Connector也可能扮演监听器的角色,总之当外部事件发生时,Source Connector便会创建一个新的EventBody,将你指定的函数签名作为其标识,将外部事件的相关信息转化为该函数的参数塞到EventBody的相关Field中,然后将EventBody传递到与之相连的流程进行处理

流程内部事件的产生

除了通过Source Connector获得内部事件外,在流程内部你也可以直接制造其它流程期待的事件,一是有API帮助你直接创建EventBody,塞进函数签名和参数,二是通过BusinessWare的Port机制自动将函数调用转化为EventBody;Port机制将在下文讲述

内部事件的传递

事件如何从一个流程传递到另一个流程?流程如何限制流入流出的事件?答案是BusinessWare的Port机制,这将在下文讲述,这里只需要知道,在流程内部可以获得与该流程相连的每个Port,通过调用Port的方法就能将事件传递出去

内部事件到外部系统的转化

BusinessWare通过Connector连接各种外部系统,其中向外部系统输出数据的,称作Target Connector;Target Connector接收内部事件,取出数据,并输出到外部系统中,比如插入一条记录,或创建一个文件,发送一个JMS消息等

 

Port

BusinessWare提供了Port来完成内部事件的传递并限制内部事件的传递,Connector连接外部系统与流程,Port则将内部流程彼此相连;

Port是流程的入口和出口,定义了对进出事件,也就是数据的支持和限制 ;Port有输入和输出两种,输入Port接收来自其它流程的事件,输出Port将内部事件推到其它流程

Port只关心事件,也就是数据,因此Port定义了系统的数据流而不是控制流,在流程内部你可以对同一个输出Port调用多次,将数据源源不断的发送出去,而将控制流依然保持在流程内部

在流程内部,你可以通过 get<PortName>()来得到各个Port,那么Port是如何来传递事件和限制事件传递的呢?

 

前面说到事件就是包装后的函数调用,BusinessWare建模环境提供了图形界面来让你为Port指定类型,这样,只有隶属于该类型的函数代表的事件才能通过该Port,如果不指定类型,则该Port就是无类型(untyped)的,可以传递任何事件;把 流程比作电影院,Port就是检票的,只有持本场电影票的观众才能入场;无类型Port就类似免费公园,谁都可以进出

那么具体又是如何支持和限制的呢?其实很简单,对于untyped Port,调用getPortName()返回的object是RequestListener类型,该类型提供了push(EventBody)函数,因此你可以传递任何事件;对于typed Port,BusinessWare利用了Java静态语言/强类型语言的特性来完成限制,当你为Port指定类型后,getPortName() 返回的object就是你指定的类型,你便只能调用该类型的函数;

 

由于可以为Port指定任何类型,那么问题自然就来了,getPortName()返回的那个object到底是如何做到是指定类型的呢?它的每个函数又是怎么实现的呢?其实这是一个隶属于产生式编程的问题,解决方案有很多,最容易想到的就是为每个Port产生一个具体类,实现指定的接口,每个函数的实现都只不过是将该函数签名和参数塞进新建的EventBody然后推给与之相连的流程,并将返回值返回给调用者;但是翻遍BusinessWare为Project编译出来的所有文件后,并没有发现Port对应的类文件;那么BusinessWare可能是用的别的方案吧,比如说可能是JDK 1.3引进的Dynamic Proxy,可以为任何接口在运行时产生一个代理类;其实这种方式已经全面取代产生具体类文件了,很多规范如 JAX-RPC 则明确规定了其实现者必须同时支持这两种方式

分享到:
评论

相关推荐

    BusinessWare管理员手册

    **BusinessWare** 是由Vitria Technology Inc.开发的一款用于集成企业级应用和服务的平台。BusinessWare版本3.1的管理员手册提供了关于如何启动、停止、配置以及维护BusinessWare服务器的详细指导。 ### 启动与停止...

    业务流程集成的演变及发展——电信行业的应用及解决方案.ppt

    Vitria的BusinessWare是BPM的一个强大工具,它支持实时KPIs,能够快速整合来自多个系统和功能的数据,提供即时的商业洞察力。BusinessWare使得企业在问题发生之初就能快速响应,从而持续优化业务流程。此外,...

    数据中心平台建设方案.docx

    本方案倾向于后者,采用如SUN CAPS为基础的服务总线模式,同时结合Tibco和Vitria等解决方案的优势。 设计要点包括: - 统一数据交换标准,解决不同系统间的数据格式和交换规范问题。 - 支持异构系统和数据库的交互...

    对云计算的实例描述和指南

    BPM的Vitria iPod模型展示了如何利用云计算来优化企业的业务流程管理。通过云计算提供的弹性和可扩展性,企业可以更快地响应市场变化,提高运营效率。 ##### 4.2 降低成本 亚马逊的云计算服务为企业提供了一种有效...

    LTspice仿真:LDO电源电路学习与实践的利器

    内容概要:本文详细介绍了如何利用LTspice进行LDO(低压差线性稳压器)电源电路的仿真。首先讲解了如何导入LDO模型并配置仿真环境,接着深入探讨了瞬态分析、相位裕度、电源抑制比(PSRR)等关键仿真的具体步骤和注意事项。文中提供了多个实用的操作技巧,如通过调整补偿电容优化相位裕度,以及使用.step param命令批量测试不同参数的影响。此外,还分享了一些常见的仿真误区及其解决方法,帮助读者更好地理解和掌握LDO的设计与调试。 适合人群:电子工程专业学生、电源电路设计初学者、希望深入了解LDO特性的工程师。 使用场景及目标:适用于希望通过仿真工具提高LDO设计技能的人群。主要目标是掌握LDO的基本工作原理,学会使用LTspice进行各种类型的仿真分析,从而优化电路设计,确保系统的稳定性和性能。 其他说明:文章不仅提供详细的仿真步骤和技术细节,还附带了作者的实际经验和常见问题解决方案,使读者能够在实践中不断改进自己的设计思路。

    渝安集团员工职业发展通道设计方案.ppt

    渝安集团员工职业发展通道设计方案.ppt

    新能源电动汽车VCU与BMS的HIL硬件在环仿真技术及其模块化建模

    内容概要:本文详细介绍了新能源电动汽车中VCU(整车控制器)和BMS(电池管理系统)的HIL(硬件在环)仿真技术。首先阐述了整车建模的基础,包括电池、电机等关键部件的建模要点。接着分别解析了驾驶员模块、仪表模块、BCU整车控制器模块、MCU电机模块、TCU变速箱模块、BMS电池管理模块等多个子模块的功能和实现方式。最后强调了HIL仿真在电动汽车控制系统测试和优化中的重要性,特别是在降低成本和风险方面的作用。 适合人群:从事新能源汽车研发的技术人员,尤其是专注于VCU和BMS领域的工程师。 使用场景及目标:适用于需要深入了解电动汽车控制系统仿真技术的研发团队,在产品开发初期进行系统测试和优化,确保各子系统间的协同工作正常。 其他说明:文中提供了大量代码示例,帮助读者更好地理解和实践相关概念和技术细节。此外,还分享了一些实际项目中的经验和教训,如故障注入测试的具体应用场景等。

    如何应对一线人员春节后的离职潮.docx

    如何应对一线人员春节后的离职潮

    线性代数_GitHub_课件作业_教学辅助用途_1742837800.zip

    线性代数

    离职面谈表.xls

    离职面谈表.xls

    聚宽对接qmt大礼包,帮助你配置好交易实盘环境

    聚宽对接qmt大礼包,配备需要的全部软件:python3.9版本,qmt模拟安装包,pycharm安装包,talib包

    试用期转正表.xls

    试用期转正表.xls

    招聘数据分析.xls

    招聘数据分析.xls

    如何让新员工快速融入团队.docx

    如何让新员工快速融入团队

    电力电子仿真中并离网逆变器及无功补偿设备的控制策略与建模

    内容概要:本文详细介绍了并离网逆变器的两种主要控制策略——PQ控制和V/f控制,以及无功能量发生器(SVG)和有源电力滤波器(APF)的仿真模型。对于PQ控制,文章展示了如何将功率指令转化为电流指令,并强调了电网电压定向和限幅处理的重要性。V/f控制则用于离网模式,通过调节电压和频率来维持系统的稳定。SVG主要用于无功补偿,通过实时计算无功需求进行补偿。APF则专注于谐波检测和消除,利用自适应滤波器提高效率。此外,文中还提供了多个实用的小技巧,如仿真步长设置、模式切换时的前馈补偿等。 适合人群:从事电力电子仿真研究的技术人员,尤其是对逆变器控制策略感兴趣的工程师。 使用场景及目标:适用于需要深入理解和实现逆变器控制策略的研究项目,帮助工程师优化仿真模型,提升系统性能,确保仿真结果的准确性。 其他说明:文章不仅提供了详细的代码片段,还分享了许多实践经验,有助于读者避免常见错误,提高仿真成功率。

    Carsim与Simulink联合仿真中基于线性二自由度模型的卡尔曼滤波(KF)实现及优化

    内容概要:本文详细介绍了如何利用Carsim与Simulink进行联合仿真,通过线性二自由度模型和卡尔曼滤波(KF)来估计车辆的质心侧偏角和横摆角速度。首先搭建了联合仿真框架,Carsim提供车辆状态量,Simulink负责算法处理。文中展示了线性二自由度模型的状态方程及其参数设定,并深入探讨了KF的两种实现方式:S函数编程和Simulink内置模块。对于S函数实现,着重讲解了状态转移矩阵的动态更新以及噪声矩阵Q的调整策略,确保模型能够适应车速变化。而对于内置模块,则指出了其在灵活性方面的不足之处。此外,还讨论了联合仿真的配置要点,如数据接口同步、采样时间和信号处理等问题。 适合人群:从事车辆动力学研究、控制理论应用、自动化控制领域的工程师和技术人员。 使用场景及目标:适用于需要精确估计车辆质心侧偏角和横摆角速度的研究和开发项目,特别是在涉及ESP等主动安全系统的开发过程中。目标是提高估计精度,增强系统的鲁棒性和响应速度。 其他说明:文章提供了详细的代码片段和实践经验分享,帮助读者更好地理解和实施相关技术。建议在实际应用中根据具体需求选择合适的KF实现方式,并注意处理各种边界条件和异常情况。

    档案管理[03].pptx

    档案管理[03]

    风电与储能联合调频系统:基于Python的建模与优化

    内容概要:本文详细介绍了风电与储能联合调频系统的原理及其优化方法。首先解释了风电输出功率的波动性和对电网频率的影响,提出储能系统作为解决方案。文中展示了如何用Python生成风速数据并构建调频控制系统,重点讨论了PID控制器的设计以及SOC(荷电状态)管理策略。此外,还探讨了调频控制逻辑、硬件在环测试、风电功率预测模型(如LSTM)、调频效果验证方法及储能系统的物理限制等问题。最后强调了模型验证的重要性,提出了异常数据注入测试的方法。 适合人群:从事电力系统自动化、新能源发电及储能技术研发的专业人士,尤其是有一定编程基础的研究人员和技术工程师。 使用场景及目标:适用于需要理解和实施风电与储能联合调频项目的团队。主要目标是提高电网稳定性,减少风电波动带来的负面影响,同时延长储能系统的使用寿命。 其他说明:文中提供了大量实用的Python代码示例,涵盖了从数据生成到控制逻辑实现再到模型验证的全过程。对于希望深入理解风储调频系统的工作机制和技术挑战的人来说,是一份非常有价值的参考资料。

    HCIA-Storage V4.5 培训教材 合集

    HCIA-Storage V4.5 培训教材 合集

    基于S7-1200与博途V15的PLC小车自动往返控制系统设计与仿真

    内容概要:本文详细介绍了利用西门子S7-1200系列PLC和博途V15软件平台构建的小车自动往返控制系统。首先进行硬件组态,选择合适的CPU并配置输入输出点位,确保限位开关和急停按钮的有效接入。接着编写梯形图逻辑,实现小车在AB两点间的精确控制,采用定时器互锁机制避免电机损坏。然后设计触摸屏界面,通过WinCC创建动画效果展示小车运动状态,并设置按钮操作实现手动与自动模式切换。最后进行联合仿真实验,解决常见错误如变量地址配置不当等问题,确保系统稳定运行。 适合人群:工业自动化领域的工程师和技术人员,尤其是对PLC编程和HMI设计有一定基础的学习者。 使用场景及目标:适用于需要掌握PLC控制系统设计全流程的专业人士,帮助他们理解如何整合硬件组态、梯形图编程以及HMI开发,最终完成一个完整的自动化工程项目。 其他说明:文中提供了详细的调试经验和技巧,附带74分钟的操作录像资料,有助于读者更好地理解和实践相关知识点。

Global site tag (gtag.js) - Google Analytics