You could create a custom provider that uses the name of the file as the ruleset/decision table name.

Or you could create a custom provider that generates unique values and use the unique value as a prefix/postfix to the user-supplied value, etc.

In a similar case I use a custom provider that provides unique values from a database sequence. Every invocation of the provider generates a new, unique number, that is used to identify/separate rule instances.

Sorry, I forgot that the decision table template is so restricted compared to ordinary templates (I don't use them that much).

It's also difficult to modify the element instances in the table instance as a side-effect in a custom provider as you won't be able to add custom value holders to the table, I guess.

You could try to add a "table ruleset name" value holder with a custom provider to the group, and add the value holder at the same level "next to" the value holder referencing the decision table template. That way you can use the context parameter that is passed to the methods of the custom provider to find your common parent in the instantiation model, before you find the root of the decision table instance.

The ruleset name of the decision table instance is a simple value, so you should be able to change it using the API methods. Not exactly simple, but I think it should be doable.

Change the type attribute to point to the GUID of your own custom provider that generates unique names as default value (please refer to the API developers guide on how to write custom providers). Depending on Blaze version you may already have a provider built for that (com.blazesoft.template.engine.provider.NdUniqueSrlIdProvider, used by Decision Simulator) but it is not documented and therefore not officially supported outside of its use in DS.

The implementation above is C#, but the Java version is practically the same (take away a colon, add extends, etc...)

I created a Generic provider that used this as the implementation class, created a template that had a top level Value Holder that used my provider, and added the provider to the display value section of the template.

The instance I generated contained its own name, and this changed as I changed the name of the provider.