精华内容
下载资源
问答
  • java画工作流流程图java生成流程图

              阿里云低价服务器1折特惠,优惠爽翻天,点我立即低价购买

    /*
     * Copyright 2015 iminasha.com All right reserved. This software is the confidential and proprietary information of
     * iminasha.com ("Confidential Information"). You shall not disclose such Confidential Information and shall use it only
     * in accordance with the terms of the license agreement you entered into with iminasha.com.
     */
    package com.imiansha.wms.controller.workflow;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.List;
    
    import javax.imageio.ImageIO;
    import javax.servlet.ServletOutputStream;
    
    import com.jfinal.kit.PathKit;
    import com.jfinal.render.Render;
    
    /**
     * 类DrawFlowChart.java的实现描述:根据审批人画流程图
     * 
     * @author leon 2015年7月14日 上午9:37:56
     */
    public class DrawFlowChart extends Render {
    
        private int                width;
        private final int          intervalOfX = 100;// 每个元素之间的x轴间距
        private List<List<String>> approvalers;//审批人组集合
    
        /**
         * @param width
         * @param approvalers
         */
        public DrawFlowChart(int width, List<List<String>> approvalers){
            super();
            this.width = width;
            this.approvalers = approvalers;
        }
    
        /**
         * @return the width
         */
        public int getWidth() {
            return width;
        }
    
        /**
         * @param width the width to set
         */
        public void setWidth(int width) {
            this.width = width;
        }
    
        /**
         * @return the approvalers
         */
        public List<List<String>> getApprovalers() {
            return approvalers;
        }
    
        /**
         * @param approvalers the approvalers to set
         */
        public void setApprovalers(List<List<String>> approvalers) {
            this.approvalers = approvalers;
        }
    
        @Override
        public void render() {
            BufferedImage image = drawFlowChartImg();
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Cache-Control", "no-cache");
            response.setDateHeader("Expires", 0);
            response.setContentType("image/jpeg");
    
            ServletOutputStream sos = null;
            try {
                sos = response.getOutputStream();
                ImageIO.write(image, "jpeg", sos);
            } catch (Exception e) {
                throw new RuntimeException(e);
            } finally {
                if (sos != null) try {
                    sos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * 画流程图
         * 
         * @return
         */
        private BufferedImage drawFlowChartImg() {
            // 获取箭头图标文件
            File srcFile = new File(PathKit.getRootClassPath() + File.separator + "arrow.png");
            Image srcImg = null;
            try {
                srcImg = ImageIO.read(srcFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
            // 计算画布的高度
            // 画布高度=每组审批人的总高度+箭头高度
            // 获取最多审批人的组
            // 每组中的每个审批人y坐标间隔20
            int every_approvaler_distance = 20;
            int maxApprovalCount = this.getMaxListSize(approvalers);
            // 计算画布的最高高度
            int height = maxApprovalCount * every_approvaler_distance + srcImg.getHeight(null);
    
            // 绘制宽=width,长=hight的图板
            BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            // 获取图形上下文,graphics想象成一个画笔
            Graphics2D graphics = (Graphics2D) image.getGraphics();
    
            // 对指定的矩形区域填充颜色
            graphics.setColor(Color.WHITE); // GREEN:绿色; 红色:RED; 灰色:GRAY
            graphics.fillRect(0, 0, width, height);
            // 箭头数量
            int arrowCount = 1;
            // 设置文字颜色
            graphics.setColor(Color.BLACK);
            graphics.setFont(new Font("宋体", Font.BOLD, 14));
            int lastGroupElementX = 0;// 最后一组元素的X坐标
            int arrowY = height / 2 - srcImg.getHeight(null);// 箭头的y坐标
            if (approvalers != null && approvalers.size() > 0) {
                for (List<String> approvalerList : approvalers) {
                    int i = 1;
                    int maxWidthOfGroup = 0;// 每组最大宽度
                    int compareTmp = 0;// 比较宽度的变量
                    lastGroupElementX += intervalOfX;// 最后一组的x坐标
                    int approvalerListSize = approvalerList.size();// 每组审批人数量
                    // 计算每个组的第一个元素的y坐标
                    int everyGruopFirstElementY = 0;
                    if (approvalerListSize % 2 == 0) {
                        everyGruopFirstElementY = maxApprovalCount * every_approvaler_distance / 2
                                                  - every_approvaler_distance
                                                  - (approvalerListSize / 2 - 1) * every_approvaler_distance;
                    } else {
                        everyGruopFirstElementY = maxApprovalCount * every_approvaler_distance / 2
                                                  - (approvalerListSize / 2 + 1) * every_approvaler_distance;
                    }
    
                    // 将审批人画在图片上
                    for (String elementStr : approvalerList) {
                        int strWidth = graphics.getFontMetrics().stringWidth(elementStr);
                        if (approvalerListSize < maxApprovalCount) {
                            graphics.drawString(elementStr, lastGroupElementX,
                                                everyGruopFirstElementY + i * every_approvaler_distance);
                        } else {
                            graphics.drawString(elementStr, lastGroupElementX, i * every_approvaler_distance);
    
                        }
                        // 计算最大的审批人字符串宽度
                        maxWidthOfGroup = strWidth;
                        if (maxWidthOfGroup < compareTmp) {
                            maxWidthOfGroup = compareTmp;
                        } else {
                            compareTmp = strWidth;
                        }
                        i++;
                    }
                    lastGroupElementX += maxWidthOfGroup;// 重新计算最后一个元素的y坐标
                    // 将箭头画在图片上
                    if (arrowCount < approvalers.size()) {
                        graphics.drawImage(srcImg, lastGroupElementX + srcImg.getWidth(null), arrowY, null);
                        lastGroupElementX += srcImg.getWidth(null);
                    }
                    arrowCount++;
                }
    
            }
    
            graphics.dispose();// 释放此图形的上下文并释放它所使用的所有系统资源
            return image;
    
        }
    
        /**
         * 获取list集合中最大的list size
         * 
         * @param list
         * @return
         */
        private int getMaxListSize(List<List<String>> list) {
    
            if (list == null || list.size() == 0) {
                return 0;
            }
            int maxSize = list.get(0).size();
            int compareTmp = maxSize;
    
            for (List<String> listTmp : list) {
    
                maxSize = listTmp.size();
                if (maxSize < compareTmp) {
                    maxSize = compareTmp;
                } else {
                    compareTmp = listTmp.size();
                }
            }
    
            return maxSize;
        }
    
    }
    
    展开全文
  • Java流程图

    千次阅读 2015-06-16 20:42:59
    今天是2015.6.16第一天正式开课,老师教了怎么做流程图,以下是一些今天的理解:  首先认识流程图的组成框架有:起止框、输入框、判断框、处理框、流程线、连接点。  算法的基本特征:  1.有穷性:一个算法必须...

            今天是2015.6.16第一天正式开课,老师教了怎么做流程图,以下是一些今天的理解:

            首先认识流程图的组成框架有:起止框、输入框、判断框、处理框、流程线、连接点。

             算法的基本特征:

             1.有穷性:一个算法必须在执行有限个操作步骤后终止。

             2.确定性:算法中每一步的含义必须是确切的,不可出现任何二义性。

             3.有限性:算法中的每一步操作都应该能有效执行,一个不可执行的操作是无效的,例如.一个数被0除的操作就是无效的.应当避免这种操作。

             4.有零个或多个输入:这里的输入是指在算法开始之前所需要的初始数据,这些输入的多少取决于特定的问题。

             5.有一个或多个输出:所谓输出是指与输入有某种特定关系的量,在一个完整的算法中至少会有一个输出,例如.要计算从1累加到100.如果这个程序没有输出结果,那么他将变得毫无意义。

           以上是对流程图的一些特征,对于我自己来说,只要懂得了他的原理,其实挺简单的!
    展开全文
  • Java开发流程(流程图

    热门讨论 2010-04-10 16:58:42
    Java开发流程 Java开发流程 Java开发流程 Java开发流程 Java开发流程
  • java执行流程图

    千次阅读 2016-04-27 21:53:36
    解释了java执行的全过程示意,欢迎指出其中的错误。
    展开全文
  • 根据Java源码生成流程图

    万次阅读 多人点赞 2018-12-07 23:40:53
    手动来画的话很繁琐,于是我就想着有没有工具可以根据java源代码直接生成流程图。网上找了一番找到一个可以免费试用的流程图生成工具(visustin)。 工具软件 visustin这个软件是一个代码转换成流程图的神器,支持43种...

    前言

    最近我写了点操作数据库的代码,但是呢,要在报告里画上流程图。手动来画的话很繁琐,于是我就想着有没有工具可以根据java源代码直接生成流程图。网上找了一番找到一个可以免费试用的流程图生成工具(visustin)。

    工具软件

    visustin这个软件是一个代码转换成流程图的神器,支持43种语言,包括C/C++,Java等等等等。这是一款收费的软件,不过好在其官网提供了一个demo版本可供用户下载使用。使用demo版,就可以根据Java代码生成流程图了,不过这个图你只能看,不能保存,也不能导出到word或者Visio中。但是这样就足够了,我们可以使用截图软件把流程图保存下来即可。

    安装步骤

    下载demo版安装包

    进入官方网站:http://www.aivosto.com/visustin.html

    然后下来找到Download for free标题下面的Download demo链接地址:http://www.aivosto.com/getshareware.html

    点击进入,然后点击Go download链接:http://www.aivosto.com/download.html跳过问卷直接下载:

    然后找到Free downloads for Windows标题,选择最新的版本,点击Download demo链接http://www.aivosto.com/shareware/visus805.zip下载即可:

    安装demo版本

    下载到的Demo程序是个压缩包,解压下载的压缩包,然后点击setup.exe进行安装。

    使用demo版本生成流程图

    java代码:

    // 事件监听
    public void actionPerformed(ActionEvent e)
    {
    	// 如果按下的录入按钮
    	if (e.getSource() == insert)
    	{
    		Student student = Student.getInstance();
    		// 获取文本框中的文本
    		getAllInputs(student);
    		// 检查是否全都输入了
    		if (!isInputAll(student))
    		{
    			JOptionPane.showMessageDialog(this, "请全部填写所有输入项");
    		} else
    		{
    			// 判断
    			if (canBeInsert())
    			{
    				insetIntoStudent(student);
    				JOptionPane.showMessageDialog(this, "录入成功!", "信息管理系统",
    						JOptionPane.INFORMATION_MESSAGE);
    			}
    		}
    	}
    	// 如果按下了重置按钮
    	else if (e.getSource() == reset)
    	{
    		// 清空所有的输入框
    		cleanInput();
    	}
    }
    

    打开软件,选择开发语言为:Java:

    开始界面如下:

    取消勾选,下次不再显示。
    然后在code输入框中,粘贴java代码,点击下方的Drow生成流程图,生成的流程图可以在右侧的窗口中显示。点击下方的Editor按钮可以编辑生成的流程图:

    双击流程图的各个文本框,就可以改变里面的文本:

    修改完毕后使用截图工具,截图保存即可:

    使用demo版本可以实现基本功能。但是如果想到处到Word或者Visio中就要使用付费版的。如果你嫌弃画面太丑了,可以用其他工具照着着重新画一遍这里推荐https://www.processon.com/这个在线工具。不过差不多啦,能看就行了。

    参考链接

    https://www.cnblogs.com/aademeng/articles/6905351.html

    展开全文
  • 一、流程图简单介绍 流程图 (Flow Chart )是流经一个系统的信息流、观点流或部件流的图形代表。在企业中,流程图主要用来说明某一过程。这种过程既可以是生产线上的工艺流程,也可以是完成一项任务的管理过程。...
  • Java软件开发流程图Visio 2013.vsdx 文档管理软件、自动化打包软件、禅道、svn、maven等都在流程里面有规划
  • 于是进行了一下前期的Java绘图探索,通过java.awt.Graphics2D对绘制流程图的基本元素进行了编码,并将其展示在了jsp页面上。 首先编写一个servlet,然后在web.xml中对其进行配置,最后将图片展示在jsp页面。 1...
  • JAVA 循环语句 流程图

    千次阅读 2017-10-19 09:11:10
    流程图
  • C/C++/JAVA程序流程图生成工具

    热门讨论 2010-10-18 17:18:49
    能将C,C++,JAVA等语言转换为流程图
  • 免费软件,可自动分析C/C++/Java/Python/C#/Objective-C等项目的源代码并生成流程图和函数调用关系图
  • java流程图【思路】

    千次阅读 2017-10-23 10:48:00
    画的第一张流程图 把脑子里的东西能清晰的表现出来 学编程必备将编程看作是一门艺术,而不单单是个技术。 敲打的英文字符是我的黑白琴键, 思维图纸画出的是我编写的五线谱。 当美妙的华章响起,现实通往二进制的...
  • Java程序员必备的一些流程图(拿走不谢)

    万次阅读 多人点赞 2019-07-08 15:09:35
    整理了一些Java基础流程图/架构图,做一下笔记,大家一起学习。 (想自学习编程的小伙伴请搜索圈T社区,更多行业相关资讯更有行业相关免费视频教程。完全免费哦!) 1.spring的生命周期 Spring作为当前Java最流行、最...
  • 关于学习java后台的流程图

    千次阅读 2017-05-18 13:43:44
    最近打算学一下java后台,在此记录一下自己学习java后台的流程图还有mark; 最近几天把java基础复习了一下,对于java基础应用于开发后台还是没有问题的; 学习javaEE 首先要学习数据库,我学的数据库是 很简单 ...
  • 代码生成流程图 流程图绘制解决方案 java c#.net php v2   1.1. Markdown 推荐,就是代码和flow都不能直接使用。1 1.2. Java code2flow 推荐,最起码代码能用,flow能看1 2. visus1211 3. 别的工具...
  • Java 线程线程状态流程图

    千次阅读 2018-02-24 17:19:49
    新建(new):新创建了一个线程对象。 可运行(runnable):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。...
  • 自己总结的java Web开发流程图。能够理清Java Web开发的整体思路.仅供初学者学习
  • java 8 线程池详解-流程图

    千次阅读 2019-02-24 15:09:20
    java引入线程池的目的是为了复用线程,因为线程的创建和销毁都需要时间开销. 创建线程池的方法有很多种: ExecutorService service = Executors.newCachedThreadPool(); ExecutorService service1 = Executors....
  • 在Word 中编写算法实现学生成绩等级的输出,并绘制对应算法的流程图。 功能要求:输入学生成绩,输出对应成绩等级,输出规则如下: 学生成绩区间 对应成绩等级 [90,100] A ...
  • java.awt.Graphics2D绘制流程图基本元素

    万次阅读 2012-01-10 10:30:54
    java.lang.Object ----java.awt.Graphics ----java.awt....于是进行了一下前期的java绘图探索,通过java.awt.Graphics2D对绘制流程图的基本元素进行了编码,并将其展示在了jsp页面上。 首先编写一个servlet
  • activiti7的流程图、模板图及子流程图展示 流程图需展示流程完成情况,模板图根据key找到最新模板展示。子流程需从主流程中找到CallActiviti的节点,找到对应的子流程id(已启动)或模板key(未启动),再进行对应的流程...
  • Java流程控制语句-循环结构

    万次阅读 多人点赞 2019-09-28 23:01:08
    执行流程图 执行流程说明 A:执行初始化语句 B:执行判断条件语句,看其结果是true还是false 如果是false,循环结束。 如果是true,继续执行。 C:执行循环体语句 D:执行控制条件语句 E:回到B继续 格式 for(初...
  • 想做一个绘制类似流程图之类的程序,就是有框,有箭头这种。第一次接触JAVA绘图,最后在web端展示,想问一下有没有什么可以跟JAVA合用的小程序或者小插件,求指点,然后我再去针对学习,十分感谢,最好是简单的
  • 采用递归方式展现流程图
  • 在我们解题或者向别人展示我们的算法或者思路时候,流程图是一种非常好的方式,具有以下优点: (1)画法简单,容易上手 (2)逻辑性强,结构清晰 (3)便于描述,容易理解 作为一名优秀的程序员,画起流程图来,那...
  • Flowable 快速入门教程:流程图展示后端前端效果图 后端 这里流程图就不做高亮处理了 获取流程图 InputStream 将 InputStream 转为 byte[] 字节数组 对数组进行 Base64 编码处理,将结果返回前端 /** * 获取流程...
  • 流程图描述算法

    万次阅读 多人点赞 2018-07-18 08:41:11
    流程图就是一种描述算法的图形化描述,用流程图可以清晰地描述出算法的思路和过程。通过本篇的学习,你将了解到如何用流程图来描述算法。】   流程图是算法的图形化描述。俗话说:一张图胜过千言万语,用流程图...
  • python流程图-python如何画流程图

    千次阅读 2020-11-01 12:48:40
    程序流程图简称流程图,是一种传统的算法表示法,流程图用统一规定的标准符号描述程序运行具体步骤,毫不夸张的讲,画流程图已经是程序员必须掌握的一个技能。1. 为什么要画程序流程图学编程还需要画流程图?不要...
  • Java流程控制语句-分支结构(选择结构)

    万次阅读 多人点赞 2019-09-28 22:53:49
    文章目录定义分类if分支结构第一种格式格式执行流程举例第二种格式格式执行流程举例第三种格式格式执行流程举例注意事项switch分支结构执行流程举例...执行流程图 执行流程说明 首先判断关系表达式看其结果是true...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 448,527
精华内容 179,410
关键字:

java流程图的作用

java 订阅