Free Trial

Fórum

Acionando workflow através de outro programa

GabrielStlz
Asteroide

Pessoal,

 

Estou automatizando algumas rotinas, e meu objetivo é criar um app utilizando o Python no qual todas as rotinas automatizadas estarão nele, e serão executadas com um clique...

 

Seria possível fazer isso com um workflow? Acionar o workflow através de um codigo em Python?

Se tiverem algum material ou exemplo que possa me ajudar

 

Obrigado!

8 RESPOSTAS 8
carlosteixeira
15 - Aurora
15 - Aurora

Bom dia @GabrielStlz 

 

Existem algumas formas de você fazer isso.

 

Uma delas é utilizando o RUN COMMAND, outra seria você utilizar as macros CREW (http://www.chaosreignswithin.com/p/macros.html). Nesse pacote você tem algumas ferramentas onde você ode encadear os workflows de acordo com a saída dele (sucesso ou não)

 

Com código Python provavelmente você vai precisar usar isso aqui https://help.alteryx.com/pt-br/current/designer/run-workflows-command-line

 

xemplo
Execute o aplicativo analítico contido na marca de caminho do fluxo de trabalho > de AppValues. xml.

AlteryxEngineCmd.exe MyWorkflow.yxmd

AlteryxEngineCmd.exe MyAnalyticApp.yxwz AppValues.xml

AlteryxEngineCmd.exe AppValues.xml

Valores de retorno de exemplo:

0-sucesso
1-existem avisos
2-erros existem
Para executar fluxos de trabalho através da linha de comando, adicione o caminho raiz Alteryx às variáveis do sistema Path no seu computador.

 

Atenção nesse passoem negrito, sem isso você pode ter problemas para executar

 

Espero que ajude.

 

Abraços

Carlos A Teixeira
marcusblackhill
12 - Quasar
12 - Quasar

Oi @GabrielStlz ! 

 

Já fiz algo nesse mesmo sentido no passado. Uma alternativa a excelente solução do nosso mestre @carlosteixeira , é o seguinte:

 

O fluxo alteryx nada mais é que um arquivo .XML que o alteryx compreende como suas configurações para rodar o fluxo. 

 

O que poder fazer é abrir seu fluxo em um bloco de notas para copiar todo o texto desse XML e no seu código python vc ter um passo onde cria um arquivo temporário com esse texto do XML e o executa. 

 

Depois dentro do seu código python mesmo, pode inclusive colocar para deletar esse arquivo temporário do fluxo e continuar com os processos que tiver planejado. 

 

Espero que ajude!

 

Não esqueça de marcar como solução a(s) resposta(s) que te atenderem!

 

Grande abraço 

marcusblackhill
12 - Quasar
12 - Quasar

Oi @GabrielStlz !

 

Antes não tive como olhar muito, mas veja se essa solução ajuda:

 

1. Abre o fluxo com o notepad para ver o xml do fluxo

Saqueador
marcusmontenegro_0-1618013541936.pngmarcusmontenegro_1-1618013593710.png

2. Usa esse código e cola o texto que pegou no notepad para dentro do arquivo que vai criar no fluxo como no exemplo. Não esquece de colocar o texto do xml entre 3 aspas duplas para ele entender linhas longas (""" """)

Saqueador
Código Python

import os

f= open("criar_fluxo.yxmd","w+")

f.write("""<?xml version="1.0"?>
<AlteryxDocument yxmdVer="2021.1">
<Nodes>
<Node ToolID="1">
<GuiSettings Plugin="AlteryxBasePluginsGui.TextInput.TextInput">
<Position x="66" y="114" />
</GuiSettings>
<Properties>
<Configuration>
<NumRows value="1" />
<Fields>
<Field name="teste" />
</Fields>
<Data>
<r>
<c>texto de teste</c>
</r>
</Data>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText />
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxTextInput" />
</Node>
<Node ToolID="2">
<GuiSettings Plugin="AlteryxBasePluginsGui.BrowseV2.BrowseV2">
<Position x="174" y="114" />
</GuiSettings>
<Properties>
<Configuration>
<Layout>
<View1>
<Hints>
<Table />
</Hints>
</View1>
</Layout>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText />
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxBrowseV2" />
</Node>
</Nodes>
<Connections>
<Connection>
<Origin ToolID="1" Connection="Output" />
<Destination ToolID="2" Connection="Input" />
</Connection>
</Connections>
<Properties>
<Memory default="True" />
<GlobalRecordLimit value="0" />
<TempFiles default="True" />
<Annotation on="True" includeToolName="False" />
<ConvErrorLimit value="10" />
<ConvErrorLimit_Stop value="False" />
<CancelOnError value="False" />
<DisableBrowse value="False" />
<EnablePerformanceProfiling value="False" />
<DisableAllOutput value="False" />
<ShowAllMacroMessages value="False" />
<ShowConnectionStatusIsOn value="True" />
<ShowConnectionStatusOnlyWhenRunning value="True" />
<ZoomLevel value="0" />
<LayoutType>Horizontal</LayoutType>
<MetaInfo>
<NameIsFileName value="True" />
<Name>fluxo_teste</Name>
<Description />
<RootToolName />
<ToolVersion />
<ToolInDb value="False" />
<CategoryName />
<SearchTags />
<Author />
<Company />
<Copyright />
<DescriptionLink actual="" displayed="" />
<Example>
<Description />
<File />
</Example>
</MetaInfo>
<Events>
<Enabled value="True" />
</Events>
</Properties>
</AlteryxDocument>""")

f.close()

os.startfile("criar_fluxo.yxmd")

3. Se quiser remover o arquivo depois, pode usar o código abaixo:

Saqueador
os.remove("criar_fluxo.yxmd")

Espero que esses códigos possam ajudar você, daí se torna uma questão de adaptar dentro do script para funcionar no seu processo.

 

Qualquer coisa fala!

inahmartins
Átomo

Olá, estou muito interessada nessa solução, mas fiquei com uma duvida: Para executar o xml dentro do Python eu preciso ter o Alteryx instalado no servidor? 

Não consigo fazer a automação por CMD pois a firma não tem a licença para instalação do Alteryx no servidor.

 

Obrigada pelo codigo!

@carlosteixeira Carlão como sempre dando aula hahaha

@GabrielStlz tu também pode usar o agendador de tarefas do windows e usar o AlteryxEngineCMD.

Dependendo da tua necessidade, tu ainda pode usar o ERROR_LEVEL retornado pelo AlteryxEngineCMD e fazer notificações no Telegram usando o CURL.

Assim tu vai executar tuas rotinas em Alteryx e vai ter um feedback do status no teu celular via Telegram.


carlosteixeira
15 - Aurora
15 - Aurora

@Matheus_Rodrigues nada... sempre aprendendo

 

Aí, pode escrever um post dessa dica do Telegram @Matheus_Rodrigues essa aí eu quero aprender.

 

Mostra pra gente e posta aqui na comunidade

 

Abraços

Carlos A Teixeira

@carlosteixeira essa literalmente vale ouro rsrs, mas vou analisar e pensar em algo para partilhar com a galera.

Ou podemos deixar para User Group, que tal? É um tema muito interessante e pouquíssimo explorado.

Porém pelo procedimento ser chato, não tem como escapar de montar uma postagem no blog.

carlosteixeira
15 - Aurora
15 - Aurora

@Matheus_Rodrigues manda msg pra mim e pro @Thableaus vamos falar sobre isso.

Carlos A Teixeira
Rótulos