You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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应用后端,前端只调用自己的后端接口:

  1. 在Web应用后端新增一个接口(比如/api/trigger-bp)
  2. 后端接口内部调用Blue Prism的Web服务,处理认证和参数传递
  3. 前端按钮只需要调用这个内部接口:
<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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 16:33:10