- 浏览: 940323 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
hw7777777:
非常感谢作者提供这么好的工具,在使用的过程中遇到一些问题?1、 ...
基于java nio的memcached客户端——xmemcached -
SINCE1978:
多久过去了时间能抹平一切
无路用的人 -
fangruanyjq:
[img][/img]引用
用osworkflow写一个请假例子(提供代码下载) -
thinkingmysky:
楼主,你确定,java memached client能处理并 ...
memcached java client性能测试的几点疑问和说明 -
hellostory:
aaa5131421 写道07年2月hibernate已经出来 ...
dozer与BeanUtils
上午测试了下并发情况下的表现,测试场景:一个有20个节点,包括选择、顺序、并行路由的流程,所有节点都设置为自动执行,1000个线程并发启动案例, 也就是这个流程同时有1000个案例在跑,全部跑完结果差强人意,比单线程慢了接近30倍。仔细调整了算法和加锁粒度,尽管整体性能有所提高,但是多线程 和单线程间执行的差距仍然没有多大变化,性能瓶颈还是在核心的调度算法上,还需要分析下。测试程序如下:
java 代码
- package net.rubyeye.insect.workflow.test;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.concurrent.CyclicBarrier;
- import net.rubyeye.insect.workflow.Place;
- import net.rubyeye.insect.workflow.Token;
- import net.rubyeye.insect.workflow.Transition;
- import net.rubyeye.insect.workflow.WorkFlow;
- import net.rubyeye.insect.workflow.WorkFlowManager;
- import net.rubyeye.insect.workflow.basic.BasicWorkflowManager;
- import net.rubyeye.insect.workflow.comm.TransitionType;
- import net.rubyeye.insect.workflow.config.DefaultConfiguration;
- import junit.framework.TestCase;
- public class CompositeProcessTest extends TestCase {
- private WorkFlowManager wm;
- WorkFlow composite;
- private CyclicBarrier barrier;
- private static final int total = 1000;
- @Override
- protected void setUp() throws Exception {
- this.barrier = new CyclicBarrier(total + 1);
- wm = new BasicWorkflowManager();
- wm.setConfiguration(new DefaultConfiguration());
- WorkFlow sequence = wm.getWorkFlow("sequence");
- WorkFlow concurrency = wm.getWorkFlow("concurrency");
- WorkFlow choose = wm.getWorkFlow("choose");
- // 组合流程
- composite = new WorkFlow();
- composite.setName("composite");
- composite.setId(100);
- wm.saveWorkFlow(composite);
- // 修改开始结束节点的输入输出库所
- sequence.getEnd().setType(TransitionType.NORMAL);
- sequence.getEnd().setOutputs(concurrency.getStart().getInputs());
- concurrency.getEnd().setType(TransitionType.NORMAL);
- concurrency.getEnd().setOutputs(choose.getStart().getInputs());
- composite.setStart(sequence.getStart());
- composite.setEnd(choose.getEnd());
- List<Transition> transitions = new ArrayList<Transition>();
- transitions.addAll(sequence.getTransitions());
- transitions.addAll(concurrency.getTransitions());
- transitions.addAll(choose.getTransitions());
- composite.setTransitions(transitions);
- }
- public void testConcurrencyCompositeProcesss() throws Exception {
- for (int i = 0; i < total; i++) {
- new FlowThread().start();
- }
- barrier.await();
- long start = System.currentTimeMillis();
- barrier.await();
- long end = System.currentTimeMillis();
- System.out.println("创建" + total + "个流程并发运行完毕\n花费时间:" + (end - start)
- / 1000.0 + "秒");
- for (Transition transition : composite.getTransitions()) {
- System.out.println(transition.getName() + " "
- + transition.isEnable());
- for (Place place : transition.getOutputs()) {
- System.out.println("place " + place.getId() + " "
- + place.getTokens().size());
- }
- }
- }
- public void testCompositeProcesss() throws Exception {
- long start = System.currentTimeMillis();
- for (int i = 0; i < total; i++) {
- Token token1 = wm.startWorkFlow("composite");
- token1.setAttribute("name", "dennis");
- token1.setAttribute("num", 21);
- wm.doAction(token1.getId());
- assertTrue(token1.isFinished());
- }
- long end = System.currentTimeMillis();
- System.out.println("创建" + total + "个流程运行完毕\n花费时间:" + (end - start)
- / 1000.0 + "秒");
- }
- class FlowThread extends Thread {
- @Override
- public void run() {
- try {
- barrier.await();
- // wm = new BasicWorkflowManager();
- Token token1 = wm.startWorkFlow("composite");
- token1.setAttribute("name", "dennis");
- token1.setAttribute("num", 21);
- wm.doAction(token1.getId());
- assertTrue(token1.isFinished());
- barrier.await();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- }
- }
发表评论
-
传说中的精确广告投放
2009-03-19 19:04 5595本图不针对任何网站和个人,仅仅是因为很离谱。 -
终于跑了一万米
2008-11-16 18:37 2029跑步快3个月了,其实并没有天天跑,基本每周都休息两三天 ... -
一封邮件
2008-10-04 14:02 1583今天邮箱里收到的一封邮件,标题是《寻找好心人帮忙,不介 ... -
漂亮的代码
2008-10-09 23:58 1526Ruby的创造者为《代码之美》撰写的文章标题是《代码如 ... -
广州opensource camp小记
2008-09-21 09:01 1661与锋爷、小朱、阿 ... -
因果与因缘
2008-08-23 09:20 1473我对佛教的了解很 ... -
反省
2008-08-06 23:04 1478有段时间没更新blog了。主要是这段时间内自 ... -
值的纪念的一天
2008-06-29 16:08 1255沸沸扬扬的华南虎案(更想说是闹剧)终于告一段落,在广 ... -
关于加班
2008-06-23 01:29 1798加班在国内的公司好像是司空见惯的事情,更司空见惯的是加 ... -
理发二三事
2008-06-13 21:55 1566头发乃人 ... -
最近的学习和工作
2008-05-21 11:48 1694转眼间,来广州 ... -
17岁少年杀人事件
2008-04-19 12:49 132117日的南方周末的 ... -
国际米兰100周年
2008-03-10 18:39 18891908年的3月9日,四十多名“叛逃者” ... -
最近的工作和学习
2008-03-04 19:13 1733最近一直在写Ruby脚本,说出来你可能不相信,我用Ru ... -
新年第一博
2008-02-13 11:31 1495习惯了,如果没有过完春节,感觉这一年还不算过去。年过完 ... -
图文:男子低温天气徒步18小时探望女友(转)
2008-01-31 10:07 2668http://www.sina.com.cn 2008年01月 ... -
一副对联
2008-01-22 14:13 1605天涯上的牛人真多 -
换工作
2008-01-11 15:59 1767我从来就不是很安分的人,来福州两个月了,在star-net也干 ... -
2:1,不好意思,我们又赢了
2007-12-24 08:55 1543什么都不说,pazza inter! -
读《人工智能的未来》
2007-11-18 22:27 3761《人工智能的未来》的作者是Jeff Hawkins,也 ...
相关推荐
### 一个简单C#工作流的实现 #### 一、背景介绍 在现代软件开发过程中,工作流的应用越来越广泛,特别是在需要多步骤处理且涉及多个角色的业务场景中。例如,高等学校岗位聘用审核系统就是一个典型的工作流应用...
本文将详细阐述如何从头开始,搭建一个基础的工作流框架,包括表单设计、流程规划以及工作启动三个核心环节。 #### 一、设计表单:业务需求的载体 表单设计是工作流构建的起点,其重要性在于它是业务数据的收集和...
本文主要介绍了如何在通达OA(Odoo Automation)系统中建立一个简单的工作流程,包括设计表单、构建流程以及新建工作这三个主要步骤。 首先,设计表单是创建工作流程的基础。在“系统管理”菜单中,选择“工作流...
在“三步教你用Verilog写一个CPU”的系列中,我们已经进入了第三步,这通常涉及到CPU核心的实现。在这里,我们将会讨论如何将之前的概念转化为实际的代码。 ### 第一步:理解CPU的基本结构 CPU是计算机的中央处理...
《基于工作流状态的动态访问控制》一文探讨了如何通过引入角色的概念来改进动态访问控制系统,并且提出了一个更加灵活的安全机制来保障信息系统中的数据访问。该文首先简要回顾了传统访问控制模型的局限性,接着详细...
在VC2010环境下,开发一个简单的用户界面应用程序,其功能是将三个变量的值显示在三个文本框(TextBox)中,并能将这些文本框的内容写入到文本文件中,同时提供一个清空按钮来清除文本框的显示。这个过程涉及到的...
JGRAPH中对图和顶点与边的定义与存储结构是非常简洁与实用的,利用数据库或者是GXL文件中的这些数据可以非常简单的处理一个复杂的流程图........... 该工具经过修改后,也可以实现一个实时监控界面和其它的适合于...
这个程序提供了一个基本的框架,便于初学者理解TCP通信的工作原理。 1. **TCP协议**: - TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它通过三次握手建立连接,...
- **解析**:该方法接受一个输入流和一个输出流作为参数。利用`BufferedReader`读取输入流中的每一行,并通过`PrintWriter`将这些行写入到输出流中。最后调用`flush`方法确保所有数据都被写入到输出流。 ### 4. ...
在这个“ios-自己写的瀑布流 简单易懂 操作方便.zip”压缩包中,包含了一个瀑布流布局的实践项目,名为“瀑布流练习”。这个项目很可能展示了如何从头开始创建一个简单的瀑布流视图,使得开发者能够理解其工作原理并...
“pullstreams是一个简单的流模式用于学习pullstreams”这个标题表明我们要探讨的是一个与编程有关的主题,特别是关于“pull-streams”的概念。Pull-streams是一种在JavaScript生态系统中处理数据流的方式,它与常见...
创建TCP连接是通过三次握手过程来实现的,这确保了双方在数据交换之前建立一个可靠的连接。下面我们将深入探讨如何用Java实现TCP连接,并通过源码分析来理解其工作原理。 首先,我们需要了解Java中的Socket类和...
1. **调用发起**:客户端调用本地接口,实际上这是一个RPC调用。 2. **请求打包**:客户端将调用信息(如方法名、参数等)进行序列化,并封装成网络请求。 3. **网络传输**:客户端通过网络将请求发送到服务端。 ...
【标题】"自己写的简单OA系统"所涉及的知识点主要集中在办公自动化(Office Automation, OA)系统的开发上,这是一个小型的、自定义化的OA解决方案。OA系统是企业信息化的重要组成部分,用于提高工作效率,实现无纸...
【TCP写的仿QQ程序】是一个基于TCP协议实现的简易聊天程序,旨在模仿腾讯QQ的一些基本功能,如客户端与服务器端的通信、消息传递等。在这个项目中,开发者尝试构建一个简单的通讯框架,允许两个用户之间进行实时的...
标题中的“用Delphi写的一个DES的加密解密小程序,Java写的DES的一个类”表明了这个压缩包包含两个部分:一个是使用Delphi编程语言编写的用于执行DES(Data Encryption Standard)加密和解密的小程序,另一个是用Java...
- **JBPM**:JBPM 是一个开源的工作流管理系统,它使用纯 Java 编写,可以方便地集成到 Java 应用中。JBPM 的设计目标是提供一个简单而强大的流程管理解决方案。 - **特性**: - 扩展性强:JBPM 允许开发者通过...
### ShareFlow企业工作流集成管理平台关键知识点解析 #### 一、ShareFlow概述 - **定义**: ShareFlow是由杰思敏信息科技自主研发的企业工作流集成管理平台,它不仅是一款流程管理软件,还具备强大的管理工具功能。 ...
基于 COM 和 ASP 技术的工作流管理系统主要包括以下几个部分: - **用户界面层**:采用 ASP 技术构建,提供友好、直观的操作界面。 - **业务逻辑层**:负责处理具体的业务逻辑,如流程定义、任务分配等,可以使用 ...