自从计算机出现后,快速便捷的从太平洋一样的文海中找到水滴大小的资料真正成为了可能,而能够帮助人们实现这一愿望的程序员就像中世纪的航海家一样用神秘的代码程序指引着计算机一步一步实现的需求。而他们所用的被称之为“程序”的序列组合,在一般人眼中,有如天书般难读难懂。

即使对于程序员来说,实现复杂的业务需求也不是一件容易的事情,这很大程度上归咎于现有的软件设计模式并不科学。在《探索流程的奥秘之三-如何树立业务流程》中,我们了解到用户关注的是结果(交付物)及结果的状态,而软件设计关注的是操作,而很不幸的是,程序员也是人,这种错位的思考模式很难让人轻易理解。

面向业务开发应用的方式修正了这种情况,它的主要出发点如下:

1. 所有的应用都是由若干业务流程组成

2. 人们在使用应用时,会对所操作的业务流程产生出业务数据来,如每次请假时会产生请假申请信息及执行信息。

3. 业务流程的产生业务数据是分步骤生成的,且根据步骤的执行情况会生成不同的数据,如请假申请只有批准后才会有执行信息。

4. 一个业务流程的业务数据会被另一个流程使用,是因为业务流程之间存在步骤流转,比如启动报销流程是因为有了出差业务,且出差业务中发生了消费。

5. 业务间的关联在数据关系上体现的是A业务记录中包含B业务记录中某项数据的集合,如出差活动的出差人集合。

6. 有时业务之间的关联是由我们并不注意的中间业务担当的。

下面我们以差旅应用为例,来看一看面向业务设计软件的过程:

图一 差旅应用业务流程关系图

人们在日常出差时,最直观的感受到出差、借款及报销这几项业务,各公司针对其均有相应的审批流程及办事流程,但这三个业务流程间的关系如何呢?从图一可以看出:

1.  这三项业务都与人员有关

2.  借款是直接挂在每个员工上的,但每次出差可能不止一个人出行,因此就需要增加"D02员工的出差活动"这个隐含意义的业务流程。

3.  每次借款和报销的发生实际上是通过发起的。

4.  很多公司在报销时往往要求填写报销明细,虽然每项报销明细并没有独立的审批过程,但其体现了集合关系,因此可以将报销明细看作特殊的没有审批步骤的业务流程。

确定了业务流程的关系后,我们就探究一下每项业务流程的特性。

图二出差业务简单流程图

图二是一个简单的出差业务管理流程图,与一般的框图不同,这张图反映了更多的我们传统软件开发模式下未考虑的细节:

1.  步骤的执行可以造成其他步骤跳转的失效,比如我们允许即使提交了申请,在未审批情况也可以修改申请时,修改申请的操作会造成原先提交申请跳转自动失效。

2. 步骤的操作人可能来自于业务流程自身,(我们称其为动态步骤操作人),比如取消出差活动的操作人为出差申请的申请人或审批人。

3.  任何步骤执行后都有可能产生多个跳转,也可能不产生任何跳转。

4.  如果跳转到交互步骤(需要操作人介入的步骤),则操作人有执行业务步骤的选择权,如果跳转定义了通知操作人,则被通知人的待处理队列中应该出现该步骤。

5. 如果跳转到自动执行步骤,计算机应该自动执行该步骤,并进行后续跳转,直到没有后续的自动执行步骤或遇到结束节点。

6. 业务记录的数据是在各个步骤中渐次获取的,可能多个步骤都对同一个数据操作,如创建申请、修改申请、调整出差活动都可修改出差期限。

7. 对于每个步骤的执行,除了传统的赋值计算操作,还会包括特定操作,比如通过审批处理时会针对出差人清单自动创建“出差人活动”业务记录,用于后续的借款、报销处理。

利用普知杰的协同应用系统平台,可以轻松的实现面向业务的应用构建,比如步骤跳转的操作如下:

图三: 流程设置时步骤跳转设置案例

对于使用者,只需要找到对应的业务记录后右键,即可进行相应的操作,如图,可以看到由于图三设置的目标跳转有4个交互步骤跳转,都设置了动态操作人为时间发起人,操作人发起的这条记录可以有4个操作,其在右键操作时可以选择四个步骤中的任一个进行操作:

图四: 业务记录的步骤操作举例

而换另一个操作人时,对于同样的记录,他是执行人,根据动态操作人的设置,他只能进行一个操作

特别要提及的是,经过此方式整理出来的业务记录数据,相互间是有关联关系的,如从员工可以查出其所有的出差、报销、借款记录来。这样就有利于我们快速的查询我们需要的任何信息。普知杰的协同应用系统通过自定义视图的设置,可以快速的实现这种需求。

面向业务开发应用还有很多有意思的特性,利用这些特性可以找到软件设计的通用规律,进而实现自动化的应用系统开发,让我们远离繁复的代码编程,我们后续会推出一个系列文章,欢迎大家指正。有兴趣的人也可以到普知杰网站下载评估版软件进行试用。这个地址可以下载到9个并发数不限期限的试用版系统和说明文档.

转载于:https://www.cnblogs.com/louisding/archive/2012/10/15/2763677.html

