当页导航

外部系统整合BPM工作流的方案问题(技术交流)

背景:使用IBM BPM开发了OA系统,现在有一个外部系统A,需要开发工作流,工作流部分想采用BPM平台来实现,方便流程的统一管理。问题:如何使用BPM平台初步考虑的方案如下:方案一:A系统保存自己的业务数据和表单,bpm实现工作流,A系统通过rest接口调用bpm的工作流引擎实现流转,bpm只是提供...显示全部
背景:使用IBM BPM开发了OA系统,现在有一个外部系统A,需要开发工作流,工作流部分想采用BPM平台来实现,方便流程的统一管理。

问题:如何使用BPM平台

初步考虑的方案如下:

方案一:A系统保存自己的业务数据和表单,bpm实现工作流,A系统通过rest接口调用bpm的工作流引擎实现流转,bpm只是提供流程引擎,负责工作流程的流转和控制,不保存任何业务数据和表单。即A系统每次调用接口,获取到的是流程的流转及状态等信息。

方案二:bpm实现工作流,A系统调用bpm提供的rest接口启动流程,并传入业务数据,bpm实现工作流程流转和控制之外,也保存业务数据。即A系统每次调用接口,除了获取流程的流转和状态信息之后,也交互业务数据的信息。

两个方案哪个更合理?各位大神是如何实施的,是否有其他方案。请赐教!
收起

26回答

snakeaiyusnakeaiyu软件开发工程师 , 新锐国际
yuanyuewandouikehchao赞同了此回答
方案一和方案二都是理想状态,建议可以鉴于两者中间,首先业务数据是业务系统保存,流程数据与他松耦合,但是流程相关可以通过变量去保存一个业务数据的唯一Id,作为后续跟进获取流程信息后去配对业务信息的依据。通过该方式将业务数据与流程数据进行松耦合,这样哪怕后续你们不用IB...显示全部
方案一和方案二都是理想状态,
建议可以鉴于两者中间,首先业务数据是业务系统保存,流程数据与他松耦合,但是流程相关可以通过变量去保存一个业务数据的唯一Id,作为后续跟进获取流程信息后去配对业务信息的依据。
通过该方式将业务数据与流程数据进行松耦合,这样哪怕后续你们不用IBM的BPM,改用其他BPM,系统一样可以正常流转和处理。收起
 2015-05-20
jmcai1001jmcai1001研发工程师 , gf
yuanyuewandou赞同了此回答
回复 2# snakeaiyu 谢谢,该建议非常好!我的理解是,该建议方案可以看成是方案一的优化,业务数据、表单、处理逻辑全部放在系统A,bpm保存业务数据的ID,作为相关处理依据。这个方案有个好处就是,bpm的开发团队,不用过于介入系统A的开发团队,系统A的开发团队对业务的熟练也比BPM团队强...显示全部
回复 2# snakeaiyu

谢谢,该建议非常好!
我的理解是,该建议方案可以看成是方案一的优化,业务数据、表单、处理逻辑全部放在系统A,bpm保存业务数据的ID,作为相关处理依据。这个方案有个好处就是,bpm的开发团队,不用过于介入系统A的开发团队,系统A的开发团队对业务的熟练也比BPM团队强,能更好处理业务的东西。收起
 2015-05-20
jmcai1001jmcai1001研发工程师 , gf
yuanyuewandou赞同了此回答
不知道有没有这样的实施案例,可供参考呢。系统A调用BPM的rest接口,目前也不知道怎么做,不知道有这方面的资料没有显示全部
不知道有没有这样的实施案例,可供参考呢。系统A调用BPM的rest接口,目前也不知道怎么做,不知道有这方面的资料没有收起
 2015-05-20
  • 你先在有案例吗?系统A调用BPM的rest接口,我现在刚刚在学,有这方面的资料吗?
    2016-08-31
  • 我这边可以提供定制开发 如果有相关需求或者了解 都可以联系
    2016-09-01
  • 使用httpclient调用restAPI,只是需要账号密码登录,如果做了单点的话就不需要考虑验证问题
    2016-11-02
