Alteryx Designer Desktop Discussions

Find answers, ask questions, and share expertise about Alteryx Designer Desktop and Intelligence Suite.
SOLVED

Alteryx App that creates the next chained app

fishdontfly
6 - Meteoroid

Hello,

 

I am interested in creating an Alteryx App that will create an Alteryx App.

 

Context:

I have an app that should be run once for each item in a unique list coming from a user input dataset. Instead of trying to chain or loop the App,

 

I would like the app to simply have one tab for each item in the unique list.

 

Each tab will be essentially the same. They will have the same actions and dropdowns, although some of the text within each tab should update based on the records in the unique list.

 

Example:

- App A: user inputs a file with a unique list of names in Column A.

- App B: chained app opens and has one tab for each of the records in unique list. 

  • the tab names reflect the record values
  • workflow underneath this app has one branch/sequence of same set of tools for each of the items in list
    • each tab corresponds to appropriate branch
    • these branches must be dynamically replicated in the underlying workflow based on unique values

Before I attempt to build this, I wanted to hear from the Alteryx Community about 

  • Feasibility: does this sound doable? has anyone done this or something similar before? 
  • XML: are there any XML guides or examples that are relevant?
  • Is there a better way to accomplish this?

 

Thank you!

2 REPLIES 2
Claje
14 - Magnetar

Hi,

Here are some high-level thoughts that I have.  My experience with somewhat similar ideas includes building workflows that are updated dynamically at runtime, leveraging the "Edit XML" design.  I haven't tried to use it to chain applications together, but I have approached the idea of an Alteryx workflow that creates other Alteryx workflows.


1) From a feasibility perspective - it would be technically possible if you had the time/patience to build something like this.  Your biggest issues are going to be scalability and testing edge cases.  For instance, some characters behave differently in certain situations and you'd likely have to capture/escape all of them (eg: the "<" or ">" symbols are both used in XML so you have to convert them before writing out the XML).  This links in to point 2.

2) If you've never really done a deep dive into XML, I highly recommend this link : https://www.sitepoint.com/really-good-introduction-xml/ .  This is relatively high-level, but has a lot of good information about potential pitfalls to watch out for.  I would also recommend using Alteryx's XML Viewer, after building a basic app in Alteryx.  You can look at the XML behind each individual tool, or the entire workflow, as long as you have the "Display XML in Properties Window" option checked off under Options->User Settings->Edit User Settings->Advanced.  This will add a </> tab to each tool that will help you to better understand what you want to manipulate/create in each tool.

 

3) If you have specific configuration that the user needs to identify for each possible output, this might be a good option, although I think that an Iterative or Batch macro may be just as effective depending on your design.  You may still need to do some dynamic app chaining in order to build your interface, but you could potentially simplify your code if the only piece that you are creating "from scratch" is the interface tools.

One other concern that is worth keeping an eye out for is that I believe chained applications have to point to a static location for the next app.  If that assumption is true, and you have multiple users running the application, simultaneous executions could cause you some significant problems.  This depends on the resting place of your next step, and you may be able to work around it, but it is an area that you'd need to be wary of, as it could do all sorts of unintended things.

fishdontfly
6 - Meteoroid

Hi,

 

Thank you for your fast response! I am reading the XML chapter you linked to now and will try developing a reduced version of the functionality first to see how it goes.

 

Thanks again!

Labels