[置顶] 面向业务开发应用相关推荐

  1. 阅读目录(置顶)(长期科技领域知识)

    第一期:适用于数据项目的7种强大的开源工具 第二期:四种正确的微服务部署方式 第三期:开源和赚钱何去何从 第四期:Web前端和Java开发哪个薪资更高,发展前景更好? 第五期:干货总结:中级前端工程师 ...

  2. 华为数据之道(3):面向业务的信息架构建设

    注:微信公众号不按照时间排序,请关注"亨利笔记",并加星标以置顶,以免错过更新. 新书消息: 秋天里的第一本云原生巨著:<Harbor权威指南> 我们云原生实验室从事着 ...

  3. 天猫送给这些商家“首页置顶”丨 24张PPT详解天猫消费电子2018年商家策略

    5月 8日,2018天猫TES(天猫消费电子生态峰会)在杭州举行,这也是天猫消费电子事业部今年3月正式成立以来,首次全体亮相. 在此次大会上,天猫消费电子事业部总经理杨光(花名:吹雪)宣布,要建立全球 ...

  4. 推荐+1置顶+1(分享、讨论、实现) 通用软件注册功能之建立有效的软件保护机制

    推荐+1置顶+1(分享.讨论.实现) 通用软件注册功能之建立有效的软件保护机制 众所周知,一些共享软件往往提供给使用者的是一个功能不受限制的限时使用版,在试用期内使用者可以无限制的使用软件的全部功能( ...

  5. 项目1在线交流平台-7.构建安全高效的企业服务-3. Security整合Kafka,ES,Thymeleaf实例-对帖子置顶、加精、删除

    文章目录 功能需求 一.置顶.加精.删除帖子功能的实现 1. dao层处理数据 接口定义 sal语句定义 2. service层业务处理 3. Controller层处理按钮事件异步请求 异步请求及k ...

  6. 微信支持群消息置顶;博通洽购虚拟机巨头VMware;

    微信支持群消息置顶 近日,微信iOS版更新了8.0.22版本,有用户发现,在该版本中,#微信新增群消息置顶功能#.群主或管理员长按需要置顶的消息,在菜单中点击置顶操作.之后消息就会置于群聊天界面的顶部 ...

  7. 【博客置顶】个人简介

    置顶说明 但凡网络被骗,网上赌博请报警,不要相信任何一个黑客会帮你解决,有能力的不会帮你,没能力的只会骗你,勿私信!!! 关于我 本科期间东华r00t ctf战队web手 一大摞没啥值得提的ctf证书 ...

  8. Redis+SpringBoot实现置顶帖缓存

    步骤 1.通过服务器或者本地虚拟机开通redis缓存服务. 2.项目映入redis和连接池依赖. 3.在项目的配置文件中配置redis,例如,ip地址,端口号,和database和连接池属性. 4.定 ...

  9. [置顶]技术人员,你拿什么拯救你的生活温水煮青蛙

    [置顶]技术人员,你拿什么拯救你的生活温水煮青蛙 有时候,我常常问自己这样一个问题:如何哪天你不搞技术了,你还可以干什么?还能够用什么来养活自己和家人? 很多的朋友看到这个问题之后可以给出很多的答案, ...

最新文章

  1. php redis 密码,redis如何设置密码
  2. C#中实现简单的预警提示功能(语音提示与弹窗提示)
  3. [LintCode] strStr [KMP brute force]
  4. Java黑皮书课后题第4章:*4.17(一个月的天数)编写一个程序,提示用户输入一个年份和一个月份名称的前3个字母(第一个字母使用大写形式),显示该月中的天数。如果月份非法则显示出错信息
  5. 数组指针 和 指针数组
  6. linux中的进程权限是,Linux中权限,进程,服务的简单操作
  7. win10商店下载位置_Windows10应用商店程序下载目录在哪 怎样查看win10系统应用商店程序下载目录...
  8. 关于vray 5.2的使用(自研笔记)
  9. linux系统时间与网络时间不同步
  10. 取消磁盘介质写入保护
  11. 基于Java毕业设计缘梦书屋网站源码+系统+mysql+lw文档+部署软件
  12. SpreadJS 纯前端表格控件应用案例:在线问卷系统
  13. Mac Android Studio 打包APK 出现的问题
  14. r语言t检验输出检验统计量_R语言的各种检验
  15. java实现花呗分3、6、12期计算用户每期手续费及每期总费用
  16. VMware之EXSI安装-yellowcong
  17. c语言乒乓球比赛相关的拓展程序,乒乓球编排软件.pdf
  18. Android自定义view之围棋动画,真牛皮
  19. 浅谈 iframe的优缺点以及使用场景
  20. 华为手机灵敏度设置_华为手机吃鸡灵敏度怎么调

热门文章

  1. Java垃圾回收之老年代垃圾收集器
  2. 如何学习:自考小组学习
  3. Python中常见字符串去除空格的方法总结
  4. 详解Spring中Bean的自动装配~
  5. Lidar激光雷达市场
  6. PyTorch 图像分类
  7. 行人检测与重识别!SOTA算法
  8. 2021年大数据Hive(五):Hive的内置函数(数学、字符串、日期、条件、转换、行转列)
  9. mysql屏蔽关键字实现方法_PHP屏蔽过滤指定关键字的方法
  10. C++ namespace 的作用以及使用