community
cancel
Showing results for 
Search instead for 
Did you mean: 

Alteryx Designer Knowledge Base

Definitive answers from Designer experts.

Chained Alteryx Analytic Applications

Alteryx Alumni (Retired)
Created on

Alteryx Analytic Applications (Apps) are very useful.  They let us take a process, parameterize parts of it, and add an interface so that end users don't need to know all of the inner workings of the process in order to make it work for their specific scenario.  We can even take an app and publish it to an Alteryx Gallery so the process can be shared with someone who doesn't even have Alteryx installed on their machine. 

 

A common question we hear from app builders is, "how do I make the choices presented for one interface question depend on a previously answered interface question?".  This is primarily accomplished by chaining multiple apps together such that the results from App #1 dynamically provide the options for a drop down or listbox question in App #2. Step 1 and Step 2 in the attached package provide an example.

 

What if the question you want to update is not a drop down or listbox?  You can actually use App #1 to dynamically update the raw XML controlling the question (or any tool) in App #2 prior to presenting the questions of App #2 to the user.  Step 2 and Step 3 in the attached package provide an example.

 

 

Less often, we are asked how we can create what I like to call a "feedback loop" in the interface.  This involves the user of the app filling out a set of questions, seeing some result from those questions, and deciding whether to continue forward or go back to modify their initial selections. This can be accomplished using the same idea of modifying the XML to dynamically decide which app becomes the next link of the chain in a process.  Step 3 in the attached package is an example that will either move on to a real step 4 if the user is happy with the results from Steps 1-3 or will loop back to Step 2 so the user can modify their initial selections.  They can continue in the loop, modifying their selections in Step 2 over and over until they are satisfied with the results and choose to move on to step 4.

 

 

The attached package contains an example for each of these options with a few notes calling out the different examples.

 

Please note that both options involving modification of an app's XML will not work in an Alteryx Gallery because any app run by the gallery must be verified by the server ahead of time and there is no way to build this verification step into the app.  

 

 

Attachments
Comments
Alteryx Certified Partner

Great article.  Regarding the note on modifying the XML not working on an Alteryx Gallery, can that be worked around when deploying on a private Alteryx server?  

Bolide

Thanks for this, I have a question though about using this on a gallery. I see that in your 'On Success - Run Another Analytic App'  you have simply 'Step 2.yxwz'. If this were to be run on a gallery, how would you put the link there? I tried saving both apps to my company's gallery and putting the name of the second step here with the file extension and it did not run the second app. How is this accomplished?

Alteryx Alumni (Retired)

@DanO - No, a private Gallery does not allow a workaround to this at present (v11.5)

 

@mmenth - You will need to chain the apps together prior to publishing either to the gallery.  They are treated as a single, combined app by the gallery.  

Meteoroid

This is a great article and really helpful. If I wanted to populate the selections in the drop-down tool with values retrieved from another Alteryx workflow, how would I do it? I can't figure out how to run the preliminary workflow, which gathers the values I need BEFORE the user is prompted to select from the list of values. Below is a graphical representation of what I think I want to do.

Thanks!

Andy

 

API WF.jpg

 

 

Alteryx Certified Partner

@andrew_cook

I believe that this needs to be a two step process.  this is because the app interface comes up before the workflow runs, so it can't dynamically download that info and show until the workflow runs.

1- you build an app that does everything up to your last select tool and then output this to a file.  This file needs to have two fields (Name and Value).  this app does not require an interface if there is nothing to interact with but sometimes I'll put a brief description of the app in the interface.  In the Interface Designer view for this first app, you need to point to the second app in the "on Success - Run Another Analytic App".

2 - The second app will read the list file created from the first app in the Drop Down tool and use what is selected to populate the Text Input tool.

 

Meteoroid

Thanks @Dynamomo, this will work.  However, I was hoping to avoid storing the results of the first app. I also would like the end user to only interact with the 2nd app. I'm probably asking for too much. Your thoughts?

Alteryx Certified Partner

 

@andrew_cook