代头大哥代头大哥软件开发工程师 , 中软国际
楼主你好,我也做过这样的思考,有这样疑问。我是新手,一起交流学习。:hug:显示全部
楼主你好,我也做过这样的思考,有这样疑问。我是新手,一起交流学习。:hug:收起
 2015-05-20
jmcai1001jmcai1001研发工程师 , gf
yuanyuewandoulong670629484赞同了此回答
回复 5# 代头大哥     好啊,一起学习进步。我们最近有这样的需求,现在在论证阶段,还没真实实施。你们进度如何?显示全部
回复 5# 代头大哥


    好啊,一起学习进步。我们最近有这样的需求,现在在论证阶段,还没真实实施。你们进度如何?收起
 2015-05-21
odd2008odd2008技术经理 , 汉光电子
yuanyuewandouliuyj001赞同了此回答
两种方式保证你都有大坑,坑你没商量显示全部
两种方式保证你都有大坑,坑你没商量收起
 2015-05-21
daniewangdaniewang总经理/总裁 , danie
chukun402美美的happydog等赞同了此回答 
方案一和方案二应该有针对性,主题中缺少了一个问题描述.问题:   针对的重点应该是A系统的业务数据是否涉及到流程流转过程中的交互问题,交互数据量的范围如果涉及流程流转过程中的数据交互,建议使用第二种方案如果不涉及这个问题,建议使用第一种方案举例说明:...显示全部
方案一和方案二应该有针对性,主题中缺少了一个问题描述.
问题:   针对的重点应该是A系统的业务数据是否涉及到流程流转过程中的交互问题,交互数据量的范围
如果涉及流程流转过程中的数据交互,建议使用第二种方案
如果不涉及这个问题,建议使用第一种方案
举例说明:
方案一适合的对接模式
如果是A系统单纯的只做一些业务级别的审批动作,审批后某些数据统计或生效,
这类事务处理多数都可以进行开发形式的封装
举例请假流程,  审批通过后每月定期统计实际员工的请假次数,
方案二适合的对接模式
业务数据交互复杂度搞,相对流程封装方法重构率高
A系统开发建立了主数据档(资金池),现阶段拥有资金100W
资金使用流程申请时,流程提交,  资金池资金发生变化,拥有资金 = 原拥有资金-待使用资金
流程审批通过后,   资金再次发生变化,   待使用资金变更为已使用资金
流程被退回,  用友资金恢复为原始状态
在这种多业务数据交互的情况下,  涉及到的对接功能点较多,所以第二种方案的可行性较高,成本也会比第一种第,当然,这取决于系统本身
这种只是单纯的一种数据档操作,如果是多种则封装难度较高,
没有检查错别字,如发现请见谅收起
 2015-05-21
daniewangdaniewang总经理/总裁 , danie
yuanyuewandoujmcai1001艾依然赞同了此回答
补充回复方案二的整体设计思路:单纯的看方案二很难有整体解决思路,可能会产生各种问题,下面补充回复整体的解决思路封装1数据结构封装从数据结构来说,分为主表,多级明细表,从字段来说,主要分为字符,数字,时间等将这些基本的主体数据结构双方进行统一的封装和解析模式,A系...显示全部
补充回复方案二的整体设计思路:
单纯的看方案二很难有整体解决思路,可能会产生各种问题,下面补充回复整体的解决思路
封装1
数据结构封装
从数据结构来说,分为主表,多级明细表,从字段来说,主要分为字符,数字,时间等
将这些基本的主体数据结构双方进行统一的封装和解析模式,A系统重点注意将所有信息封装(如XML),将XML信息传递至OA系统,OA系统自动通过自动解析方法将数据解析并保存的对应的表中,
封装2
流程节点是否启动数据计算或处理性封装
如果流程过程中需要针对已有OA系统后台字段加当前A系统字段结合处理,需要统一化封装标准,如字符型合并,列表数字型求和加减乘除等
封装3
是否启动数据传输
在审批过程中审批节点是不需要传输数据的,只有需要数据交互时才启动
关注点:  特殊性或关键标识性字段(如编号规则等)
双系统必须保持一致收起
 2015-05-21
