Executando loop pelos nós

É possível usar um loop for para fazer loop por todos os nós em um fluxo. Por exemplo, os dois exemplos de script a seguir loop através de todos os nós e alterar nomes de campo em qualquer nós Filtro para maiúsculas.

É possível usar esse script em qualquer fluxo que contenha um nó Filtro, mesmo que nenhum campo seja realmente filtrado. Basta adicionar um nó Filtro que passa todos os campos a fim de alterar nomes de campo para maiúsculas em toda a diretoria.

# Alternative 1: using the data model nameIterator() function
stream = modeler.script.stream()
for node in stream.iterator():
    if (node.getTypeName() == "filter"):
        # nameIterator() returns the field names
        for field in node.getInputDataModel().nameIterator():
            newname = field.upper()
            node.setKeyedPropertyValue("new_name", field, newname)
# Alternative 2: using the data model iterator() function
stream = modeler.script.stream()
for node in stream.iterator():
    if (node.getTypeName() == "filter"):
        # iterator() returns the field objects so we need
        # to call getColumnName() to get the name
        for field in node.getInputDataModel().iterator():
            newname = field.getColumnName().upper()
            node.setKeyedPropertyValue("new_name", field.getColumnName(), newname)

O script faz loop por todos os nós no fluxo atual e verifica se cada nó é um Filtro. Se sim, o script se lota através de cada campo no nó e usa a função field.upper() ou field.getColumnName().upper() para alterar o nome para maiússola.