You can easily concatenate the operators.
You invoke each operator by calling GPF.createProduct('OperatorName', parameter, source_product)
. This will give you a new product which you can use as source product for the next operator.
This is some sample code:
HashMap = snappy.jpy.get_type('java.util.HashMap')
snappy.GPF.getDefaultInstance().getOperatorSpiRegistry().loadOperatorSpis()
source = snappy.ProductIO.readProduct('G:/EOData/Meris/RR/MER_RR__1PNBCG20050709_101121_000001802038_00466_17554_0001.N1')
parameters = HashMap()
parameters.put('computeCHL', False)
result1 = snappy.GPF.createProduct('FubWeWOp', parameters, source)
parameters = HashMap()
parameters.put('otherParam', 3.0)
result2 = snappy.GPF.createProduct('Op2', parameters, result1 )
.... # more operators here
snappy.ProductIO.writeProduct(result2, 'G:/EOData/temp/Meris_wew.dim', 'BEAM-DIMAP')
One word regarding the NDVI_OP. It is an implementation of an operator. You might understand it better if you read the doc provided at https://senbox.atlassian.net/wiki/display/SNAP/How+to+write+a+processor+in+Python.