Hi everyone, I have a use case where I need to send files to external system for validation. I'm submitting the form which is chained to itself, so that files are persisted in the Appian file system and then I'm sending this to an external system. User gets to see the progress percentage.So the problem is when Appian is very very slow ( due to other colleagues playing around, Appian internal apis are taking some time to write it down. Any way I can check file exist in actual so that I can have some sort of delay retries?
Discussion posts and replies are publicly visible
When you upload the file to Appian, it returns an ID... you just need to query the document using , for example , getcontentobjectdetailsbyid (if the doc does not exists you receive an error)
In any case, I’m not quite sure I fully understand your question.
Are you sure that this is the root cause? I am very sure that in Appian, process nodes are only completed after any activity is done. In 15 years, I never had such an issue.
I added this check before calling the external system integration but this returns "No object with this ID has been found" when doc is not there but for my case it seems like the meta is written as this returns true. When I actually create a request body which is multipart I use todocument(id) where it fails as it's return empty.
Yeah I was calling the external system process through interface button, based on your input just added that in PM itself. Will update here when next time the env is slow.
Try adding a 2 min timer in your process between the interface and integration node. Unless environment issue is resolved, this way you can check if your process executes properly or not. If needed add more minutes in timer to see what works best. If environment slowness is resolved then you would not need this timer.
An alternative is after the UI add the document id and record's id to a table in db. Using the document id in database/process call the integration node. In this solution, if appian internal apis are slow then write records will be delayed as well. if write to db is successful your integration will be successful as well and process delay will adjust dynamically depending on load. If you don't need the data in db then after successful integration call delete the row from db for that record. Instead of db you can use process report and query using that as well.
I was calling the external system process through interface button
Pretty sure that was your issue.