NC外部统一流程管理平台方案_choutiandi0258的博客-程序员秘密

技术标签: java  测试  json  

1.前言

NC是用友面向集团企业的世界级高端管理软件,目前NC基于8000家集团企业客户的实力,使其在同类产品市场占有率已经达到亚太第一,面向大型企业集团和成长中的集团企业的信息化需求,用友NC6的产品定位于大型企业管理与电子商务平台。他综合利用最新的互联网技术、云计算技术、移动应用技术等,通过构建大企业私有云来全面满足集团企业管理、全产业链管控和电子商务运营,为集团企业提供了一个全新的支持合规化应用需求和创新需求,以及个性化配置、集成、实施、运维、管理一体化的大型企业管理与电子商务平台,不断帮助集团企业创新管理模式,引领商业变革,实现长期发展目标。

该产品的特点总结为:多级集团管控、全产业链协同、动态企业建模、大企业云平台。

尽管NC在进行企业产业链协同上的管理存在比较不错的表现,但在其NC5、NC6产品在全产业链上的协同还存在一些不足,表现在:

  • NC内部的流程进行外部数据交互需要二次开发
  • 流程引擎必须用NC的内部流程引擎,非BPMN2的标准,存在一些描述流程业务的不足
  • NC待办必须在NC系统内完成
  • 移动端上的待办需要单独二次开发
  • 中国式的流程支持比较困难(如退回、分发、跳转、催办、定时跳过、版本变更、表单权限控制等)
  • 全集团的流程共享(多子公司)共用。
  • 流程审批中的不同人员的计算(根据业务线条、表单计算线条等)
  • 跨系统的业务数据审批变得比较困难

studyinfo-comm

集团公司流程业务审批都存在以下问题,特别已经使用了NC业务系统的情况下:

info-question

NC的客户群都希望定义一套集团内的统一流程,从而真正上实现集团业务单据的管理在NC上管理及归档统计,而其审批过程即交由企业的统一流程审批平台上进行审批,真正实现业务管理、流程管理上的分离,从而大大提成企业的运作效率。

2.NC业务单据使用流程的场景

业务条线 具体场景
人事行政 会议管理 会议室申请
调薪申请 员工调薪申请
资金财务 费用报销 员工费用报销
资产购置 固定资产的采购
合同管理 合同审批 合同签订的审批流程
合同修订 合同变更的审批流程
付款管理 付款申请 合同付款流程
其他处理 政府保证金 政府保证金支付流程

以具体的某一类应用为例,其不同的应用场景如下所示:

业务系统 具体场景 流程模型
合同管理系统 付款申请流程 软装工程保修质保金
工程质保金支付审批流程
工程合同(建筑工程总包合同)
专业分包合同(房产发包)
勘察工程合同、软装工程承揽协议
建设工程委托监理合同
信报箱制作安装工程合同
营销合同(制作类)
机电工程设计合同、消防设计合同、照明设计合同、供电设计合同、弱电设计合同等
公关类合同
报批报建类合同(含其他报建)
机电类报建、检测合同
检测类合同
营销合同(销售代理、分销合同)

3.BPM端的审批表单展示

NC存在各种业务单据,如:工程合同单据、费用申请合同。录入完成后,这些单据需要在集团内各部门相关负责人进行审批,可以PC端审批、手机端审批。一般来说,在NC或其他业务系统中进行单据录入时,会有比较多的数据,而不同业务的审批人员不需要过多关注一些无用的信息,而只需要关心其核心的业务信息即可。如成本工程师在审批工程合同时,就主要关心这个合同项的明细部分是否合符项目的需求及成本要求。其他信息不过多关注。

1_1_12_2_1

因此BPM端的表单信息与NC端的表单信息展示就会有不同的方式,目前我们提供的方案可以在NC上开发一个补丁,通过在NC上的表单展示模板,通过勾选需要在审批时需要展示的字段,形成录单启动流程时需要的JSON数据串,其推送到BPM端 ,BPM端根据配置的模板接收这些JSON数据,并且展示给对应的审批人员进行查看即可:

其展示的原理如下:

form-gen

 

BPM接收的NC表单JSON格式如下:

form-json

表单的模板

fangchanghetong

表单的权限数据的配置

form-right

最终生成以下审批界面:

fangchan3

 

同样,在BPM平台上通过配置手机表单,可生成手机表单上的审批界面,其解析原理跟PC表单一样,用户只需要配置对应的手机模板即可,如下图所示:

mobile_form

mobile1

 

【说明】

为了实现审批的更清楚处理,一般来说,把审批明细的关键信息以附件的形式

4.BPM与NC数据交互

jsaas_nc

我们目标是把NC作为业务单据的处理中心,把JSAAS作为BPM的流程审批中心,他们之间则通过Spring MVC Restful Web Service(JSON)实现数据交互。

注意:NC单据的很多数据及其档案类型(数据字典)数据比较多,一般是放在NC端。BPM端不需要进行业务数据存储,但在审批时,需要把关键的业务数据显示给审批人员,以支持其进行业务的决策。

接口开发