snakeaiyusnakeaiyu软件开发工程师 , 新锐国际
yuanyuewandoujmcai1001赞同了此回答
回复 8# daniewang 流程数据和业务数据永远不可能完全解耦,方案一说的太笼统了,不管什么业务场景,如果业务数据全部外部实现,你通过什么和流程数据对接呢,一样需要有相关关联的字段的。方案二,业务数据是千变万化的,正如daniewang兄说的,业务如果涉及子表等情况很多。但是其实只...显示全部
回复 8# daniewang

流程数据和业务数据永远不可能完全解耦,方案一说的太笼统了,不管什么业务场景,如果业务数据全部外部实现,你通过什么和流程数据对接呢,一样需要有相关关联的字段的。

方案二,业务数据是千变万化的,正如daniewang兄说的,业务如果涉及子表等情况很多。

但是其实只需要有一套统一的数据规范作为流程与业务交互的方式就可以了。
通过IBM BPM,它本身有流程变量那个概念,你完全可以规约好一套流程变量,然后所有的业务流程都传入该类流程变量。以此来实现相关业务与流程的关联和解耦。
当然该定义的流程变量需要考虑好扩展,首先必须保存业务主键ID,保存一些业务的信息,然后你可以外部根据这些业务信息去封装和处理去打开相关的业务页面。
当业务与流程交互的时候也可以通过这些规范的变量去实现,不如金额大于多少走那些线等等。
甚至后续环节处理人都可以通过这些实现的。

不过外部需要封装很多内容,以上说的都是经过我们实践过的内容,而绝非空谈。
这里大概说了一下希望可以开阔下你的思路。收起
 2015-05-21
daniewangdaniewang总经理/总裁 , danie
yuanyuewandou赞同了此回答
回复 10# snakeaiyu     我个人感觉您可能没有接触过业物流吧?个人感觉,您对数据档理解有误,数据档分为两种,  基础数据档,主数据档基础数据档用于存储基本的信息,如:地区,人名等主数据档用于业务数据交互两种数据的本质区别:  基础数据档...显示全部
回复 10# snakeaiyu


    我个人感觉您可能没有接触过业物流吧?
个人感觉,您对数据档理解有误,
数据档分为两种,  基础数据档,主数据档
基础数据档用于存储基本的信息,如:地区,人名等
主数据档用于业务数据交互
两种数据的本质区别:  基础数据档的录入,变更等操作非常简单,既后台配置项,直接可以修改,
主数据档则不同,所有的数据交互是不可以进行直接针对数据操作的
举例说明:  供应商信息
基础数据档:  在某些系统中,主要关注的是供应商的具体名称,联系人等,并不关注其他,在使用时也只是在其他业务体系中选择供应商名称,
主数据档:  在某些系统中,供应商是否生效需要经过招标,评比等过程,这样最终通过的才是正式的供应商,这种就是不可以直接修改供应商信息,需要经过业务层,
如果使用流程是以基础数据档为主,那么方案一为最佳,因为可以将流程引擎封装整一个独立的模块,调用时可以返回流程ID,业务状态,审批人等几组参数,而且使用方法统一,这样第一种方案就是最佳状态,所有的接口都由OA系统封装,A系统只负责调用即可,使用POST方法提交并且获取一个独立的页面,所有的功能就完全实现了收起
 2015-05-21

撰写回答

提问者

jmcai1001研发工程师, gf
发布37
回答23

请稍候...