Content Tools

Overview

These functions extend Appian content and offer document/folder search, directory listing, and the ability to get/set the searchable attribute of a folder.

Functions are designed for and only work on Appian content, not the local filesystem. All search functions assume the root folder and all subfolders are searchable. Search functions will not return results contained within non-searchable objects.

All functions use the serviceContext of the user account executing the expression at runtime.

Key Features & Functionality

Data Types

  • contentSecurityRoleMap: CDT that backs the returnContentRoleMap function

Smart Services

  • Copy Document (Change Extension)
  • Delete Document Version
  • Delete Folder Contents
  • Delete Files Older Than
  • Delete Files Created Before
  • Delete Multiple Documents
  • Remove Member From Folder Security
  • Inherit Security From Parent for Folder
  • Inherit Security from Parent for Document
  • Remove Member From KC Security
  • Delete Rule/Constant Versions
  • Set Folder Security
  • Create Document Version
  • Create expression rule
  • Update expression rule expression
  • Update expression rule parameters

Functions

  • getfoldersrequiringchangesapproval
  • getsubfoldersfromfolder
  • getdocumentsfromfolder
  • getdocumentinternalidsfromfolder
  • getfilesolderthandate: Get files older than a particular date
  • getfileslargerthansize: Get files larger than a particular size
  • finddocumentsbyname
  • getconstantorruleuuidbyname
  • findcontentbyattribute
  • getcontentdetailsbyuuid
  • getcontentdetailsbyinternalname
  • getcontentobjectdetailsbyid
  • getcontentobjectswithnumofversions: function to find rules or constants with a given number of versions. Useful to find out objects that can increase memory usage in the collaboration engine. See https://forum.appian.com/suite/help/16.3/kb/kb-1226.html
  • getcontentobjectrevisionhistorydetails: Retrieves the revision history of a content object formatted as "[version id, date created, date updated, size, author]"
  • getconstantsfromfolder
  • getconstantsbyname
  • setfoldersearchability
  • getfoldersearchability
  • getdownloadersfromgroup
  • returncontentrolemap
  • getprocessmodeldetailsbyuuid
  • getrulereferencebyname
  • generateuuid
Anonymous
  • Hi Team,

    The below issue is being reported in the health check report.

    Content Tools (com.appiancorp.ps.plugins.contenttools) references deprecated Appian APIs [deprecated] com.appiancorp.suiteapi.content.ContentService.approve(java.lang.Long[]) [deprecated] com.appiancorp.suiteapi.content.ContentService.getAllChildren(java.lang.Long, com.appiancorp.suiteapi.content.ContentFilter, java.lang.Integer) [deprecated] com.appiancorp.suiteapi.content.ContentService.getExpiredIds(java.lang.Long, java.lang.Integer, com.appiancorp.suiteapi.content.ContentFilter) [deprecated] com.appiancorp.suiteapi.content.ContentService.getPendingPaging(java.lang.Long, com.appiancorp.suiteapi.content.ContentFilter, int, int, java.lang.Integer, java.lang.Integer) [deprecated] com.appiancorp.suiteapi.content.ContentService.unexpire(java.lang.Long[])

    Can you help to fix it?

  • Hi,

    Below issue is being reported in health check report. 

    Content Tools (com.appiancorp.ps.plugins.contenttools) references deprecated Appian APIs [deprecated] com.appiancorp.suiteapi.content.ContentService.approve(java.lang.Long[]) [deprecated] com.appiancorp.suiteapi.content.ContentService.getAllChildren(java.lang.Long, com.appiancorp.suiteapi.content.ContentFilter, java.lang.Integer) [deprecated] com.appiancorp.suiteapi.content.ContentService.getExpiredIds(java.lang.Long, java.lang.Integer, com.appiancorp.suiteapi.content.ContentFilter) [deprecated] com.appiancorp.suiteapi.content.ContentService.getPendingPaging(java.lang.Long, com.appiancorp.suiteapi.content.ContentFilter, int, int, java.lang.Integer, java.lang.Integer) [deprecated] com.appiancorp.suiteapi.content.ContentService.unexpire(java.lang.Long[])

    Is it possible to rectify this?

  • Try something like this:

    findcontentbyattribute(
      true,
      "document",
      "name",
      "*FINAL Grade"
    )

  • You are right that it doesn't seem to return anything. One thing you can try for the time being is to use an * (wildcard) instead of space.

    So search for "[class name]*-*FINAL Grade"

  • And last - using the new function, how do we find objects (files/folders) with a partial name match?  My initial testing is suggesting that results are only returned when they are an exact match.  This is useful for some use cases but at other times I believe I will need to find file(s) or folder(s) matching a pattern, or at least a partial string, and if there's no actual way to do that then it would potentially be severely limiting.

  • Also - I think there's a misprint in the "live help" text for the new function:

    I'm assuming the highlighted text should actually read "document or folder".

  • Thanks, I didn't know that it had been functionally replaced.  I might suggest that you still list the older function in the plug-in description above, if only to add the note that it's been deprecated and has a replacement available.

  • Hi , we'll evaluate this internally and get back to you once we have more feedback. Thanks for raising this.

  • Hi , please refer to the PDF documentation of this plugin (available upon download). You will check that this function has been deprecated and hidden from the palette. Existing implementations will still continue to function but future use cases should be handled with the new FindContentByAttribute function.

  • I've just spent a few hours debugging an apparent issue with findDocumentsByName only to realize that it's basically breaking when attempting to search a string where there's a space, a dash, then a space, and either leading or trailing letters.  For example, " - " finds dozens of documents in my system, but " - AT" fails to find anything, even though there are many documents that match this string. 

    This is actively breaking my use case as I'm trying to systematically find a document where the document name matches the pattern i.e. "[class name] - FINAL Grade".  And it's returning zero results even when I try searching the exact string of a known-good document name.