BPM提供的接口有:

  • 接收NC的数据JSON并且启动业务流程实例
  • 更新审批表单的JSON数据
  • 作废流程实例的接口

BPM回调NC的接口有:

  • 流程启动时回调NC接口锁定单据状态为提交态
  • 流程驳回发起人时回调NC的接口把单据状态改为自由态
  • 流程审批通过结束时调用NC的接口实现单据的状态改为通过。

如何在BPM中配置调用NC的接口,BPM中提供了不同的流程事件配置,可以调用外部的接口:

事件触发配置

formScript

BPM提供多种事件的脚本入口 :

  • 流程启动事件
  • 流程完成事件
  • 流程取消事件
  • 流程任务创建事件
  • 流程任务完成事件
  • 任务人员指派事件

通过不同的事件,我们可以在流程审批的过程中,可以调用外部或其他系统的事件,并且同时推送流程审批过程上的相关数据。

一般来说,我们都在这相应的位置上配置好相对的脚本库,以实现对应的外部功能调用,如:

script-libs_min

BPM会提供一些常用的上下文变量环境,以实现在脚本环境中可以拿到所有的审批表单的数据,同时通过Http/JMS/MAIL/FTP/JDBC等多种协议手段实现数据推送。这里可以扩展更多的可视化配置,通过Groovy脚本实现强大的数据交互功能,但注意的是,这里有事务的处理问题,一般来说是流程会根据调用脚本抛出的异常进行回滚。

5.组织架构及单点登录

要实现单点登录,首先需要统一平台的用户账号,甚至其组织架构,JSAAS平台提供两种方案:

BPM的用户组织架构实现接口,如大部分企业其内部的启用均是来自集团内的统一用户中心进行用户读取(如从AD域读取)

用户组织架构通过BPM平台上来进行设置,总体上来说,平台内的组织架构分为三种实体类型,用户、用户组、关系。通过它来描述不同的用户组织架构。

组织架构管理

sysOrgMgr

用户关系管理(如汇报)

org_reportline

user-reportline

通过这种灵活的配置关系,比较容易实现审批人员的配置。

6.统一审批门户

当实现了单点登录后,可以把集团内部的所有审批事项放置BPM中心来完成,这块就是流程统一审批了。可以把平台所有事项放置审批门户上,当用户登录时,马上可以看到自己的待办事项,从而进行审批即可。审批门户一般都是与企业内部的EIP一般是同一套东西,只是在上面增加一个审批入口而已,如:

portal_index

portal_index2

 

 

7.审批附件

附件的上传及展示

在BPM审批过程中,一些NC单据审批需要依赖大量的线下纸质材料的扫描件,以辅助审批人员进行单据核审时,可以有效进行审核,这时就需要在审批过程中上传附件及展示附件。JSAAS的表单设计器中可提供附件的控件,用户只需要在需要上传附件的单据中插件该控件即可。支持Office文档、图片、PDF文件类型,在审批过程上,上传如下所示:

file-upload

在审批展示时,其展示如下

pdf_previewdoc-preview_s

附件的存储

关于审批附件的存储,需要根据平台的用户的审批量,从而决定是否采用单独的文件服务器来进行存储,对于一般的审批量,如每月的文件附件量小于1G的,可以与WEB服务器共用,对于量大的,可以使用单独的文件服务器。而NC中若需要使用查看NC单据的图片,方案有:

file_sol1

  • NC应用作改造,把附件存放在统一的文件服务器上
  • 提交业务表单时,把其附件的数据以文件路径及名称与业务数据一起传过来
  • BPM直接获得路径即可以读取该附件

另一方案,NC不存附件,当查看审批及附件依据时,则通过BPM对应的审批单据来查看,其方案如下所示:

file_sol2

  • BPM与NC附件是同一份,数据一致性好
  • BPM不需要任二次开发,提供二次开发接口
  • NC只需要维护审批表单ID

更多了解咨询,项目外包,项目选型了解,咨询1361783075

转载于:https://my.oschina.net/u/3391161/blog/1551159

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/choutiandi0258/article/details/100946164

智能推荐

Win\Linux 双系统,如何删除linux的grub引导_双系统删除grub_最爱彩虹糖的博客-程序员秘密

前言之前在实验室电脑上装了一个ubuntu系统,当时为了方便,选择了linux的grub引导,现在windows上的磁盘空间有点不足,想要把这个linux系统删除了。这就有了困难,如果将之前分配给linux的磁盘快删除并重新新建卷的话,会导致开机之后无法进入任何一个系统,因为我之前装系统时使用的是linux的grub引导,因此,如果想要还原至windows系统,就需要修复MBR引导,再删除linux

n个集合的交集 并集关系_n个集合的并集怎么表示_melo_fang的博客-程序员秘密

最近刷CODEWARS遇到一道题,特地找了下集合相关的知识,记录下。I(AUB) = I(A) + I(B) - I(AnB)I(AUBUC) = I(A) + I(B) + I(C) - (I(AnB)+I(AnC)+I(BnC)) + I(AnBnC)n个集合的并集(容斥原理公式)n(A1∪A2∪...∪Am)=∑n(Ai)1≤i≤m  -   ∑n(Ai∩Aj)1≤i≤j≤m + ∑n(Ai...

eclipse vue插件_人间璀璨的博客-程序员秘密

eclipse vue插件Eclipse 可以使用 CodeMix 插件 开发 Vue.js。我们可以安装此插件进行vue的开发。Help–>Eclipse Marketplace --> 搜索vue重启完成后 打开 Window – > Preferences – > CodeMix – >Editors – >Preferred Editors ,勾选上 vue自此便可以进行vue开发...

UE4小技巧(一)让C++动态生成的物体带有细节面板_ue4 c++生成物体_永远的小白虾的博客-程序员秘密

最近在写一个功能的时候,遇到了一个问题,就是使用C++来动态生成一个USphereComponent组件,当使用蓝图来继承该C++类时,却发现该USphereComponent组件,没有细节面板(无法修改其中的东西)。生成的代码如下:CollisionComp = CreateDefaultSubobject<USphereComponent>(TEXT("SphereComp"));方法一:只需要在下面添加一句RootComponent = CollisionComp;将该组件

数据库——数据更新_数据库识别最新更新数据_刘佳宇-Kevin的博客-程序员秘密

数据库更新操作有三种:在表中添加若干行数据、修改表中的数据和删除表中的若干行数据。SQL中有三类相应的语句,分别是插入数据(INSERT)、修改数据(UPDATE)、删除数据(DELETE)插入数据INSERT···VALUES 插入单行或多行元组数据例:向数据库mysql_test的表customers中插入这样一行完整数据:(901,张三,F,北京市,朝阳区)。INSERT...

【Opencv&Cpp】17 图像数据归一化_数字图像尺度归一化_怎么回事呐的博客-程序员秘密

何为归一化在机器学习领域中,不同评价指标(即特征向量中的不同特征就是所述的不同评价指标)往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。其中,最典型的就是数据的归一化处理。在深度学习中,对数据进行归一化是为了将特征值尺度调整到相近的范围。简而言之,归一化的目的就是使得预处理的数据被限定在一定的范围内(比如[0,1]或者[-1,1

随便推点

经典C语言从入门到入坑必学最简单的代码_c语言入门代码_IT男超哥编程中的博客-程序员秘密

C语言基础代码合集,学习最基础的语法,从入门到入坑必备代码练习。

grep 命令使用 -rin_grep rin_sxlwzl的博客-程序员秘密

zz :http://www.cppblog.com/jb8164/archive/2007/12/21/39187.html使用grep搜索文件内容——快捷、方便(1) 在当前目录下的所有文件的文件内容中查找哪个文件的内容中有findcontents(大小写不敏感,列出findcontents所在文件的所在行)——适合于当前目录下的文件及目录数目比较少,如果查找后列出内容过多

[转] 程序员的笑话_iteye_11687的博客-程序员秘密

刹车失灵 有一个物理学家,工程师和一个程序员驾驶着一辆汽车行驶在阿尔卑斯山脉上,在下山的时候,忽然,汽车的刹车失灵了,汽车无法控制地向下冲去,眼看前面就是一个悬崖峭壁,但是很幸运的是在这个悬崖的前面有一些小树让他们的汽车停了下来,而没有掉下山去。三个惊魂未定地从车里爬了出来。 物理学家说,“我觉得我们应该建立一个模型来模拟在下山过程中刹车片在高温情况下失灵的情形”。 工程师说,“我在车的后备厢来有...

串口的空闲中断+DMA接收(附F4代码)_串口空闲中断_Strugglingler的博客-程序员秘密

传统串口接受与发送:串口接受一个很长的帧,接受帧时依靠串口中断每次只能传输8位,传一个帧要进入好多次中断,每次进入中断都要判断是否接收完毕。DMA串口接收与发送:1,电脑通过串口1给STM32F407芯片发送数据(不定长,按照645格式来),芯片根据串口接收中断接收到数据后,通过DMA将数据存储在内存。当检测到数据接受完毕,产生接收完成标志位置位。当407检测到这个中断标志位后从TX端向电脑发送这段数据。任务拆分:1.检测到key0按下,由TX发送已经存在存储器的数据到电脑(用DMA存储器-&gt

插值法_Auraros的博客-程序员秘密

1. 拉格朗日插值多项式前提:ωn+1(x)=(x−x0)(x−x1)...(x−xn)\omega_{n+1}(x) = (x-x_0)(x-x_1)...(x-x_n)ωn+1​(x)=(x−x0​)(x−x1​)...(x−xn​)ωn+1′(xk)=(xk−x0)...(xk−xk−1)(xk−xk+1)...(xk−xn)\omega_{n+1}^{'}(x_k) = (x_k-x...

dma-buf 由浅入深(六) —— begin / end cpu_access_dma_buf_何小龙的博客-程序员秘密

本篇我们将一起来学习 dma-buf 用于 Cache 同步操作的 begin_cpu_access 和 end_cpu_access 这两个接口。之所以将这两个接口放在第六篇讲解,是因为它们在内核中的使用频率并不高,只有在特殊场景下才派的上用场。

推荐文章

热门文章

相关标签