Appian Design to Create Bulk PDF Files

Certified Senior Developer

I have been asked to check feasibility to implement below requirement,

  • User will upload an excel file which can have records up to 2000. We have to read the parse the file and create separate pdf file for each of the record. The template of pdf file will be same for all.
  • In short we have to generate 2000 files in one go.
  • Once files are generated we need to display status of each record to user that file has been generated successfully or not.

I want to confirm if this is possible to generate 2000 files quickly. If yes then how to do it without getting performance issues.

  Discussion posts and replies are publicly visible

  • 0
    Certified Lead Developer

    This "quickly" depends on your expectations. Creating 2000 files will take more than just a few seconds. What would be an acceptable time?

    Creating PDF files is easy: appian.rocks/.../

  • 0
    Certified Senior Developer

    You can achieve this using batching and asynchronous execution approach in shorter time.

    I want to confirm if this is possible to generate 2000 files quickly. If yes then how to do it without getting performance issues.

    But if you want the user to wait (chaining) until everything is completed, it will impact performance for the end user.
    I would suggest, for a better user experience, that after the file is completed, you can generate a task for the user to review.

  • As others have already said, it depends on what you mean by "quickly". But generating 2000 files in Appian - even trivial ones - is going to take some time. 

    There needs to be a balance between how quickly you want this done and managing the resources in your environment. So whilst you could create two instances of a process model, each of which runs an MNI node that creates the PDF documents (MNI is capped at 1000 instances) with each instance being spawned concurrently I don't think that's a very good idea for the health of your environment. You could also set up MNI to run "one at a time" but now the processing is serialized and will not be "quick" (I've just ran 1000 instances that create a PDF from a blank template and that took 10 minutes, and that's without doing any of the work required to populate a true template)

    As others have alluded to...you could manage the User's expectations regarding the process by providing them a confirmation message like: "Thankyou for uploading the Excel file. We are processing this and will let you know when the processing has completed" and then send the user an email prompt when it is completed. Or, at the next level of sophistication, you can build a UI with a progress bar that is periodically refreshed, and only display the final results when the process is 100% complete. You could even generate the first 20 documents and then based upon the time taken so far extrapolate and provide an estimated completion time!

    If the speed at which this can be completed in Appian isn't acceptable you could perhaps send the data to a document generation service outside of Appian that does provide the necessary performance, but even then you'd be subject to the marshalling of the request/response data between Appian and the service and for 2k records/documents this is still not going to be quick.

  • 0
    Certified Senior Developer
    in reply to Stefan Helzle

    Thanks for the response. As of now client is exploring all tools along with appian. I'll try to do PoC and find out how much time it's taking to produce pdfs using plugin suggested by you. If they are happy with the outcome with respect to time then we will go ahead with the implementation.  

  • 0
    Certified Senior Developer
    in reply to Shubham Aware

    yeah, i also thought of displaying result later on so that user doesn't need to wait till whole batch processing completed.

    Anyways thanks for the response.

  • 0
    Certified Senior Developer
    in reply to Stewart Burchell

    Above context is helpful, Thanks. I agree, MNI is going to impact the our appian environment.

    As suggested i'll work PoC ,  calculate the time and discuss with client.

  • 0
    Certified Lead Developer
    in reply to Hemant Borate

    Yes, this needs a conversation. I try to implement applications that are process driven. So e.g. when you need to generate these files and send them to clients via email, no user needs to wait for this. It just happens in the background.

    Some of our client's considerations are just coming from their old way of doing things. I try to catch this and transform it into something new and exciting.