Over 4-5 months I find myself running into a similar problem over and over. When I preview a workflow I'll get an error like: Illegal expression: xxxx.xxx.array.ip - property 'array' can't be resolved. I've had it come up with shares, volumes, and exports and probably others. In each case I end up having to change the Command's Parameter Mapping attribute for Array. This of course requires cloning a perfectly good WFA Command just to get another version of it so that I can get my workflow to preview and for x.x.array.ip to resolve. I feel I'm cloning commands for what seems an invalid reason.I would much rather figure out how to get my workflow to properly specify and match up the parameter but I've never had time to understand this properly.
Here is my current example (7-mode). I'm trying to create an export using the certified Create Export command. Here is it's Parameter Mapping tab. Notice Array Attribute is volume.aggregate.array.ip. I presume that means the command will determine the array to execute the create export on from the referenced volume which references an aggregate which references an array which has an attributed called ip.
I created the volume that I will export in a prior step of the workflow called vol_pri so in my Create Export workflow command step details I reference that.
I use a No-Op step earlier in the workflow to make Resource Selections for the Aggregate and Array (or Filer) which are named aggr_pri and filer_pri
But when I preview this workflow I get this error on the Create Export step: Illegal Expression: exp_pri.volume.aggregate.array.ip - property 'array' can't be resolved
I know how to fix this but the way I know how to fix it is to clone the command and edit the parameter mapping for Array from volume.aggregate.array.ip to a simplier array.ip or array.name and then the workflow step details will THEN ask/include array which I will specify as filer_pri, the array object I resource selected in my No-Op.
How can I stop cloning so many commands and learn to satisfy these built-in certified commands and the way they parameter map 'array' with the long nested series of object types ??? I have this issue with:
Create Export - which Paramter maps Array to attribute volume.aggregate.array.ip
Create Share - which Paramter maps Array to attribute volume.aggregate.array.ip
Create Volume - which Paramter maps Array to attribute aggregate.array.ip
I must be missing a key concept ... or should I expect to be cloning and propagating new commands for no reason other than parameter mapping adjustments.
OKay, here is a simple workflow that should run in any environment and demonstrates my problem quickly and easily. Brief description of workflow:
ask the user to choose a filer
ask the user to choose a volume within that filer
create a qtree (using built-in certified 'Create Qtree' command) .,, the qtree should be placed in the chosen volume on the chosen filer
create an export of that qtree
My WF has three commands:
No-Op which creates filer and volume objects "by filling in attributes" and the name attribute is a $ userInput variable (which has a QUERY to let user chose)
a Create Qtree command step
a Create Export command step
In Preview mode the UserInput forms lets the user select filer/volume. Clicking Preview then gives this error from the 'Create Qtree' command parameter step. How to I make this work that way I want without edit the 'Create Qtree' command ???
I think the issue is that you are creating filer and volume objects "by filling in attributes" rather than "by searching for an existing..." and using a filter/finder. Filling in attributes will only populate the fields that you put in, whereas a filter will populate all of the attributes from the cache including references.
That was indeed the my problem. I think I am repeatedly making that mistake because in either case ('by filling in attributes' -or- 'by searching for an existing') I'm asking the user to select from a userInput QUERY drop-down list to actually choose an existing object instance. When I'm doing that, I don't think about finders/filters and resource selection but rather userInput QUERY's. I'm still getting the hang of it.