ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SAP NetWeaver BPM流程配置实战:从建模到部署的完整链路

SAP NetWeaver BPM流程配置实战:从建模到部署的完整链路 简介一份面向SAP顾问与开发人员的流程配置手册基于SAP NetWeaver平台系统讲解BPM流程建模、部署、执行与监控的完整配置路径可帮助企业通过流程自动化提升业务效率并降低成本适用于生产、供应链、财务等典型应用场景。资源包内为单个PDF文件体积约2.44MB内容除基础配置说明外还包含一份基于SAP NetWeaver Composition Environment 7.2的How-To指南重点演示如何通过SOA配置调用RFC和Web Services将外部服务无缝接入BPM流程。其属于SAP官方技术文档风格权威性较强已有230人下载学习。读者可通过手册了解流程引擎、流程监控器、建模工具及集成层的协同方式并结合具体调用示例快速上手特别适合正在实施SAP BPM项目或需要加深流程配置理解的技术人员。整份资源体量紧凑便于速查与随身参考。1. 拿到《流程配置手册》后先搞清楚它在整个实施链路里的位置干SAP实施的都知道NetWeaver BPM这套东西最不缺的就是文档缺的是能直接照做的配置路径。这份《SAP NetWeaver BPM流程配置手册.pdf》的价值在于它把从NWDSNetWeaver Developer Studio里的流程建模到部署到NWANetWeaver Administrator运行时再到后端系统连接这一整条链路串起来了。比起SAP Help Portal上按组件拆散的官方文档它更像一份「按顺序做完就能跑」的现场笔记。适合刚接手BPM开发、或者要从头搭一套流程平台的顾问也适合被项目上「流程能部署但跑不通」折磨的实施人员快速定位问题。配置BPM流程这件事说穿了就是三件事流程模型能不能正确生成Java骨架部署后组件之间引用对不对得上运行时需要的业务参数有没有喂到。手册讲的配置流程全部围绕这三点展开。先把这几条主线攥住下面每一步才有方向。2. 环境与工程准备NWDS里的项目结构决定了后面配置是否顺手2.1 先确认你拿到的工程文件和手册描述的版本属不属于同一代NetWeaver BPM在7.3之后经历了比较大的变化老一批基于NWDS 7.31的工程和新版CE 7.5、SAP BTPBusiness Technology Platform上面的模型结构并不完全兼容。我经手的项目里最多的翻车现场就是拿旧版工程导入新版NWDS一编译出一堆兼容性报错。拿到手册后第一件事不是打开文档看配置步骤而是核对你自己手上的NWDS版本。打开NWDS的About页面找到平台版本号然后在NWA配置管理里看NetWeaver版本。版本不一致时优先在NWDS中做一次「Clean Project」再构建让工具自动升级模型描述# 以NWDS工作空间为根目录清理旧的编译产物 # Windows命令窗口执行 cd C:\Users\你的用户名\.eclipse\你的工作空间 # 在NWDS里执行Project - Clean - Clean all projects等价于手工删除 rm -rf /workspace/*/build/classes rm -rf /workspace/*/.apt_generated这段清理脚本对应的是NWDS里最基础的「Clean Project」操作。很多人配置流程时遇到「服务器上模型版本过旧」的提示根源并不是服务器配置错了而是本地上传到服务器之前的构建产物里混了旧版本。代码里被清理的build/classes目录是Java编译结果的默认输出位置.apt_generated是注解处理器自动生成的Java源码目录SAP的流程模型依赖注解生成代码这两个目录残留旧内容会让NWDS的增量编译判断失误。2.2 配置目标运行时从「本地测试」切到「服务器部署」的切换点NetWeaver BPM的流程工程里有多个运行目标配置默认是本地模拟运行。如果你想在NWD里直接调试BPMN流程本地模拟够用但要让SAP NetWeaver Application Server JavaAS Java真正加载并执行流程必须把部署目标切到服务器的配置上。把流程工程的后缀名打开来看工程根目录下一般有一个deployment文件夹里面存着.dcdef部署描述符文件。这个文件定义了部署单元名称、所属软件组件版本、以及目标服务器实例信息。我一般按下边的参数核对部署配置配置项推荐值说明Software Component Version工程对应的SCV名称必须和NWA中已有的SCV一致不一致时部署会被拒Deployment Unit工程名称或ESR中的模块名这个名称是NWA中应用列表里显示的名字Target RuntimeSAP NW AS Java 7.x手册通常默认是7.31以上版本J2EE Engine Instance实际服务器实例号在NWA的System Info里可以查到这里要特别说一点不要用NWDS默认生成的Deployment Descriptor直接部署。因为默认描述符里目标运行环境端口往往指向局部嵌入服务器到了生产环境里根本无法连接。2.3 环境校验清单部署前那十分钟值得认真花在真正把流程工程上传到服务器之前Collections of Environment Checks里有几项是必查的。这些内容不写在大篇配置手册最前面但它的地位比后面任何一步都关键。需要确认的事项包括AS Java实例可用内存。BPM流程运行时内部有工作项队列每个流程实例大概会占额外的堆内存。如果服务器堆内存低于2GB我建议不要同时部署超过三个流程应用。JDK位数与NWDS里的编译级别。Java版本不一致时AS Java上常会在启动时报NoClassDefFoundError这类问题在控制台上看进程没有异常但流程实例一直挂在Starting状态。数据库连接池状态。BPM流程运行时的持久化依赖JPA连接池满的时候流程实例在Wait状态卡住这个在NWA里查不到直观错误只能在/SystemOut日志里看到Connection is not available的警告。如果以上三项都验证通过再往后走流程配置就有基础了。3. 建模配置才是手册的核心从BPMN图到运行组件的映射3.1 BPMN模型里的每一个元素最终都要落成NetWeaver BPM运行时里的一个具体组件很多人误以为流程配置就是画流程图把BPMN图画完导出就能跑。但NetWeaver BPM的配置链路里贴图只是第一步真正做配置的是那张图背后的数据映射。手动配置时每一个Activity、Event、Gateway都对应到DCDevelopment Component里的一个Java类或Web Service调用。在NWDS的Development Infrastructure视图里BPMN编辑器右侧有一个Tab叫Properties。点开每个节点的Implementation属性你会看到手册里最频繁出现的几个配置对象Automation Activity自动执行的服务对应Java Bean或Web ServiceManual Activity人工任务对应NWA中的用户任务列表Send/Receive Task交互节点对应ESR里的消息接口配置自动化活动时最常见的方式是在BPMN编辑器里右击活动节点选择Implementation→Java然后在弹出的对话框里搜索处理类。处理类必须实现com.sap.core.connectivity.api.authentication.AuthenticationHeaderProvider或者com.sap.caf.eu.gp.core.api.IGPProcessingElement接口之一否则运行时根本无法识别。3.2 网关与条件表达式配置时最容易忽略的隐性参数网关Gateway的配置是手册里容易被跳过的部分。排他网关Exclusive Gateway需要为每一条出口连线配置条件表达式这个表达式遵循的是简化后的Java语法运行时会通过MVELMVFLEX Expression Language解析。我一般用这样的写法给网关分支配置条件# 条件表达式写在Gateway出口连线的Condition属性里举例 userContext.userName admin # 或者按流程变量判断 input.orderAmount 1000这后面有隐藏的坑表达式里引用的变量必须提前在流程上下文中定义好。很多人在NWA部署流程后测试流程走到网关就报MVEL compile error回头检查模型发现变量名写错了或者变量属于局部作用域而不是整个流程实例共享的上下文。配置网关之前先去Variables选项卡里把流程变量列表过一遍不被任何活动节点单独绑定。3.3 Correlation属性让异步流程回执能找到正确的实例NetWeaver BPM配置里另一个权重很高的部分是Correlation。当流程发起后通过异步接口等待业务系统的回调时回调报文到达后要能正确匹配到那个流程实例靠的就是Correlation属性。手册里一般会在「持久化流程」一节专门讲。配置Correlation的步骤很固定在BPMN模型的Message Throw Event上选择Configure Correlation新增一个Correlation Key定义它的名称例如orderNumberKey设置Key的取值来源可以是流程变量的值也可以是消息负载里的某个字段路径判断规则不复杂回调报文里的值必须和发起时的值一致。很多项目上回调到达后流程无法继续是因为发起时用的是内部订单号回调时传回来的是外部业务单号两边对不上。4. 部署与运行时配置把流程模型变成AS Java上能跑的应用程序4.1 部署到AS Java从NWDS的导出与上传在NWDS中右键点击流程工程选择Deploy。这时NWDS会触发构建把整个工程打成.sda文件并上传到Target Runtime。如果只是想拿到部署包也可以选择Export→Deployment Unit手动拿到Bundle文件。NWA上的部署地址通常是以下形式http://主机IP:端口/nwa选择Deployment→Deploy上传刚才生成的Deployment Unit归档文件。这一步有几个注意事项在上传后NWA会显示这个部署单元包含的模块列表。一定要检查Module Info里的内容确认Business Process模块是Started状态如果不是需要手动进入Object Management里的模块管理页面启动它。4.2 端点和绑定配置流程活动与服务地址之间的桥梁部署成功后在NWA里进入Configuration Management→Process Modeling→Process Configuration这会打开一个针对具体流程的配置界面。在这里需要为每个Process Component配置Endpoint。这里常见的有三种配置方式HTTP Endpoint人工任务列表和基于HTTP的服务调用Business Service Endpoint内部配置的Service Group引用RFC Endpoint连接后端ECC系统的RFC目的地配置RFC端点时参数需要手动指定到NWA的Connectivity→RFC Destinations中的Destination名称。注意流程配置里的RFC Destination名称必须与NWA里创建的RFC目的地名称完全一致大小写敏感。不一致时流程执行到这里会直接抛JCoException错误信息指向RFC Lookup失败。4.3 用户映射与权限让任务审批流转到正确的人头上人工任务的配置总在部署后阶段暴露问题。在BPM流程里人工任务节点必须配置参与者。在运行时配置里打开任务定义在User Assignment中设置候选用户或候选组。常见的配置方式是调用帮助类// 在人工任务的Java处理类中动态设置候选组 import com.sap.caf.eu.gp.api.IParticipant; import com.sap.caf.eu.gp.api.IParticipantSet; // 任务上下文参数taskContext访问当前工作项 IParticipantSet participants taskContext.getParticipants(); // 按组织单元设置候选用户 participants.add(IParticipant.byUser(ZHANGSAN)); // 或按角色添加候选组 participants.add(IParticipant.byRole(ERP_APPROVER));注意byUser和byRole所对应的是NWA里User ManagementUMA中配置的用户ID和角色名。这里没有「生效中」状态的延迟配置完立即对后续新任务生效但已经生成的老任务不会重新计算参与者。存量任务想改审批人只能在任务监视器里手动转移。5. 流程配置的常见问题排查部署成功和流程能用是两回事5.1 流程部署后在NWA里显示Started但没有新任务生成现象流程部署无误通过NWA启动流程日志里没有任何异常但审批人的任务列表始终是空的。原因绝大多数情况下是流程实例在启动后卡在一个自动活动上且这个自动活动没有异常抛出。打开Process Management→Process Repository查看这个流程实例当前状态如果停在Running且不往前走十有八九是自动活动引用的服务端点没有正确绑定调用的服务地址无法连通。解决回到Process Configuration逐个检查自动活动的Endpoint配置指向。在服务器上用curl或Postman直接请求该HTTP端点确认服务本身能通。如果服务地址本身没问题再检查该活动是否需要人工发起流程的Start Event如果配置为Message Start则流程不会被定时器自动触发需要外部系统传入启动消息。5.2 AS Java重启后流程实例全部中断这是最伤的一次经历。服务器更新补丁后重启生产环境的十几个流程实例全部停在Suspended状态审批工作直接停摆。原因流程运行时持久化配置里Recovery Option参数设置为None。NetWeaver BPM的默认配置里非持久化的流程实例在服务器重启后无法恢复。解决这一步需要改服务器级别的持久化配置。在NWA→Process Server→General Configuration里把Recovery Option设置为Automatic。改完这个参数以后服务器重启时AS Java能根据数据库里的持久化标记把流程实例恢复到运行状态。这个配置项优先级最高部署包级别的配置是覆盖不了服务器级配置的。5.3 回调HTTP请求到达但流程实例不匹配现象外部业务系统发送回调HTTP请求NWA监控能看到入站消息但流程实例一直挂在接收节点上不往前推。原因Correlation Key绑定的字段路径写错。常见的是消息负载的JSON结构里嵌套层级较深配置时只写了一个字段名没有处理层级路径。由于NetWeaver BPM的Correlation表达式按XPath规则解析字段路径错误时不会报错只是匹配不到。解决在NWA里打开流程实例查实例详情中的Correlation值。如果Correlation值为空说明启动消息里没有提取到对应字段。把我自己的做法列给你们参考不要只填字段名填完整的路径表达式。举例如果回调消息负载结构为{order:{id:ABC123}}那么Correlation值表达式应写为/order/id。5.4 SSO配置后流程门户打开慢且偶发证书报错现象配置完AS Java的SSO集成后通过企业门户打开BPM任务浏览器偶尔报证书错误任务列表刷新一次明明很快反复刷新后响应越来越慢。原因这不是BPM本身的问题而是SSO安全会话管理端的线程满了。在AS Java上配置SPNego或SAML认证时登录票据存储区Ticket Cache清理频率过低。BPM任务列表每次刷新都会创建新的身份断言请求票据缓存里堆积的旧票据没有被及时清理导致认证处理线程阻塞。解决调整Java安全服务的票据缓存清理参数。在NWA进入Security→Security Provider找到登录模块的Ticket Cache设置把清理间隔从默认的7200秒下调到300秒并设置每个用户的票据记录上限。改完这一步刷新卡顿现象基本能解决。6. 验证配置是否正确的两种手段事务日志与JMeter压测脚本配置做完不等于流程能用。在交给业务测试之前我自己习惯做两步走验证先看事务级日志再做一次JMeter的并发测试。这一步不是为了取指标而是为了暴露前几章讲的配置问题。事务日志验证法在NWA中进入Process Management→Process Repository→Process Log。每运行一个流程实例这里就会留下一条包含活动节点时序的记录。重点检查前两个节点的时间点如果第一个活动节点耗时超过10秒起点多半在Endpoint连通性上如果流程已结束但日志显示Failed则要切到Error Log页签查看上下文中的异常堆栈。压力验证法如果是HTTP开头的人工任务或服务节点我用JMeter写一个代理录制脚本直接保存会话。这不是做全链路压测只是确认并发场景下系统稳定# 在JMeter的bin目录下启动代理服务器设置监听端口8080HTTP/HTTPS均采集 jmeter -t 流程并发验证.jmx -Jserver.rmi.ssl.disabletrue -n -l 结果报告.jtl上述命令中-t后接测试计划文件-Jserver.rmi.ssl.disabletrue关闭SSL-n表示非GUI模式-l输出测试结果到JTL文件。通过脚本录制的步骤回放后看HTTP状态码和响应时间。如果某个节点返回401或403先查该活动的认证配置如果返回500再往下翻服务器日志。我的习惯是每一个流程配置改完后都要跑一份完整的流程实例日志留档然后手动执行一遍该流程的完整路径。留下日志是为了下次做变更后能对照出模型的差异手动执行是为了确认配置在真实数据下没有异常。包括网关分支、Correlation匹配、人工任务审批这些环节的业务数据每次都不同光靠一次测试通过说明不了问题。这套配置非常讲究全局性我在项目上吃过Correlation字段写错的亏也因为在重启后没调Recovery Option挂了生产的十几个审批流。希望这一路讲下来的细节能让你在配置时少走一段我当时走过的弯路也希望帮到你。本文还有配套的精品资源点击获取
返回列表