`
dqqmq
  • 浏览: 12183 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

在网页上画工作流

阅读更多

之前看过 CS 版本的画工作流工具,在工作流节点中配置业务单据界面呈现,用 Gateway 决定业务单据的流程状态,用任务节点连接线配置业务操作。此工作流把界面层 view 、界面管理层 manager 、业务逻辑联系起来,并做为总入口,介绍业务单据的工作流程和每一流程节点的相应界面。这样一来,系统分析人员、实施人员、公司管理层可先一步跟踪流程是否正确,界面元素是否达到客户需求。主体方向正确了,对接下来的工作开展就有一定的把握。

在工作流程任务节点 task 中 配置或预览界面,这听起来很新鲜。传统方式下要整个系统跑起来,并且有记录才能看到界面。而这样在工作流就能先预览界面,这可真让测试人员惊喜:以前要测 试整个系统界面是否正确,要个个功能点准备记录,有时还要换登录用户才能看到相应的界面,这可是很花时间的大——工程。能先预览界面,测试人员眼睛闪着 光,带着疑问。在 CS 版本下预览跟 BS 网页上看到的界面是否差异太大,要能像网页那样出效果,该多好。

有网页预览效果,这也是我想追求的。于是才有了这个在网页上画工作流的想法。那 BS 式工作流可行性如何呢?试试呗。

先找画板 Canvas ,有画板才能画框、画线条之类的。呵呵, HTML5 Canvas 。这 Canvas 可以画出来任务节点 Task ,分支 Gateway ,画起始点 Start, End ,流程线 Arrowline 。能画出来,那能拖拉不? Canvas 只支持在画板上的拖拉,不支持画板上某一图型的拖拉事件响应。这真让人失望。网页上 flash 的表现这么灵活,用 flash 来画如何? flash 可以对某一图形元素写响应事件,可是 flash 要与后台 java 进行数据交互又成为一个难点。怎么办呢?难道在网页上工作流只能止于想法阶段。

如果将网页元素浮起来做流程元素可不可行呢?任务节点 Task 图可以做背景 Table ,节点名字可以在 TD 中显示, Table 做的任务节点可以响应拖拉事件。用这种方式可以画出 Task, Gateway, Start, End 流程元素,那流程线怎么做呢?箭头直线可以用 Canvas 动态画出来,可以用 Table 分行装载直线名称和直线图,或者在一个单元格换行装载。可直线都是有旋转角度的, Table 可以旋转吗? CSS 可以做到旋转 Table 。哈哈,这下可拖拉的网页流程元素都有了。有些人可能会问,像任务节点 Task 是可以整个 Table 中任意点点击都当选中,可非矩形的流程节点,如圆形的 Start/End ,菱形 Gateway ,拖拉可是有范围的。这点嘛,在流程节点中限制一定范围的才响应就可以了。

 

1.1 在网页上画工作流 - 翼展 - 翼展身手
 

流程元素实验结果如上图。这期间遇到一个问题:怎样确定流程走线的角度。根据横坐标的长度 xMove 、竖坐标的长度 yMove 可以知道直线的角度,可是如果转的角度大于 90 ,流程走线的名称跟着反了过来,不够直观。要保证直线名称的直观性,直线与水平线的夹角只能在 90 度以内。那样的话,箭头方向又不对了。只好在画直线的 Canvas 上下功夫,向水平线方向时画右箭头,反方向时画左箭头。

接下来开始画工作流。

第一步,先放上画板 Canvas

给用户画流程,流下画流程的轨迹,合符一定规则的图形则转化成标准流程元素。用户在画板上画中心点交叉的十字出一个流程交叉 Gateway ,即画好十字交叉后,在网页上从标准流程 Task 元素 Clone 放上一个流程交叉 Gateway ,并清空画板。用户在画板上画起点交叉的十字出一个流程任务 Task ,也是 Clone 后加到网页。设计上是这样寥寥几句,实现起来就是另一回事了。先写个 JavaScript 的画板 Draw 类,当 Canvas.onmousedown 时定位画板起点,并让 ducument.onmousemoving 时在画板上画鼠标走线,让 document.onmouseup 时起笔成图。下面是画的一个画:

1.1 在网页上画工作流 - 翼展 - 翼展身手
 

 

第二步,画流程元素。画 Task, Gateway 都是两条直线成图的。

Draw 初始时

?  先定义两条线。 this.lines = [[0,0, 0,0], [0,0, 0,0]];

(看出来不?一条直线 [0,0, 0,0] 为起点 0,0 加上终点 0,0

画板起笔

?  定位当前直线起点

起笔成图

?  定位当前直线终点,并使下一直线为当前直线。

?  当前一次直线与这一次直线都移了一定长度,算两直线交点。如果交点在中心,则添加 Gateway ;如果交点在起点,则添加 Task

效果如下:

1.1 在网页上画工作流 - 翼展 - 翼展身手
 

第三步:画流程路线。

在添加流程元素时

1.         让流程元素记录它的中心点坐标 x, y

2.         流程元素 onmousedown 记录直线起点坐标

3.         流程元素 onmouseup 记录直线终点坐标,添加流程走线 Arrowline

1.         起点流程元素 StartObj 的中心点坐标与终点流程无线 EndObj 的中心点坐标成一直线 line

2.         起点元素 StartObj line 的交点 start ,终点元素与 line 的交点 end 。两交点的连线为流程走线。

3.         两交点的中点,加流程走线中心点与走线中的直线中心点的旋转长度,为流程走线的中点。(呵呵,这点很关键,要不流程走线的两端就不在 start end 上了。)

4.         在中点添加 Arrowline ,并旋转一定的角度。

各流程元素实现流程元素基类方法。( JS 也可以有接口、多态的)

1.         坐标是否在流程元素中 isMouseIn

2.         流程元素与中心直线的交点

效果如图:

1.1 在网页上画工作流 - 翼展 - 翼展身手
 

 

第四步,让流程元素可移动起来。

添加流程走线 arrowline

?  在起点对象的出直线集合 outs 上添加 line

?  在终点对象的进直线集合 ins 上添加 line

?  在流程走线 line 上记起点对象 from ,终点对象 to

流程元素 ctlKey onmouvedown 下笔时,记移动的起点对象,起点坐标。

鼠标移动时,在画板上流下移动痕迹。

鼠标起(完笔)时,移动距离确定。

让与流程元素连接的入直线集合、出直线集合重画。

效果如图:

1.1 在网页上画工作流 - 翼展 - 翼展身手
 

 

第五步,美化流程元素图

分享到:
评论

相关推荐

    在jsp网页中画工作流

    之前看过CS版本的画工作流工具,在工作流...于是才有了这个在网页上画工作流的制作。 这个上传的资源是工作流的粗制作版本,界面还有待进一步美化。 相关介绍博客文档为: http://dqqmq.iteye.com/admin/blogs/1450423

    js工作流例子,在页面上画出工作流

    在这个“js工作流例子”中,我们将深入探讨如何利用JavaScript在网页上绘制工作流流程。 工作流是一种组织和管理业务过程的方法,它涉及任务分配、审批流程、状态跟踪等。在网页上用JS实现工作流,可以清晰地展示...

    javascript 画工作流

    JavaScript 画工作流是一种在网页上创建和展示工作流程图的技术,主要利用JavaScript库和相关的jQuery插件来实现。在本教程中,我们将探讨如何利用jQuery来构建一个工作流程画图工具,以及如何使用带有事件支持的...

    jquery工作流插件

    在IT行业中,工作流(Workflow)是用于自动化业务流程的技术,它可以帮助组织和管理复杂的任务序列。jQuery工作流插件是这种技术的一种实现,专为前端开发者设计,以简化网页应用中的工作流管理。该插件允许用户通过...

    Activity工作流在线绘制流程图

    分享一个web端绘制流程图,感觉很实用。下载解压后直接导入eclipse,运行方式 HTTP Preview,访问地址http://localhost:8080/estd/index.html 希望能帮助到大家。

    web工作流画图界面

    通过JavaScript,我们可以添加事件监听器,使得用户可以直接在画布上拖拽、绘制、连接节点,实现交互式的工作流设计。 结合VML和JavaScript,我们可以创建一个动态且可定制的工作流画图界面。以下是一些关键的技术...

    web工作流设计器

    在"web工作流设计器"中,重点在于提供一个跨平台、多浏览器兼容的解决方案,使得流程设计可以不受硬件或操作系统限制,用户只需通过网页浏览器即可进行操作。 在描述中提到的“支持多种浏览器”,这意味着该工作流...

    javascript 基于Raphael的工作流可视化编辑

    在本项目中,我们关注的是使用JavaScript基于Raphael库实现的工作流可视化编辑器。Raphael是一个JavaScript库,它允许开发者在网页上创建复杂的矢量图形,支持SVG(Scalable Vector Graphics)和VML(Vector Markup ...

    Simpleflow 工作流引擎 CS Express

    与【流程应用表】主表单配合使用,用户只需要根据业务需要,在子表单上画出所需的栏位 6. 自带的Sampe流程样例 【非生产采购审批】 7. 增加了Mail.Box设置 支持多Mail.box环境下的邮件提醒 8. 除了不再原生...

    8款超炫动画加载瀑布流.zip

    这种加载效果通常被称为“加载动画”,在网页中的瀑布流布局中尤为常见,因为瀑布流布局的特性往往需要更多的加载时间。 首先,我们来理解一下“瀑布流”布局。这是一种非常流行的网页设计模式,尤其适用于图像密集...

    插画风格设计网页模板

    在网页设计领域,插画风格的设计正逐渐成为一种流行趋势,因为它能够为网站带来独特的视觉体验和个性化的表达。"插画风格设计网页模板"正是这样一款专为设计师工作室量身定制的模板,它巧妙地将艺术与功能性相结合,...

    HTML网页画箭头

    在本主题中,“HTML网页画箭头”主要关注如何在网页上创建和显示箭头,这在工作流设计器或流程设计器中非常常见,它们需要连接各个步骤或元素,形成可视化的工作流程。 SVG是一种基于XML的矢量图像格式,允许在网页...

    web版工作流可视化图形设计

    在现代企业信息化管理中,工作流(Workflow)系统扮演着重要的角色,它通过自动化业务流程,使得任务分配、审批、监控等过程更为高效。本文将深入探讨“web版工作流可视化图形设计”,这是一种利用前端技术实现的...

    国内公司网站的Flash顶部动画素材.rar

    如果你打算将这些动画应用于现代网站,可能需要进行一些转换工作,例如将Flash动画转换为HTML5 Canvas,以确保在各种设备上的兼容性。 总的来说,"国内公司网站的Flash顶部动画素材.rar"提供了一个回顾过去网页设计...

    js拖放绘制线条比如用于动态创建工作流

    在JavaScript(JS)开发中,实现拖放功能和动态绘制线条是创建交互式工作流的重要技术。这样的功能常被用于创建灵活的业务流程模拟或在线表单设计工具,让用户能够自定义工作流程,如请假申请流程。在这个场景下,...

    使用RaphaelJS开发可拖拽的工作流前台

    5. 更新工作流状态:当节点位置改变时,同步更新后台的工作流状态,以便在服务器端存储或与其他用户共享。 四、优化与扩展 1. 阻止默认事件:在拖放过程中,可能需要阻止默认的文本选择和滚动行为,以免影响用户...

    超酷堆叠相片转瀑布流网格布局动画

    在IT行业中,网页设计与开发是一项至关重要的技能,特别是在视觉效果和用户体验方面。"超酷堆叠相片转瀑布流网格布局动画"是一种创新且吸引用户的网页设计技术,它将静态的图片堆栈转变为动态的瀑布流布局,为用户...

    工作流working.zip

    在本项目中,"工作流working.zip"是一个包含资源的压缩包,其核心目标是实现一个仿钉钉的流程图制作工具。这个工具最初基于Vue.js框架构建,但经过改造后,改用jQuery和Bootstrap来完成。以下是关于这个项目的一些...

    在web页面画流程图V1.0

    - Web页面的可视化工具允许用户通过浏览器来展示复杂的数据结构,流程图是其中一种,可以清晰地展示任务流程或系统工作流。 2. **Flash技术**: - Flash是一种历史悠久的富互联网应用程序(RIA)平台,擅长于创建...

    在线绘制工作流程图(HTML)

    通过选择合适的绘图元素和JavaScript库,开发者可以创建出具有高度交互性和定制化的工作流程设计工具,满足B/S架构下的工作流需求。对于希望在网页上设计和编辑工作流程的IT专业人士来说,掌握这些技术是至关重要的...

Global site tag (gtag.js) - Google Analytics