【问题标题】:How copy selected property (not all) from camel to activiti如何将选定的属性(不是全部)从骆驼复制到 activiti
【发布时间】:2013-04-11 17:08:16
【问题描述】:

骆驼场景:

  • 读取文件
  • 做一些事情,例如在数据库中存储内容
  • 运行 activiti 进程并传递上一步的变量

RouteBuilder:

from("file:/home/work/Inbox")
.to("bean:sourceFileService?method=storeFile")
.to("activiti:Receive?copyVariablesFromProperties=true")

在调用 bean sourceFileService 属性“sourceFileId”期间已设置。 这个变量应该作为变量传递给进程接收。

如果我不使用 copyVariablesFromProperties,则不会在进程中设置任何变量。 另一方面,当copyVariablesFromProperties=true 然后骆驼尝试传递所有属性并发生异常:

ActivitiException: 找不到能够序列化 GenericFile 的变量类型

(因为其中一个属性是 object 表示读取文件,所以还有 7 个其他不需要的属性)

如何仅将选定的属性传递给 activiti 端点或骆驼任何下一个“到”?

【问题讨论】:

    标签: variables apache-camel activiti


    【解决方案1】:

    更改sourceFileServicestoreFile方法签名如下;

    public String storeFile(... your other params, @OutHeaders Map headers) {
           ...
           headers.put("sourceFileId", "32132132");
           ....
    }
    

    您可以在activiti 端点中访问集合sourceFileId

    【讨论】:

    • 我有' public void storeFile(Exchange exchange) { ... exchange.setProperty("sourceFileId", "1234"); ... } ' 还行吧。需要知道如何将该属性作为变量传递给 activiti 进程 '.to("activiti:Receive)'
    【解决方案2】:

    我发现没有必要使用 copyVariablesFromProperties。

    .setBody().properties()
    .to("activiti:Receive")
    

    当在正文中时,使用该地图的 activiti 进程的 Map 骆驼集变量。 但出于同样的原因,我仍然会遇到异常(传递不需要的、不可序列化的对象)。

    我找到的唯一解决方案是

    from("file:/home/work/Inbox")
    .to("bean:sourceFileService?method=storeFile")
    .setBody(method(Helper.class))
    .to("activiti:Receive")
    

    在哪里

    public class Helper {
        @Handler
        public Map getProcessVariables(Exchange exchange) {
            Map<String, Object> variables = new HashMap<String, Object>();
            variables.put("sourceFileId, exchange.getProperty("sourceFileId"));
            return variables;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-16
      • 2014-05-13
      相关资源
      最近更新 更多