2016-12-07 26 views
1

我试图让flowfile的属性在我的python脚本属性,我也做了以下内容:使用FlowFile在executeScript NIFI蟒蛇

class TransformCallback(StreamCallback): 

    def __init__(self): 
     pass 

    def process(self, inputStream, outputStream): 
     try: 
      # Read input FlowFile content 
      input_text = IOUtils.toString(inputStream, StandardCharsets.UTF_8) 
      input_obj = json.loads(input_text) 

,但我怎么可以访问我的flowfile的进程属性方法 ?

回答

2

它们不会立即在process方法中可用,除非您执行诸如将FlowFile的引用传递到TransformCallback构造函数之类的东西。另一种选择是将读取和写入分开(因为您正在使用IOUtils.toString()一次性读取整个内容)分成两个独立的调用,然后您可以在process()方法之外进行属性操作。顺便说一句,如果你只需要将整个内容读作一个字符串,就不需要StreamCallback或InputStreamCallback,你可以使用session.read(flowFile),它返回一个InputStream(而不是执行一个提供回调)。您可以调用IOUtils.toString()(并且不要忘记关闭它),从而避免回调,并允许使用当前的FlowFile引用(以及getAttribute()或getAttributes()方便地访问流文件属性。方法)。

+0

第一个解决方案适用于我谢谢 – azelix