精华内容
下载资源
问答
  • Html画组织架构图

    千次阅读 2013-01-09 00:32:08
    /** * Created with JetBrains PhpStorm. * User: kathleen * Date: 12-12-16 * Time: 下午1:10 * To change this template use File | Settings | File Templates. */ function Cire(config,values){ ...
    /**
     * Created with JetBrains PhpStorm.
     * User: kathleen
     * Date: 12-12-16
     * Time: 下午1:10
     * To change this template use File | Settings | File Templates.
     */
    function Cire(config,values){
        this.x = config.x ? config.x:0;
        this.y = config.y ? config.y:0;
        this.w = config.w ? config.w :80;
        this.h = config.h ? config.h :40;
        this.c_x = this.x;
        this.c_y = this.y+this.h/2;
        this.name = values.name? values.name:"name";
        this.id = values.id? values.id:"id";
        cxt = document.getElementById("canvas");
        cxt = cxt.getContext("2d");
        this.draw = function(h){
            if(this.l_w){
                cxt.moveTo(this.x,this.y);
                cxt.clearRect(this.x-this.l_w,this.y-this.l_w,this.w+ 2*this.l_w,this.h+ 2*this.l_w);
            }
            if(h){
                this.y = this.y + h;
            }
            this.l_w = cxt.lineWidth;
            cxt.beginPath();
            cxt.moveTo(this.x,this.y);
            cxt.rect(this.x,this.y,this.w,this.h);
            cxt.stroke();
            cxt.fillStyle = "red";
            cxt.font = "normal 20px 宋体";
            cxt.textAlign="center";
            cxt.textBaseline="middle";
            cxt.fillText(this.name, this.x+ this.w/2,this.y+ this.h/2);
            cxt.closePath();
            return this.h;
        }
        this.clear = function(){
        	  	cxt.moveTo(this.x,this.y);
                cxt.clearRect(this.x-this.l_w,this.y-this.l_w,this.w+ 2*this.l_w,this.h+ 2*this.l_w);
        }
        this.isBelong= function(x,y){
            var s_x = this.x;
            var s_y = this.y;
            var e_x = this.x + this.w;
            var e_y  = this.y + this.h;
    
            if(x > s_x && x < e_x && y > s_y && y < e_y){
                return {id:this.id,name:this.name};
            }
            return false;
        }
    }
    function RidCire(config,values){
        this.x = config.x ? config.x:0;
        this.y = config.y ? config.y:0;
        this.w = config.w ? config.w :80;
        this.h = config.h ? config.h :40;
        this.c_x = this.x;
        this.c_y = this.y + this.h/2;
        this.r = config.r ? config.r : 10;
        this.name = values.name ? values.name : "name";
        this.id = values.id ? values.id : "id";
    
        this.draw=function(h){
            if(this.l_w){
                cxt.moveTo(this.x,this.y);
                cxt.clearRect(this.x-this.l_w,this.y-this.l_w,this.w+ 2*this.l_w,this.h+ 2*this.l_w);
            }
            if(h){
                this.y = this.y + h;
            }
            this.l_w = cxt.lineWidth;
    
            cxt.beginPath();
            cxt.moveTo(this.x+this.r,this.y);
            cxt.lineTo(this.w+this.x-this.r,this.y);
            cxt.quadraticCurveTo(this.w+this.x,this.y, this.w+this.x, this.y+this.r);
            cxt.lineTo(this.w+this.x,this.h+this.y -this.r);
            cxt.quadraticCurveTo(this.w+this.x,this.h+this.y, this.w+this.x-this.r, this.h+this.y);
            cxt.lineTo(this.x+this.r,this.h+ this.y);
            cxt.quadraticCurveTo(this.x,this.h+this.y, this.x, this.h+this.y -this.r);
            cxt.lineTo(this.x,this.y+this.r);
            cxt.quadraticCurveTo(this.x,this.y,this.x+this.r,this.y);
            cxt.closePath();
    
            cxt.fillStyle = "red";
            cxt.font = "normal 20px 宋体";
            cxt.textAlign="center";
            cxt.textBaseline="middle";
            cxt.fillText(this.name, this.x+ this.w/2,this.y+ this.h/2);
            cxt.stroke();
            return this.h;
        }
        this.isBelong= function(x,y){
            var s_x = this.x;
            var s_y = this.y;
            var e_x = this.x + this.w;
            var e_y  = this.y + this.h;
    
            if(x > s_x && x < e_x && y > s_y && y < e_y){
                return {id:this.id,name:this.name};
            }
            return false;
        }
    }
    function Line(config){
        this.x= config.x? config.x:0;
        this.y = config.y? config.y:0;
        this.e_x = config.e_x ? config.e_x:0;
        this.e_y = config.e_y ? config.e_y:0;
        this.draw = function(config){
            if(this.l_w){
                 cxt.moveTo(this.x,this.y);
               if(this.x == this.e_x){
                 cxt.clearRect(this.x-this.l_w,this.y,this.l_w*2,this.e_y-this.y);
               }
               if(this.y == this.e_y){
                   cxt.clearRect(this.x,this.y-this.l_w,this.e_x-this.x,this.l_w*2);
               }
            }
            if(config){
                if(config.h){
                    this.y = this.y + config.h;
                    this.e_y = this.e_y + config.h;
                }
                if(config.w){
                    this.x = this.x + config.w;
                    this.e_x = this.e_x + config.w;
                }
    
            }
    
            this.l_w = cxt.lineWidth;
            cxt.beginPath();
            cxt.moveTo(this.x,this.y);
            cxt.lineTo(this.e_x,this.e_y);
            cxt.closePath();
            cxt.stroke();
        }
    }
    function ArcAdd(config){
        this.x = config.x ? config.x:0;
        this.y = config.y ? config.y:0;
        this.r = config.r ? config.r:0;
        this.R = config.R ? config.R : 0;
        this.lineWidth = cxt.lineWidth;
        this.draw= function(h){
            this.clear();
            this.y = h ?this.y + h: this.y;
            cxt.beginPath();
            cxt.arc(this.x,this.y,this.r,0,2*Math.PI,false);
    
    
    
            cxt.closePath();
    
            var x = this.x - this.R/2;
            cxt.moveTo(x,this.y);
            cxt.lineTo(this.x+ this.R/2,this.y);
            cxt.moveTo(this.x,this.y-this.R/2);
            cxt.lineTo(this.x,this.y+ this.R/2);
    
            cxt.stroke();
        }
        this.clear = function(){
            cxt.clearRect(this.x-this.r- this.lineWidth,this.y-this.r- this.lineWidth,2*this.r+2*this.lineWidth,2*this.r+2*this.lineWidth);//清除圆,所以w = r
        }
        this.isBelong = function(x,y){
            var s_x = this.x-this.r/2;
            var s_y = this.y-this.r/2;
            var e_x = this.x + this.r/2;;
            var e_y  = this.y + this.r/2;
            if(x > s_x && x < e_x && y > s_y && y < e_y){
                return true;
            }
            return false;
        }
    
    }
    function ArcSub(config){
        this.x = config.x ? config.x:0;
        this.y = config.y ? config.y:0;
        this.r = config.r ? config.r:0;
        this.R = config.R ? config.R : 0;
        this.lineWidth = cxt.lineWidth;
        this.draw= function(h){
            this.clear();
            this.y = h ?this.y + h: this.y;
            cxt.beginPath();
            cxt.arc(this.x,this.y,this.r,0,2*Math.PI,false);
            cxt.closePath();
    
            var x = this.x - this.R/2;
            cxt.moveTo(x,this.y);
            cxt.lineTo(this.x+ this.R/2,this.y);
            cxt.stroke();
        }
        this.clear = function(){
            cxt.clearRect(this.x-this.r- this.lineWidth,this.y-this.r- this.lineWidth,2*this.r+2*this.lineWidth,2*this.r+2*this.lineWidth);//清除圆,所以w = r
        }
        this.isBelong = function(x,y){
            var s_x = this.x-this.r/2;
            var s_y = this.y-this.r/2;
            var e_x = this.x + this.r/2;;
            var e_y  = this.y + this.r/2;
            if(x > s_x && x < e_x && y > s_y && y < e_y){
                return true;
            }
            return false;
        }
    
    }
    function ARCLine(option){//弧线
    	option = option?option:{}; 
    	this.x = option.x ? option.x:10;
    	this.y = option.y ? option.y:50;
    	this.e_x = option.e_x ? option.e_x : 100;
    	this.e_y = option.e_y ? option.e_y : 10;
    	this.c_x = option.c_x ? option.c_x : this.e_x/2;//中间近制点默认为终点的X/2
    	this.c_y = option.c_y ? option.c_y : this.e_y;//中间Y轴点为终点水平一致
    	this.draw = function(h){//type为bool值,如果type为true时,则闪闪单点下移,包括控制点,返回整 体下移
    		if(h){
    			this.e_y = this.e_y + h;
    			this.c_y = this.c_y + h;
    		}
    		cxt.moveTo(this.x,this.y);
    		cxt.quadraticCurveTo(this.c_x, this.c_y, this.e_x, this.e_y); 
    		cxt.stroke();
    	}
    	this.getRange=function(){//返咽的是矩形区域,方便清除
    		var x ;
    		var y ;
    		var e_x;
    		var e_y;
    		if(this.y>this.e_y){
    			x = this.x;
    			y = this.e_y;
    			e_x = this.e_x;
    			e_y = this.y;
    			return {x:x,y:y,e_x:e_x,e_y:e_y};
    		} 
    		x = this.x;
    		y = this.y;
    		e_x = this.e_x;
    		e_y = this.e_y;
    		return {x:x,y:y,e_x:e_x,e_y:e_y};	
    	}
    	
    }
    

    刚刚学HTML5,在这想用HTML画图特性,画一个组织架构图。目前开发完毕所有组件,无非就是封装了一些画矩形的类,图圈的类。先上代码看下吧。写得不好,我懂,这只是初版 ,以上组件开发完毕,将是组合起来开发图纸。明天上一个版本,大家学习一下。上面封闭了画矩形,画圆角矩形,画曲线。画圆等等。先看下效果图吧。上面都可点击的。要花几天组起来。


    展开全文
  • 下载地址: 截图如下:



    下载地址: http://pan.baidu.com/s/1bPWDzS

    截图如下:


    展开全文
  • 如何好一张架构图,要做好这件事情首先要回答的就是什么是架构图。我们日常工作中经常能看到各种各样的架构图,而且经常会发现大家对架构图的理解各有侧重。深入追究到这个问题,可能一下子还很难...

    c77e3236977546a7e8bc56cfd60d5bd4.png

    简介: 架构图是什么?为什么要画架构图?如何画?有哪些方法?本文从架构的定义说起,分享阿里文娱高级技术专家箫逸关于画架构图多年的经验总结,并对抽象这一概念进行了深入地讨论。较长,同学们可收藏后再看。

    b402f913eb753f2d97920e557a42b06e.png

    什么是架构图?

    如何画好一张架构图,要做好这件事情首先要回答的就是什么是架构图。我们日常工作中经常能看到各种各样的架构图,而且经常会发现大家对架构图的理解各有侧重。深入追究到这个问题,可能一下子还很难有一个具象的定义,如果我们把这个问题进行拆分(如下图)理解起来就会容易一点。

    架构图 = 架构 + 图

    按照这个等式,我们可以把问题转换:

    • 架构是什么?
    • 图是什么?

    图是什么?这个比较容易回答,图是一种信息的表达方式,所以架构图,即表达“架构”的图,也就是一种架构的表达方式。也即:

    架构图 = 架构的表达 = 表达架构的图

    按照这种思路我们需要回答:

    • 什么是架构?要表达的到底是什么?
    • 如何画好一张架构图?

    接下来的内容基本上就是按照这两个维度来做分析。

    什么是架构?要表达的到底是什么?

    Linus 03 年在聊到拆分和集成时有一个很好的描述:

    I claim that you want to start communicating between independent modules no sooner than you absolutely HAVE to, and that you should avoid splitting things up until you really need to, because that communication complexity often swamps the complexity of the actual pieces involved in it.(让我们认识到一种现象,把复杂系统拆分成模块,似乎并没有降低整个系统的复杂度。它降低的只是子系统的复杂度。而整个系统的复杂度,反而会由于拆分后的模块之间,不得不进行交互,变得更加复杂。)

    我理解这里描述的系统拆分就是架构的过程,基本出发点是为了效率,通过架构的合理拆分(无论是空间还是时间上的拆分),最终目的让效率最大化。那到底什么是架构,其实没有完全统一且明确的定义,如下三个定义可以参考。

    在百度百科上的定义:

    架构,又名软件架构,是有关软件整体结构与组件的抽象描述,⽤于指导⼤型软件系统各个方面的设计。

    在 Wikipedia 上的定义:

    Architecture is both the process and the product of planning, designing, and constructing buildings or any other structures.

    ISO/IEC 42010:20072 中对架构有如下定义:

    The fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution. 

    cf9679d5ebe4e220dd47652b9328961c.png

    这三个定义也是见仁见智,但是我们基本可以得出:架构体现的是整体结构和组件之间的关系。

    架构的本质

    这里引用三个观点来探讨架构的本质:

    • 架构的本质是为了管理复杂性。
    • 架构的本质就是对系统进行有序化重构,不断减少系统的“熵”,使系统不断进化。
    • 架构的本质就是对系统进行有序化重构,以符合当前业务的发展,并可以快速扩展。
    展开全文
  • 画架构图分四步走:第一,搞清楚要架构图的类型;第二,确认架构图中的关键要素(比如产品、技术、服务);第三,梳理关键要素之间的关联:包含、支撑、同级并列等;第四,输出关联关系清晰的架构图。应用架构图...

    55a407f0ed435a0bcc5c5ec4ea7824ed.png

    画架构图分四步走

    第一,搞清楚要画的架构图的类型;

    第二,确认架构图中的关键要素(比如产品、技术、服务);

    第三,梳理关键要素之间的关联:包含、支撑、同级并列等;

    第四,输出关联关系清晰的架构图。

    bb80da3192d9e28c7f273612a125f200.png
    应用架构图

    接下来,我们作进一步解读:

    一、架构图的定义及作用

    什么是架构图?维基百科、百度百科其实都没有关于它的直接定义。不过我们可以进行拆分理解:

    • 架构图=架构+图

    这样问题就转化成,什么是架构,以及什么是图?

    关于架构,百度百科上是这样定义的:

    架构,又名软件架构,是有关软件整体结构与组件的抽象描述,于指导型软件系统各个方面的设计。

    ISO/IEC 42010:20072 中对架构则有如下定义:

    The fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.(系统架构,体现在它的组成部分、它们之间的相互关系和环境中,以及控制其设计和演化的原则。)

    也就是说,架构是由系统组件,以及组件间相互关系共同构成的集合体

    而架构图,则是用来表达这种集合的载体。

    它的作用也很简单,两个:

    • 划分目标系统边界
    • 将目标系统的结构可视化

    进而减少沟通障碍,提升协作效率。

    二、架构的分类及画法

    架构大致可以分为4类:业务架构、应用架构、数据架构和技术架构,整体逻辑关系如下:

    b1a3cc10893e8eab3f6a241a98b2b494.png
    架构分类

    业务架构:使用一套方法论/逻辑对产品(项目)所涉及到的业务进行边界划分。所以熟悉业务是关键。

    比如做一个团购网站,你需要把商品类目、商品、订单、订单服务、支付、退款等进行清晰划分,而业务架构不需要考虑诸如我用什么技术开发、我的并发大怎么办、我选择什么样的硬件等等。

    f30af02afb8088716d4a559c86a1abfb.png
    产品架构图

    应用架构:它是对整个系统实现的总体上的架构,需要指出系统的层次、系统开发的原则、系统各个层次的应用服务。

    例如,下图就将系统分为数据层、服务层、通讯层、展现层,并细分写明每个层次的应用服务。

    bb80da3192d9e28c7f273612a125f200.png
    应用架构图

    数据架构:是一套对存储数据的架构逻辑,它会根据各个系统应用场景、不同时间段的应用场景 ,对数据进行诸如数据异构、读写分离、缓存使用、分布式数据策略等划分。

    数据架构主要解决三个问题:第一,系统需要什么样的数据;第二,如何存储这些数据;第三,如何进行数据架构设计。

    ff3faaac1178ca44685c1e4fa8a3bb0f.png
    大数据架构图

    技术架构:应用架构本身只关心需要哪些应用系统,哪些平台来满足业务目标的需求,而不会关心在整个构建过程中你需要使用哪些技术。技术架构则是应接应用架构的技术需求,并根据识别的技术需求,进行技术选型,把各个关键技术和技术之间的关系描述清楚。

    技术架构解决的问题包括:纯技术层面的分层、开发框架的选择、开发语言的选择、涉及非功能性需求的技术选择。

    四、适合画架构图的工具

    大家可能会好奇,前面那些精美的架构图配图是用什么工具做的。

    现在正式揭晓答案:亿图图示,一款专业的综合类办公绘图软件。

    5b5da98673b44a843713ef2a5484987b.gif
    数据架构图绘制流程

    亿图图示提供了260种绘图类型,能实现流程图、架构图、工程图、思维导图、UML、时间线、甘特图、信息图、户型图、电路图、网络图、市场分析图等数专业领域图形图表的绘制。

    而且自带26000+个矢量图形,能大大省去了你绘制单个组件所需的时间。

    db5bfaf31a6c77b8d878ae319093a992.png
    26000+矢量图形

    软件还内含3000+专业模板和UGC作品,涉及商业、教育、平面、软件、工程等多个领域,可以全面提升你的绘图效率。找到心仪的模板,选择一键“使用”即可变成自己的作品。

    另外,亿图图示支持多端运行,同时兼容Windows、Mac、Linux,以及网页在线版。

    值得一提的是,它还支持Visio文件的导入导出、支持云文档以及社交分享功能,能够很好地解决国内用户的办公协同问题。

    大家感兴趣的话,可以用起来>>>一键下载亿图图示 | 架构图绘制软件

    ------更新线------

    补充介绍软件架构中最经典的“4+1视图”:

    所谓“4+1视图”,分别为场景视图、逻辑视图、物理视图、处理流程视图和开发视图。

    48843d655fd508bd4307aab37e570e9f.png

    369e8e9f53a381fee5255578f3ef032f.png

    01 逻辑视图

    用于描述系统的功能需求,即系统给用户提供哪些服务;以及描述系统软件功能拆解后的组件关系、组件约束和边界,反映系统整体组成与系统如何构建的过程。在UML中由类图来表示(关于什么是类图,这里有一篇通俗易懂的介绍),

    干货!3分钟掌握UML类图zhuanlan.zhihu.com
    efdeeb189222e9466e333934c9dcd88d.png

    下面springcloud微服务的逻辑视图示例(仅部分),就描述了springcloud中各个功能组件。从这个图中,基本可以对springcloud有一个大颗粒度的了解。

    92b6dc21b4179eaddc6225a354f65463.png
    springcloud微服务的逻辑视图

    02 物理视图

    开发出的软件系统,最终是要运行在物理或软件环境上。物理环境可能是服务器、PC机、移动终端等物理设备;软件环境可以是虚拟机、容器、进程或线程。部署视图就是对这个部署信息进行描述。在UML中通常由部署图表示。

    d687b7b18b5c4b2047b98ecd7ff56981.png

    03 处理视图

    处理视图,又称过程视图、运行视图。用于描述系统软件组件之间的通信时序,数据的输入输出。在UML中通常由时序图和流程图表示,如下图所示:

    e4f911721c92b23efd3efdcadd0e72fa.png
    微服务架构安全认证处理视图
    如何画UML的时序图?www.zhihu.com
    1435bff66fca4f6fcef719f70f8488df.png

    04 开发视图

    开发视图关注软件开发环境下实际模块的组织,反映系统开发实施过程。

    一个设计良好的开发视图,应该能够满足以下要求:

    通过逻辑架构元素,能够找到它所有代码和所有的二进制交付件 每一个代码源文件,都能够找到它所属的逻辑架构元素 每一个二进制交付件,都能够找到它集成了哪些逻辑架构元素

    5eaefac66bc11973766b69479ed1b69a.png
    设备调试系统架构的开发视图

    05 场景视图

    场景视图,即4+1中的1。从前面的图可以看到,4+1中的4个视图都是围绕着场景视图为核心的。它用于描述系统的参与者与功能用例间的关系,反映系统的最终需求和交互设计。在UML中通常由用例图表示:

    f91927c6559939874d0fc7ae406b58b0.png
    用例图是什么?www.zhihu.com
    63228a248f5b0a08b2ff6c41719f7317.png

    总结来说,以上5种架构视图,是从不同角度表示一个软件系统的不同特征,组合到一起作为架构蓝图描述系统架构


    以上视图均由亿图图示绘制而成。>>>亿图图示免费下载,高效绘制架构图

    展开全文
  • 导读:架构图是什么?为什么要画架构图?如何架构图?有哪些方法?本文从架构的定义说起,分享了阿里文娱高级技术专家箫逸关于画架...如何好一张架构图,要做好这件事情首先要回答的就是什么是架构图。我们...
  • 组织架构图,比较实用,收走

    万次阅读 2015-08-19 10:52:10
    做了很多项目,大部分是企业项目。每个项目启动或者调研我都会先把项目...目前市面上画组织架构图的工具很多,我也用了很多,最后还是觉得原始PPT画得最好,复用性很强,毕竟一般人的电脑都有PPT。 这里貼出来并提供源
  • 标准组织架构图

    2015-11-06 11:09:09
    比较标准的组织架构,比较经典。通过PPT的。
  • 在新单位上班半个月了,干的活都是小儿科的活,今天部门经理给了个图,让我写个组件来实现,图是一个横向的组织架构图。 好久之前就想写个组件来实现的,但由于一直感觉价值不大就没有动手。网上搜索了下 说是用d3...
  • 效果如下:总算是大工告成,其实如果不需要兼容ie8的话还是比较简单的,但需要兼容ie8就比较麻烦了,要考虑许多js兼容的问题,而且要考虑事件操作时组件变换滞后等相关问题。代码量太大就不粘贴了,有需要的可以qq...
  • 对于人力资源的同事来说,画组织结构是一键非常头疼的事情,尤其是对于一些大公司和人员变动较大的公司来说,需要经常更换组织结构,每次变动都要耗费大量的时间和精力去重新绘图。其实绘制织结构很简单,之...
  • 产品经理在工作过程中会遇到各种结构(结构),...功能结构功能结构就是按照功能的从属关系成的图表,在该图表中的每一个框都称为一个功能模块。功能模块可以根据具体情况分得大一点或小一点,分解得最小...
  • 摘要:近期项目中需要实现组织架构图,搜索了大半天网上也没有体验良好、功能能够满足项目需要的demo,无奈只能自己写。实现思路是通过自定义view的方式,通过计算每一项的开始坐标来在canvas上定位,通过...
  • 抓狂场景二:你所用的所谓Mapping工具,就是简单地把职位名称等搜索条件可视化,这样的“组织架构图”……了个寂寞,完全没办法交差。 抓狂场景三:你辛辛苦苦从各处搜集来了丰富的信息,但却只能迁就系统的定式...
  • Iauto流程软件支持线框图,各种业务流程图,思维节点图,网络架构图,BPMN图,UML图以及工艺流程图!适用于各个行业,支持离线存储,国产流程图神器神器,软件仅55M左右! 软件下载地址:...
  • 一般软件专业的学生用到工具都是starUML各种类图、流程图、时序图、活动图、部署图、用例图…画图,但是系统功能架构图还是推荐用Visio工具绘制。因为 一、打开Visio 找到组织结构图 二、空缺带 依次将功能...
  • 我们在工作中,有时需要制作组织架构图,如果用手工的话,将会非常麻烦。其实在Excel中就可以快速制作组织架构图,只是很多人都还不会用这个功能。下面就来教大家如何快速制作公司组织架构图,方法非常简单,一看...
  • 流程和UML估计是程序员偶尔需要的东西,又是话一个流程可以理清程序逻辑,之前用windows自带的画图来流程,对齐和再次编辑不太好处理,后来室友推荐了processon Processon 直接二次编辑和到处为图片,...
  • Web设计师Manu Cornet在自己的博客上,了一组美国科技公司的组织结构。在他笔下,亚马逊等级森严且有序;谷歌结构清晰,产品和部门之间却相互交错且混乱;Facebook架构分散,就像一张散开的网络;微软内部各自...
  • 用处及效果准备工作依然是用GDI+的,不懂的可以先百度一下开始添加一个实体类,用以记录数据源节点信息public class MindMappingItemEntity{/// /// Gets or sets the identifier./// /// The identifier.public ...
  • 6月 27日,Web设计师Manu Cornet在自己的博客上,了一组美国科技公司的组织结构。在他笔下,亚马逊等级森严且有序;谷歌结构清晰,产品和部门之间却相互交错且混乱;Facebook架构分散,就像一张散开的网络;微软...
  • 疯狂的架构!科技公司业务图解:1.华为,技术创新引发矩阵结构变化;... 6月27日,Web设计师Manu Cornet在自己的博客上,了一组美国科技公司的组织结构。在他笔下,亚马逊等级森严且有序;谷歌结构清晰
  • html5+ECharts绘制的一款企业内部组织结构图代码,集团公司组织架构图。支持辅助线、保存为图片等功能。

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 172
精华内容 68
关键字:

画组织架构图