如何通过Web应用按钮调用Web服务触发Blue Prism流程
实现Web按钮调用Blue Prism Web服务的步骤
1. 先理清楚Blue Prism Web服务的核心信息
- 先拿到你暴露的Blue Prism Web服务的WSDL地址或REST接口文档,明确三个关键信息:请求方法(POST/GET)、必填参数、认证方式(比如Basic Auth、API Key)
- 先手动验证接口可用性:用Postman或curl测试,确保能正常触发流程,比如REST接口的测试命令:
curl -X POST "http://你的BluePrism服务器地址:端口/webservice/你的流程名" \ -H "Content-Type: application/json" \ -H "Authorization: Basic 这里填Base64编码的账号密码" \ -d '{"参数1": "测试值1", "参数2": "测试值2"}'
2. 在现有Web应用中添加触发按钮
直接前端调用(适合无敏感信息场景)
给页面加按钮,用JavaScript绑定点击事件,通过AJAX调用Web服务:
<button id="startBPProcess">启动自动化流程</button> <script> document.getElementById('startBPProcess').addEventListener('click', async () => { const btn = event.target; btn.disabled = true; btn.textContent = "正在启动..."; try { const res = await fetch('http://你的BluePrism服务器地址:端口/webservice/你的流程名', { method: 'POST', headers: { 'Content-Type': 'application/json', // 如果需要Basic认证,这里加头信息 'Authorization': 'Basic ' + btoa('你的账号:你的密码') }, body: JSON.stringify({ // 替换成Blue Prism流程要求的参数 流程参数A: "用户输入的内容", 流程参数B: "预设固定值" }) }); if (!res.ok) throw new Error(`请求失败: ${res.statusText}`); alert("流程已成功启动!"); } catch (err) { alert(`启动失败: ${err.message}`); } finally { btn.disabled = false; btn.textContent = "启动自动化流程"; } }); </script>
注意:如果Web应用和Blue Prism服务不在同一域名,会有跨域问题,要么在Blue Prism服务端配置CORS允许你的Web应用域名,要么用下面的后端中转方式。
后端中转调用(更安全,推荐)
把认证信息和跨域逻辑放在Web应用后端,前端只调用自己的后端接口:
- 在Web应用后端新增一个接口(比如
/api/trigger-bp) - 后端接口内部调用Blue Prism的Web服务,处理认证和参数传递
- 前端按钮只需要调用这个内部接口:
<button id="startBPProcess">启动自动化流程</button> <script> document.getElementById('startBPProcess').addEventListener('click', async () => { const btn = event.target; btn.disabled = true; btn.textContent = "正在启动..."; try { const res = await fetch('/api/trigger-bp', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ 用户输入: "用户需要传递的内容" }) }); if (!res.ok) throw new Error(`请求失败: ${res.statusText}`); alert("流程已成功启动!"); } catch (err) { alert(`启动失败: ${err.message}`); } finally { btn.disabled = false; btn.textContent = "启动自动化流程"; } }); </script>
后端示例(Java Spring Boot):
@RestController @RequestMapping("/api") public class BPTriggerController { @PostMapping("/trigger-bp") public ResponseEntity<String> triggerBP(@RequestBody Map<String, String> request) { String bpServiceUrl = "http://你的BluePrism服务器地址:端口/webservice/你的流程名"; RestTemplate restTemplate = new RestTemplate(); // 设置认证头 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); String authStr = "你的BluePrism账号:你的密码"; String encodedAuth = Base64.getEncoder().encodeToString(authStr.getBytes()); headers.set("Authorization", "Basic " + encodedAuth); // 构造传递给Blue Prism的参数 Map<String, String> bpParams = new HashMap<>(); bpParams.put("流程参数A", request.get("用户输入")); HttpEntity<Map<String, String>> requestEntity = new HttpEntity<>(bpParams, headers); try { restTemplate.postForEntity(bpServiceUrl, requestEntity, String.class); return ResponseEntity.ok("流程启动成功"); } catch (Exception e) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("启动失败: " + e.getMessage()); } } }
3. 给终端用户的体验优化
- 按钮点击后立刻禁用并显示“处理中”,防止重复点击
- 提示语用大白话,比如“流程已启动,稍后可查看结果”,别用技术术语
- 如果流程是异步执行的,可以后续通过轮询或WebSocket给用户推送状态更新
内容的提问来源于stack exchange,提问作者motodev
相关产品推荐
相关产品推荐

