4.2基于令牌的协同建模机制
协同建模过程中通常会产生大量的并发操作,而并发操作又容易造成操作冲突和操作冗余,这会影响到系统的稳定性,带来不必要的系统开销。为了有效解决协同建模过程中所产生的并发操作冲突和操作冗余的问题,笔者提出了一种基于令牌的协同建模方法[7]。该方法的主要原理是规划了工作流模型元素所对应的令牌,一个元素对应一个令牌,当多人协同建模过程中发生对同一流程元素的并发操作时,多个客户端会先争用令牌,只有获取令牌的客户端,才可以对相应的模型元素进行相应的操作,操作结束后系统自动释放令牌,供其他客户端争用。通过引入这种令牌处理机制,可以有效的规避多人同时修改流程或元素信息的情况,从而有效的减少了建模过程中产生的并发操作冲突和操作冗余。令牌的处理流程如图3所示。
图3:令牌处理流程
5. 协同建模应用接口的设计为减少通信数据量,客户端与服务端之间以字符串格式发送协同建模命令。终端发送时首先将操作命令打包成字符串格式,接收时通过解析字符串来还原操作命令以执行相应操作。
5.1操作命令发送接口
synchronized void send (ArrayList
该函数主要功能即将协同操作命令打包为字符串格式,并传递给服务端。
其中opStr的格式为:
[ 协同操作函数名, 该函数参数1, 该函数参数2,.…… ]
下面提到的操作命令的字符串格式皆于此相同。
5.2服务端建模操作解析接口为
void operation(String process, String username, String opStr)
其中process为当前会话的流程名,用于定位流程。username为该操作的发送人,用于定位客户端。opStr为字符串形式的操作命令。该函数的功能为解析客户端传递的字符串,再根据解析出的协同操作命令类型做相应的处理,处理方式如表1所示。
表1 服务端协同操作的处理方式
5.3客户端建模操作解析接口
void co_operation(String opStr)
该函数功能为接收服务端发送的字符串,并解析为具体的操作命令,从而调用相应的本地函数进行操作。当操作类型为建模操作时,操作结束后还需要发送一个令牌释放命令,释放该建模操作所占用的模型元素令牌。
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。