一个流程执行器的简单实现

/**
 * 过程执行器
 *
 * @author leizhimin 2014/8/7 17:15
 */
public class Test {
    public static void main(String[] args) {
        dotask(new Task(0));
        System.out.println("------------------");

        dotask(new Task(2));
        System.out.println("------------------");

        dotask(new Task(4));
    }

    private static void dotask(Task task) {
        switch (task.getState()) {
            case 0:
                do1(task);
                break;
            case 1:
                do2(task);
                break;
            case 2:
                do3(task);
                break;
            case 3:
                do4(task);
                break;
            case 4:
                do5(task);
                break;
            default:
                break;
        }
    }

    private static void do1(Task task) {
        System.out.println("do1...");
        task.setState(1);
        dotask(task);
    }

    private static void do2(Task task) {
        System.out.println("do2...");
        task.setState(2);
        dotask(task);
    }

    private static void do3(Task task) {
        System.out.println("do3...");
        task.setState(3);
        dotask(task);
    }

    private static void do4(Task task) {
        System.out.println("do4...");
        task.setState(4);
        dotask(task);
    }

    private static void do5(Task task) {
        System.out.println("do5...");
        task.setState(5);
        dotask(task);
    }
}

class Task {
    private int state;

    Task(int state) {
        this.state = state;
    }

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }
}
do1...
do2...
do3...
do4...
do5...
------------------
do3...
do4...
do5...
------------------
do5...

Process finished with exit code 0

一个流程执行器的简单实现

时间: 2024-10-30 03:12:17

一个流程执行器的简单实现的相关文章

【Activiti】为每一个流程绑定相应的业务对象的2种方法

方式1: 在保存每一个流程实例时,设置多个流程变量,通过多个流程变量的组合来过滤筛选符合该组合条件的流程实例,以后在需要查询对应业务对象所对应的流程实例时,只需查询包含该流程变量的值的流程实例即可. 设置过程:public void startProcess(Long id) { Customer cus = get(id); if (cus != null) { // 修改客户的状态 cus.setStatus(1); updateStatus(cus); // 将客户的追踪销售员的nickN

分享一个近期写的简单版的网页采集器

分享一个近期写的简单版的网页采集器 功能特点: 1.可通过配置,保存采集规则. 2.可通过采集规则,进行数据采集. 3.可分页,分关键字,进行采集. 4.可保存数据至数据库,文本中. ........... 功能还比较简单,喜欢深入的可以继续深入下去,暂时还没有登录的功能,因为登录功能涉及到的范围比较广,待日后慢慢研究后再开发. 我先上个图让大家一睹为快吧: 首先看看页面,我们要采集这个网站的文章 接下来,首先是查找分页,获得分页里面的文章链接,接着查找内容页需要采集的字段,生成规则,进行采集.

《Python入门》第一个Python Web程序——简单的Web服务器

上一篇讲了<Python入门>Windows 7下Python Web开发环境搭建笔记,接下来讲一下Python语言Web服务的具体实现:第一个Python Web程序--简单的Web服务器. 与其它Web后端语言不同,Python语言需要自己编写Web服务器. 如果你使用一些现有的框架的话,可以省略这一步: 如果你使用Python CGI编程的话,也可以省略这一步: 用Python建立最简单的web服务器 利用Python自带的包可以建立简单的web服务器.在DOS里cd到准备做服务器根目录

jmGraph:一个基于html5的简单画图组件

jmGraph:一个基于html5的简单画图组件 特性: 代码书写简单易理解 面向对象的代码结构 对图形控件化 样式抽离 模块化:入seajs实现模块化开发 兼容性:暂只推荐支持html5的浏览器:ie9+,chrome,firefox等. jiamao/jmgraph · GitHub APIs jmgraph是一个基于html5的WEB前端画图组件. 前端画图对象控件化,支持鼠标和健盘事件响应,可对单个控件样式设定,支持简单的动画处理.可大大地简化前端画图.

一个使用指针的简单程序

/*一个使用指针的简单程序*/ #include <stdio.h> void main(){ int number = 0; //一个出初始化为0的整形变量 int *pointer = NULL; //一个可以指向int类型的指针 number = 10; printf("\nnumber的地址为:%p",&number); //输出地址 printf("\nnumber的值为:%d\n\n",number); //输出值 pointer =

RapidMiner的基本使用(一个医疗数据的简单决策树算法分析)

RapidMiner的基本使用(一个医疗数据的简单决策树算法分析) 需要分析的文件: 右键分别创建读取excel数据,选择属性,设置对象,决策树算法这几个过程,然后连接起来 读取excel数据:[Insert Operator]->[Import]->[Data]->[Read Excel] 选择属性:[Insert Operator]->[Data Transformation]->[Attribute Set Reduction and Transformation]-&

把C#程序(含多个Dll)合并成一个Exe的超简单方法

原文:把C#程序(含多个Dll)合并成一个Exe的超简单方法 开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了. 但是,很多时候我们本想开发一款只需要一个exe就能完美运行的小工具.那该怎么办呢? 下文介绍一种超简单的方法,不用写一行代码就可轻松实现. 这里我们需要用到一款名为Costura.Fody的工具.Costura.Fody是一个Fody框架下的插件,可通过Nuget安装到VS工程中.安装之后,就可以将项目所依赖的DLL(甚至PDB)文件

activiti 一个流程的运转步骤 以请假流程为例

---为了加深对activiti的理解记忆,对自己做的一个流程进行自述.加强记忆 请假实例 一.设计请假的流程图以及流程文件,完善对应数据项,比如用户信息,请假单信息 --请假单 --流程图 --流程文件leaveBill.bpmn <?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL&qu

一个线程池的简单的实现

线程池实现: 用于执行大量相对短暂的任务 当任务增加的时候能够动态的增加线程池中线程的数量直到达到一个阈值. 当任务执行完毕的时候,能够动态的销毁线程池中的线程 该线程池的实现本质上也是生产者与消费模型的应用.生产者线程向任务队列中添加任务,一旦队列有任务到来,如果有等待线程就唤醒来执行任务,如果没有等待线程并且线程数没有达到阈值,就创建新线程来执行任务. contion.h #ifndef _CONDITION_H_ #define _CONDITION_H_ #include <pthrea