使用WSO2 BPS 3.6.0 - 是否有(标准)方法更新已经运行的实例中的实例变量?
背后的原因是 - 客户端在进程初始化时传递了错误数据,客户端可能会修复其数据,但流程实例会记住错误的值。
我相信我仍然可以更新数据库中的数据,但我不希望看到进程管理员搞乱数据库
编辑: 我正在使用BPEL引擎,我的想法是更新变量而不是来自流程设计,而是作为纠正措施(管理控制台?api?)
感谢您的所有想法。
答案 0 :(得分:0)
您正在根据客户端的请求在进程初始化期间设置实例变量。
根据您的要求,需要为请求检索变量。您可以通过使用执行实体来读取数据而不是在进程初始化期间设置的实例变量来执行此操作。
参考下面的例子:
public class SampleTask implements JavaDelegate {
public void execute(DelegateExecution execution) throws Exception {
String userId = execution.getVariable("userId");
//perform your logic here
}
}
如果你想继续使用实例变量,我建议你在流程执行期间更改实例变量。
public class SampleTask implements JavaDelegate {
private String userId;
public void execute(DelegateExecution execution) throws Exception {
String newUserId = execution.getVariable("userId");
setUserId(newUserId);
//perform your logic here
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserId() {
return userId;
}
}