Currently unmaintained since I have moved from Microfocus Service Manager to ServiceNow - Sorry guys!
- Installation
- Supported Databases
- Make a table
- Update a table
- Available Fields
- Available Keys
- Todos
- Fields
- Modify Methods
- Field Options
- Keys
- Helpers
- Examples
- Credits
Just create a new ScriptLibrary for each file and copy the file content inside the new created ScriptLibrary. Currently there is no plan to deliver a unload file.
- MSSQL - tested with SM 9.52 and SM9.60
- Postgres - tested with ITSMA ( SM9.52 )
To create a new dbdict table, you have to use the make method.
var tableBuilder = system.library.tableBuilder.getClass(); var schema = new tableBuilder(); schema.make('complextable', function(builder) { /** * Allowed methods are: * * all methods to add a field * * all methods to add a key */ });
To update a existing dbdict table, you have to use the modify method.
var tableBuilder = system.library.tableBuilder.getClass(); var schema = new tableBuilder(); schema.modify('complextable', function(builder) { /** * Allowed methods are: * * all methods to add a field * * all methods to add a key * * rename a field */ });
| Type | SM Type |
|---|---|
| Number | 1 |
| Character | 2 |
| Date/Time | 3 |
| Logical | 4 |
| Array | 8 |
| Structure | 9 |
| Expression | 11 |
- Unique
- Primary
- No Nulls
- No Duplicates
- Nulls & Duplicates
- [] more documentation for each field
- [] Add more options
builder.addNumber('fieldname');
builder.addCharacter('fieldname');
builder.addDatetime('fieldname');
builder.addLogical('fieldname');
builder.addArray('fieldname', function(item) { //all field types are allowed });
builder.addArrayOfNumber('fieldname');
builder.addArrayOfCharacter('fieldname');
builder.addArrayOfDatetime('fieldname');
builder.addArrayOfLogical('fieldname');
builder.addStructure("filter", function(item) { item.addCharacter("filter.sql"); });
builder.addExpression('fieldname');
Currently, the rename works only for simple fields (number, character, date/time, logical).
Rename the field, but keep the SQL Name
builder.renameField('is_active', 'isActive');
Rename the field and update the SQL Name.
builder.renameField('is_active', 'isActive', true);
Updates the sql length of a field.
The method uses the information from the sqldbinfo table to determines if the current field has the Get Size option.
builder.setLength('brief.description', 500);
For common fields, you can change field SQL Type.
builder.addCharacter("textfield").setSqlType("NVARCHAR(100)");
Overwrites the default sql field name with the defined value.
builder.addCharacter("textfield").setSqlName("AWESOMETEXTFIELD");
If you want, you can move a field to another table alias (e.g. from M1 to M2).
❗ All following fields will be attached to
M2. If you want only one field in a new table, add the field at the end of your definition or add.setSqlTable("M1")to the next field.This is an HPSM problem - I have tested it with the dbdidct utilities and the result was the same!
builder.addCharacter("textfield").setSqlTable("M2");
builder.addUniqueKey(['fieldname']);
builder.addPrimaryKey(['fieldname']);
builder.addNoNullKey(['fieldname']);
builder.addNoDuplicateKey(['fieldname']);
builder.addNullDuplicateKey(['fieldname']);
Instead of
builder.addCharacter('sysmoduser'); builder.addDatetime('sysmodtime'); builder.addNumber('sysmodcount');
in your definition, you can use this:
builder.withSysmodFields();
var tableBuilder = system.library.tableBuilder.getClass(); var schema = new tableBuilder(); schema.make('simpletable', function(builder) { builder.addNumber('id'); builder.addLogical('is_active'); builder.addCharacter('sysmoduser'); builder.addDatetime('sysmodtime'); builder.addNumber('sysmodcount'); builder.addUniqueKey(['id']); });
Expected result after running the code:
You should see a new entry in your Messages with something like:
Table simpletable has been created successfully.
var tableBuilder = system.library.tableBuilder.getClass(); var schema = new tableBuilder(); schema.make('complextable', function(builder) { builder.addNumber('id'); builder.addLogical('is_active'); builder.addCharacter('brief.description'); builder.addArray("longdescription", function(item) { item.addCharacter("longdescription"); }); builder.addStructure("filter", function(item) { item.addCharacter("filter.sql"); }); builder.addArray("rule", function(item) { item.addStructure("rule", function(subitem) { subitem.addNumber("ruleId"); }); }); builder.withSysmodFields(); builder.addUniqueKey(['id']); });
var tableBuilder = system.library.tableBuilder.getClass(); var schema = new tableBuilder(); schema.modify('complextable', function(builder) { //add a new field to the existing table builder.addNumber('reference.id'); builder.renameField('is_active', 'isActive', true); builder.setLength('brief.description', 500); });
Expected result after running the code:
You should see a new entry in your Messages with something like:
Table complextable has been created successfully.
Special thanks goes to: