In my interface, I user function document.
if( document(tofolder(local!documentId), "size") > 0, true, false )
Discussion posts and replies are publicly visible
Create a rule with the below to check whether the document is valid or not.
a!localVariables( local!document: 46,/*ID for any document */ local!contentData: if( isnull(local!document), null, getcontentobjectdetailsbyid(local!document) ), if( isnull(local!document), false(), and( not( exact( local!contentData, "No object with this ID has been found" ) ), find("Type: Document", local!contentData) ) ) )
FYI, this rule won't work for just-uploaded documents, because it'll indicate that the document is "valid" even when newly uploaded on an unsubmitted form, but the document will still fail when using the "document()" function because the document isn't in an Active/Published status.
Yes I agree.
I do love the "getcontentobjectdetailsbyid()" rule for this though, because it can help us *specifically* distinguish between an already-uploaded file versus a newly-uploaded file. Here's the expression rule I have set up for such a purpose (the "docExists" rule that gets called first just makes sure the doc ID is non null, non zero, and runs the "objectExists()" rule on it first)...
and( rule!ENV_UTIL_docExists(ri!doc), find( "State: Active Published", getcontentobjectdetailsbyid(ri!doc) ) > 0 )
Thanks Mike...
I thought the document ID passed is not valid.
Newly-uploaded documents exist in a "special" system directory in Appian, and are moved to their eventual "target" destination upon Form Submission. While still in that "special" directory, the document() function does not work on them, but they *do* have a valid Doc ID and certain (limited) functions still work on them - such as the "content object details by id" rule.
this is a useful capability to know, because it can be used on-form to judge whether a particular document is previously uploaded or brand new, and control other functionality that depends on this.
Keep in mind that some of these strings like in line 4 are multi-lingual. This might break for other languages.
Considering that that data is coming from a plug-in, and using terminology that is essentially never user-facing, i'd be surprised.
Do you have an easy way to test the output of that rule when run against a doc ID in another language and see if the terminology it spits out is different? My own production system is english-centric but it'd be useful to know whether it's something I should watch out for.