How to load an interface section by UUID?

Hey all,

I'm in the process of building a "menu" for 100+ reports in order to give users the ability to select the report they'd like to view rather than populating the Reports tab with dozens and dozens of reports. The idea is to create a simple interface with a dropdown where users can select the report. At the moment, I'm pairing the interface rules with labels and values in a custom array that's just loaded into a local variable. Something like this:

{
    {
      interface: rule!reportInterface1(),
      label: cons!INTERFACE_HEADERS[1] & " Report",
      value: 1
    },
    {
      interface: rule!reportInterface2(),
      label: cons!INTERFACE_HEADERS[2] & " Report",
      value: 2
    },
    {
      interface: rule!reportInterface3(),
      label: cons!INTERFACE_HEADERS[3] & " Report",
      value: 3
    }
  }

However, this isn't exactly a scalable method and I figure that table-driving these values would be a much more efficient solution. Now, since we obviously can't write a rule into a table by name, the only option would presumably be to write the interface UUID to the database and then call that UUID if the interface is selected in our dropdown. Which brings me to my question: Is there a way to load an interface section by UUID? Additionally, if anybody would happen to have any better ideas for organizing a large number of reports I'm certainly open to any and all suggestions.

 

Thanks in advance!

  Discussion posts and replies are publicly visible

Parents
  • With eval("rule!reportInterface1()"), you would be able to evaluate a string literal as function call. Now, it's an undocumented function - so the standard disclaimer "don't do it if you can avoid it" applies. However, custom-building reports is not something I would do in Appian, either.

    Were in your shoes, I would first check whether I could use an external tool for the reporting and then include that output into my reporting tab. See the 19.1 Product Announcement Webinar for a quick demo of how this could look with PowerBI.

    If you are dead-set on Appian, I'd give eval() a chance. And if you're going this route with 100+ reports, maybe build yourself a custom picker rather than a multiple dropdown field.
Reply
  • With eval("rule!reportInterface1()"), you would be able to evaluate a string literal as function call. Now, it's an undocumented function - so the standard disclaimer "don't do it if you can avoid it" applies. However, custom-building reports is not something I would do in Appian, either.

    Were in your shoes, I would first check whether I could use an external tool for the reporting and then include that output into my reporting tab. See the 19.1 Product Announcement Webinar for a quick demo of how this could look with PowerBI.

    If you are dead-set on Appian, I'd give eval() a chance. And if you're going this route with 100+ reports, maybe build yourself a custom picker rather than a multiple dropdown field.
Children
No Data