OriginalPostID-127577
Discussion posts and replies are publicly visible
I agree with your critique regarding the data returned by the plugin expression, and for that reason I've already written an expression rule in the past that does the needed parsing and passes back a dictionary. I can post it tomorrow if you need, as I'm travelling today.
Edit: I'm back today, so here's the expression rule I mentioned in case anyone would like to use it.
=/* GLBL_processModelDetailsByUUID */ with( local!rawText: if( rule!APN_isBlank(ri!uuid), " ", getprocessmodeldetailsbyuuid(ri!uuid) ), local!type: extract(local!rawText, "Type:", "," ), local!nameList: trim( split( extract( rawText, "Name: [", "]" ), "," )), local!nameArray: apply( rule!GLBL_returnLanguageNamePair, local!nameList ), local!id: extract( local!rawText, "Id:", ", UUID" ), local!uuid: extract( local!rawText, "UUID:", ", Creator" ), local!creator: extract( local!rawText, "Creator: ", ", Last" ), local!lastModifiedBy: extract( local!rawText, "Last Modified by: ", ", Parent"), local!parent: extract( local!rawText, "Parent: ", ", Parent Id:" ), local!parentId: tointeger( extract( local!rawText, "Parent Id: ", "," )), local!location: extract( local!rawText, "Location: ", ", Is" ), local!isPublic: extract( local!rawText, "IsPublic: ", ", Created" ) = "true", /* note: for the latest versions of the content details by uuid plugin, the following lines can have the expression rule call replaced with a simple "todatetime()" function, as the plugin was upgraded to return a more standard datetime string after this handler rule was originally written. */ local!createdOn: rule!GLBL_dateTimeStringToDatetime(extract( local!rawText, "Created on: ", ", Last" )), local!lastModifiedOn: rule!GLBL_dateTimeStringToDatetime(extract( local!rawText & "END", "Last Modified on: ", "END" )), { type: local!type, primaryName: property(index(local!nameArray, 1, ""), "name", ""), nameArray: local!nameArray, id: local!id, uuid: local!uuid, creator: local!creator, lastModifiedBy: local!lastModifiedBy, parent: local!parent, parentId: local!parentId, location: local!location, isPublic: local!isPublic, createdOn: local!createdOn, lastModifiedOn: local!lastModifiedOn } ) /* developed by: Mike Schmitt */
Hi Mike Schmitt , what's the rule!GLBL_returnLanguageNamePair?
The comment you're replying to is over 7 years old now. I don't have access to the same version of that rule anymore, as I originally wrote it several projects ago at least.
I have a modern iteration of the same essential rule and in it, instead of bending over backwards to iterate across potential different-language process model name versions, I merely extract the english one directly. (The rule you were asking about probably takes an array of name/value pairs and returns them in a better fashion, given that we didn't even have a!forEach() yet when this old version was written).
Here's my new version with no precedents, just for the sake of anyone who might find this thread in the future. Note that I've upgraded it to make use of the updated Content Tools plug-in, and to consume either PM ID or PM UUID (the plugin function can use either).
a!localVariables( local!initialResult: getprocessmodeldetailsbyuuid( processModelUUIDOrId: a!defaultValue( value: ri!pmId, default: a!defaultValue( value: ri!pmUuid, default: null() ) ) ), local!foundPmId: index(extract(local!initialResult, " Id:", ", UUID:"), 1, null()), if( a!isNotNullOrEmpty(local!foundPmId), a!map( pmId: local!foundPmId, uuid: index(extract( local!initialResult, "UUID:", ", Creator:" ), 1, null()), name: index(extract( local!initialResult, "Name: [en_US=", "], Id:" ), 1, null()), folderName: index(extract( local!initialResult, "Parent: ", ", Parent Id:" ), 1, null()), folderId: tointeger(index(extract( local!initialResult, "Parent Id: ", ", Location:" ), 1, null())), createdBy: index(extract( local!initialResult, "Creator: ", ", Last Modified" ), 1, null()), createdOn: todatetime( index(extract( local!initialResult, "Created on: ", ", Last Modified on:" ), 1, null())), modifiedBy: index(extract( local!initialResult, "Last Modified by: ", ", Parent:" ), 1, null()), modifiedOn: todatetime( index(extract( local!initialResult, "Last Modified on: ", ", Number" ), 1, null()) ), path: index(extract(local!initialResult, "Location: ", ", IsPublic" ), 1, null()), version: tointeger(index(extract( local!initialResult & "|END", "Number of Versions: ", "|END" ), 1, null())) ), a!map( result: "No Process Model Found" ) ) )
Example output when fed a valid PM ID or UUID: