PDF噩梦
在之前的一段时间里,只要一提起PDF,我就会头晕,然后是头疼,最后是头大,总之是和头相关。需求很简单:为所有报表提供在线生成PDF版本的功能,这样网站用户在浏览报表时就可以下载离线浏览。对不住了,开源软件,我不得不说,慎用开源软件,慎用!痛苦的查找论坛、痛苦的翻看源码,最后,在支付了200欧后,痛苦消失了,我们购买了商业软件,200欧兼容了更多的网页结构,200欧具有更快的速度,200欧带有一年的技术支持,最最重要的是,200欧,客户出的。
这不是这里的关键,问题是,200欧后,我遇上了新麻烦:报表的PDF版本样式不正确,不正确的原因是图片下方的文字将图片的排列样式弄乱了(图片大小不规则,字数不规则)。在网页中,DOM渲染完毕后,我们使用JavaScript来进行图片与文字高度的重计算,但在PDF中,我们束手无策。
我问BA,可以容忍部分图片排列不整齐否?不出所料。
怀有侥幸,我继续问BA,可以容忍部分文字丢失否?BA说,不可以。意料之中。于是找到徐昊。
徐昊问BA,这些说明文字对客户如此重要吗?
BA说,是的。
徐昊说,为什么?它主要有哪些内容?
BA说,有标题,简单说明以及图片的版权信息,最重要的就是版权信息,一定不能丢失。
徐昊说,能不能这么说,其实对客户最关心的是版权信息。
BA说,是的。
于是问题解决。解决方案是:我们给文字定高,同时将文字缩小以容纳最可能多的字数,这样网站用户在PDF里看到的图片重新恢复了整齐,尽管看不太清图片说明文字,但是用户真正关心的是图片,谁关心哪些无处不在的版权信息呢?你可能会说了,看不清版权信息怎么行?幸好,你问的不是,版权信息有那么重要吗。回答是,这里是PDF,移动你的鼠标到Zoom,点击下拉框,点击150%以上的选项,然后,你会惊讶的发现,那些该死的版权信息到处都是。
BA的职责是帮客户发现的问题,开发人员的职责是解决问题,QA的职责是校验最终的实现是否能够解决客户的问题。具体到一个用户故事上,就是BA编写用户故事,DEV编码开发,QA验收用户故事,这是三个任务,很明显,这三个任务有一个非常重要的共享信息,这个信息就是用户故事所要实现的客户价值(即帮客户解决的问题)。围绕着客户价值,每次迭代开始前,团队都会进行迭代计划会议,所有成员会跟随BA逐一审核各个用户故事;围绕着客户价值,开发人员开发中随时可以和BA进行沟通,就设计问题进行讨论;围绕着客户价值,开发人员每开发完成一个故事,BA、开发人员和QA就会在一起进行一个微型 ShowCase,在期间讨论用户故事的实现是否实现了客户价值,大家对用户故事的理解是否一致。
那么,在相关的任务之间需要能够定义变量,这些变量数据能够在这些任务间共享。
描述
一定的任务范围能够定义变量,在一个流程实例里,该范围所包含的任务实例能够使用该变量。
图 6-4任务范围级别的数据可见性
如图6-4所示,我们划定了一个任务范围,该范围包含了任务A、任务B和任务C,同时,我们在该任务范围内定义了一个变量M,那么,在一个流程实例里,只有任务A、B和C的实例在运行期能够使用该变量,任务D和E的实例都不能访问,不可见。
可以看到任务范围和块任务在概念上比较相似,都是包含一系列的子任务,它们之间的差别在于:块任务一般具有比较独立的执行上下文和业务语义,而任务范围则是对具有相同执行上下文的任务的一种分组。
在工作流系统里,对流程任务进行分组的好处在于:可以为特定的一组任务绑定数变量、异常处理器和补偿动作。例如在图6-4中,如果任务A、B和C中的任一实例执行失败,那么我们就认为整个任务区域执行失败,将统一执行一个业务补偿行为,同时,这些任务共享一个异常处理器。
实现
在jBPM4里,流程定义模型相比jBPM3最大的变化即是引入了任务嵌套的概念,一个任务能够包含多个其他任务,这里的父任务即可充当任务范围的定义。jBPM4针对这种嵌套的任务建立了一套处理机制,总的来说就是建立任务运行期的嵌套关系,查找变量时首先会在任务级别进行查找,如果找不到,则会依次向上查找父任务实例,直至流程实例级别变量,同时,父任务可以统一绑定异常处理器和事件动作。在后续jBPM4的章节,我们将会详细分析该机制的实现细节。
分享到:
相关推荐
4. **表格和图表**:PDF中的表格和图表转换成Word时,需要保持数据的完整性和格式的一致性,这对转换工具来说是一个挑战。 5. **安全性**:由于PDF可能包含敏感信息,转换工具应尊重PDF的权限设置,如密码保护或不...
pdf edit 看名字就知道它打破了pdf不能编辑的噩梦
在ASP.NET中处理PDF文档是一项常见的任务,尤其在企业级应用中,可能需要生成报告、合同或者用户手册等。PDF(Portable Document Format)格式因其跨平台性和内容保持性而广泛被采用。本节将深入探讨如何在ASP.NET...
JAVA 动态生成Word和PDF JAVA动态生成Word和PDF是JAVA开发中的一种常见需求,这里将详细介绍JAVA动态生成Word和PDF的几种方案。 生成Word 1. Jacob方案:Jacob是Java-COM Bridge的缩写,在Java与微软的COM组件...
智能汽车终极猜想:电动汽车与特斯拉的“噩梦”.pdf
年终总结PPT不在是噩梦.pdf
从 PDF 表格中获取数据是一项痛苦的工作。不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取表格数据。 PDF 文件是一种非常常用的文件格式,通常用于正式的电子版文件。它能够很...
《开原安全的恶梦与亮点——开源代码的挑战与对策》 开源代码在现代商业软件中的使用已经变得越来越普遍,然而,随之而来的是法律风险和安全风险的挑战。开源软件(OSS)的自由使用特性,使得企业既可以受益于其...
随着物联网设备数量的增长,数据管理成为一项艰巨任务。确保数据清洁,排除冲突记录,变得日益复杂。理想情况下,人工智能应具备识别并摒弃过时数据的能力,但这需要高级的自我学习和适应性。当前的机器学习算法有时...
饥荒控制台物品和模式代码大全 饥荒是一款 sandbox 类型的生存游戏,玩家需要在游戏中收集资源、建造家园、战斗怪物以生存下来。在游戏中,玩家可以使用控制台输入代码来快速获取游戏中的物品和模式,本文档总结了...
丧尸有危机 生化危机4重生之恶梦Java版评测.pdf
其流程引擎可以处理大量商务流程,且适配器生成技术简单,支持多种工作流类型,如文档/图像工作流、嵌入式工作流、协作工作流和生产过程管理工作流。 工作流在企业应用整合中扮演着重要角色,例如Plexus FloWare、...
【电磁波:噩梦般的武器】这一主题涉及的是电磁波在军事和技术应用中的复杂性和潜在影响。电磁波是电场和磁场交互变化产生的能量传播形式,广泛存在于我们的生活中,包括无线电通信、雷达、卫星导航等多个领域。然而...
IAM(Identity and Access Management,身份与访问管理)在数字化转型中的角色越来越重要,因为它涉及到企业的安全、合规性和效率。随着企业越来越依赖云服务、移动技术、物联网和大数据,IAM成为了确保数字转型战略...
设计模式之于面向对象系统的设计和开发的作用就有如数据结构之于面向过程开发的 作用一般,其重要性和必要性自然不需要我赘述。然而学习设计模式的过程却是痛苦的,从 阅读设计模式的圣经——GoF 的《设计模式:可...
5.2 从兼职工作到自由职业者——记账、纳税与工作量 128 5.3 寻找并维护客户的方法 130 5.4 迭代式项目:无休无止的噩梦 133 5.5 适当地为自己的服务定价 136 5.6 为自己建立良好的工作实践 138 5.7 不仅仅是...
然而,社交媒体上的数据显示,尽管“健身”和“运动”话题受到广泛关注,但实际上,许多人因工作、生活压力等问题导致睡眠不足。例如,“失眠”话题的阅读量超过4.7亿,显示出大量人群受睡眠困扰。 根据华米科技的...
【Unity引擎介绍】Unity引擎是全球范围内广泛应用的游戏开发平台,支持多平台发布,包括Windows、Mac、iOS、Android以及各种游戏主机和VR/AR设备。它提供了图形化开发环境,使得开发者可以方便地创建3D、2D游戏、...
在网络安全领域,数据安全是至关重要的一个方面。本文将深入探讨在性骚扰或攻击事件发生后,社区如何应对和预防此类问题,以及如何提高网络信息安全,特别是在业务运营、风险控制和金融安全方面。此外,我们还将讨论...