-
Notifications
You must be signed in to change notification settings - Fork 28
Open
Description
How can one define a "basic" generator template in a ben.xml and re-use it in multiple scenarios in the same .ben.xml ?
As an example, I am generating data for 3 different classes of organisation, where address and bank account generation are the same, but other attributes are overriden (and new attributes are added).
Currently, I can only see cut-and-paste reuse as an option, or define a Generator class in Java - which is doable, of course, but it's not terribly clear how to map the XML elements/attributes to the constituent generator classes...
<generate type="buyer" count="{buyers_count}" consumer="buyers.csv">
<variable name="bank_data" source="bank.ent.csv" distribution="random"/>
<variable name="swift_suffix" pattern="\d{2}[A-Z]{3}"/>
<variable name="cg" generator="CompanyNameGenerator" dataset="GB" locale="en_GB"/>
[…]
<attribute name="addressLine1" script="ag.houseNumber + ' ' + ag.street"/>
<attribute name="city" script="ag.city.name"/>
<attribute name="postcode" script="ag.postalCode"/>
</generate>
<generate type="seller" count="{seller_count}" consumer="sellers.csv">
<variable name="bank_data" source="bank.ent.csv" distribution="random"/>
<variable name="swift_suffix" pattern="\d{2}[A-Z]{3}"/>
<variable name="cg" generator="CompanyNameGenerator" dataset="GB" locale="en_GB"/>
[…]
<attribute name="addressLine1" script="ag.houseNumber + ' ' + ag.street"/>
<attribute name="city" script="ag.city.name"/>
<attribute name="postcode" script="ag.postalCode"/>
</generate>
Ideally, one would be able to define a basic generator and reuse them as a source for a variable, e.g.
<generate type="company" consumer="NoConsumer">
<variable name="bank_data" source="bank.ent.csv" distribution="random"/>
<variable name="swift_suffix" pattern="\d{2}[A-Z]{3}"/>
<variable name="cg" generator="CompanyNameGenerator" dataset="GB" locale="en_GB"/>
[…]
<attribute name="addressLine1" script="ag.houseNumber + ' ' + ag.street"/>
<attribute name="city" script="ag.city.name"/>
<attribute name="postcode" script="ag.postalCode"/>
</generate>
<!-- or <generator name="company">...</generator> -->
<generate type="seller" count="{seller_count}" consumer="sellers.csv">
<variable name="c" source="company"/>
<attribute name="addressLine1" script="c.addressLine1"/>
<attribute name="city" script="c.city"/>
<attribute name="postcode" script="c.postcode"/>
</generate>
<generate type="buyer" count="{buyer_count}" consumer="buyers.csv">
<variable name="c" source="company"/>
<attribute name="addressLine1" script="c.addressLine1"/>
<attribute name="city" script="c.city"/>
<attribute name="postcode" script="c.postcode"/>
</generate>
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request