I'm pretty sure what you are trying to do is not possible in one workflow.  check out this post from Fadi and then scroll down near the end where he explains why it cannot generate a dynamic list.

https://community.alteryx.com/t5/Alteryx-Knowledge-Base/Dynamically-Create-List-Box-Values-From-Inpu...

The data from the input file is actually stored as metadata in the workflow.  I opened mine up and found it in there.

Two options i can think of:

1 - linked/chained apps (your user won't even know that two are running)

2 - since whatever you are doing to generate the list is not something that you need the user to dynamically interact with.... maybe you could put that part of the process on a  recurring schedule to generate a recent list file and use that file in your app

 

Alteryx Partner

Great tutorial, especially Step 2 is useful (How to dynamically update a List Box is what I was looking for)

 

I would add that for step 1, there is a way not use SQL commands to generate values in the drop-down list.

 

You can simply create a unique list of values with a Summarize tool, transpose, attach a record ID to it, then cross tab your data.

 

(check this awesome tip on how to keep your original names without the "_ " )

 

One it's done you attach the stream to your drop-down tool,  then select the option "Field from Connected Tool", and voila !

 

This step is longer (but not so difficult) and can help people no familiar at all with SQL commands 

 

I can attach an example if needed.

 

 

Cheers!

 

 

Asteroid

I'm a little intrigued about the comments in here about not being able to do dynamically created, chained apps in a private gallery. We are currently on 11.5.1 for our server and I was playing with a dynamic query tool that used table drive values to let a user, in a series of chained apps: (1) Select what dataset they wanted to query (2) Select which columns they wanted to retrieve and then (3) Enter filter criteria for eligible columns that then runs a "Business Objects"-like data aggregation and output. App 1 (dataset) drives App 2 (Columns to retrieve) via a dataset, but App 1 & 2 together dynamically create the input criteria filters (could be 1 or could be 20) by dynamically building the XML for the third app. Reading this thread, it would seem that folks think that isn't possible, but it seems to work just fine for me.

 

Dynamically built, chained apps are incredibly powerful! (Though possibly fragile due to changing XML structure in future upgrades...?)

 

Am I missing something here?

Thoughts? PM me if you are interested in talking about what I built if you want to try something similar.

Thanks,

Justin

Meteor

This question specifically relates to Chained Apps on Gallery. It works without any issues for most cases. But looks like there are caveats.

 

Master App.jpg

 

 

I have a requirement where a user would choose a value from a drop down and based on the choice a specific app needs to run. So as seen above, at runtime 'Chosen App' gets written based on what user had selected. 'Chosen App' is chained to the original app.

This all worked fine until now. Based on a new requirement App A1 had to be chained to 'App A2'. 

The problem with this now is that all other apps viz. App B and App C also get chained automatically to App A2 after publishing to Gallery.

 

I am unable to attach the example app; but let me know if the above is not clear.

Requesting if anyone has any suggestions.

Asteroid

Thank you so much, this was really helpful to see an example in action.  

Asteroid

@anand Let's say we have an App A that can then call A1, A2, or A3 based on a user choices. The way I would handle that is to store the XML for app A1, A2, A3 all in text file inputs into the first app, then chain App A to an App B, where B is the written output .yxwz (XML data) of either A1, A2, or A3. That is, if the user chooses A1, then you actually write out the single row, single column of data (the whole A1 XML file) out as CSV without headers and without column delimiters and have it write it as a .yxwz. That way you are only chaining to one app but that chained app file dynamically changes based on the user's choice. I've done that in the past and it works fairly well. I can provide an example if helpful.

Thanks!

Justin

Meteor

@justin_winter

 

Thanks for your response and suggestion.

In principle I am taking a similar approach. I badly want to share the app with you, but this editor doesnt allow me to upload files.

Is there a way in community to share files other than starting a new topic?

 

 

Alteryx Partner

Has there been any solution to your approach @anand ? I am kind of stuck in similar stuff.

Meteor

Hi @nikhilgurg ,

 

Unfortunately not.. We are working on an alternative UI completey different from Alteryx Interface tools.

Just realized we were expecting too much from rudimentary features and thinking of hacks all the time.