@peter.prib/renderengine 0.2.7 → 0.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -9
- package/REFERENCE.md +123 -0
- package/dist/renderengine-workspace.umd.js +5044 -2892
- package/dist/renderengine.umd.js +4850 -2888
- package/examples/data-model.html +40 -18
- package/package.json +1 -1
- package/src/charting/FormDialog.js +398 -385
- package/src/charting/RowsField.js +127 -0
- package/src/charting/datamodel/ClassificationLens.js +33 -0
- package/src/charting/datamodel/ClassificationScheme.js +98 -0
- package/src/charting/datamodel/DataModel.js +220 -4
- package/src/charting/datamodel/DataModelChecker.js +248 -2
- package/src/charting/datamodel/DataModelContext.js +40 -10
- package/src/charting/datamodel/DataModelEditCommand.js +47 -0
- package/src/charting/datamodel/DataModelPerspective.js +12 -2
- package/src/charting/datamodel/EnumerationType.js +64 -51
- package/src/charting/datamodel/ServiceDomain.js +9 -0
- package/src/charting/datamodel/SqlDdl.js +80 -0
- package/src/charting/datamodel/SqlDdlFileFormat.js +23 -0
- package/src/charting/datamodel/index.js +21 -15
- package/src/charting/datamodel/naming/CamelCaseStyle.js +13 -0
- package/src/charting/datamodel/naming/LowerWordsStyle.js +13 -0
- package/src/charting/datamodel/naming/NameStyle.js +57 -0
- package/src/charting/datamodel/naming/NamingStandard.js +132 -0
- package/src/charting/datamodel/naming/PascalCaseStyle.js +13 -0
- package/src/charting/datamodel/naming/SnakeCaseStyle.js +13 -0
- package/src/charting/datamodel/naming/TitleCaseStyle.js +25 -0
- package/src/charting/datamodel/naming/UpperSnakeStyle.js +13 -0
- package/src/charting/datamodel/naming/index.js +8 -0
- package/src/charting/datamodel/scorecard/CompletenessCategory.js +30 -0
- package/src/charting/datamodel/scorecard/ConsistencyCategory.js +33 -0
- package/src/charting/datamodel/scorecard/DefinitionsCategory.js +33 -0
- package/src/charting/datamodel/scorecard/ModelScorecard.js +113 -0
- package/src/charting/datamodel/scorecard/ReadabilityCategory.js +37 -0
- package/src/charting/datamodel/scorecard/ScorecardCategory.js +46 -0
- package/src/charting/datamodel/scorecard/StandardsCategory.js +29 -0
- package/src/charting/datamodel/scorecard/StructureCategory.js +32 -0
- package/src/charting/datamodel/scorecard/index.js +8 -0
- package/src/charting/diagrams/DataModelDiagram.js +4 -11
- package/src/charting/diagrams/DataModelRelationshipStrategy.js +7 -1
- package/src/charting/diagrams/NodeGeometry.js +6 -2
- package/src/charting/toolbar/ToolbarSelect.js +6 -0
- package/src/datamodel.js +402 -4
- package/src/index.js +2666 -2666
- package/src/workspace/parts/DataModelPart.js +197 -6
package/examples/data-model.html
CHANGED
|
@@ -115,6 +115,7 @@
|
|
|
115
115
|
|
|
116
116
|
const logical = {
|
|
117
117
|
entities: [
|
|
118
|
+
{ id: 'party', name: 'Party', ...at(0.5, -0.8), description: 'A person or an organisation: what Person and Organisation are kinds of.', attributes: [attr('party id', 'PK'), attr('kind')] },
|
|
118
119
|
{ id: 'person', name: 'Person', ...at(0, 0), attributes: [attr('party id', 'PK'), attr('given name'), attr('family name'), attr('born on')] },
|
|
119
120
|
{ id: 'organisation', name: 'Organisation', ...at(1, 0), attributes: [attr('party id', 'PK'), attr('legal name'), attr('registration number')] },
|
|
120
121
|
{ id: 'party-role', name: 'Party Role', ...at(0, 1), attributes: [attr('party id', 'PK FK'), attr('role code', 'PK FK'), attr('valid from'), attr('valid to')] },
|
|
@@ -137,6 +138,8 @@
|
|
|
137
138
|
{ id: 'code', name: 'Classification Code', ...at(4, 2), attributes: [attr('scheme', 'PK FK'), attr('code', 'PK'), attr('label'), attr('parent code', 'FK')] },
|
|
138
139
|
],
|
|
139
140
|
relationships: [
|
|
141
|
+
{ id: 'person-is-party', kind: 'generalization', source: 'person', target: 'party', complete: true, disjoint: true },
|
|
142
|
+
{ id: 'organisation-is-party', kind: 'generalization', source: 'organisation', target: 'party', complete: true, disjoint: true },
|
|
140
143
|
{ source: 'person', target: 'party-role', name: 'plays', sourceCardinality: '1', targetCardinality: '0..*' },
|
|
141
144
|
{ source: 'organisation', target: 'party-role', name: 'plays', sourceCardinality: '1', targetCardinality: '0..*' },
|
|
142
145
|
{ source: 'arrangement', target: 'participation', name: 'has', sourceCardinality: '1', targetCardinality: '1..*' },
|
|
@@ -181,7 +184,7 @@
|
|
|
181
184
|
] },
|
|
182
185
|
{ id: 'place', name: 'place', ...at(3, 0), attributes: [
|
|
183
186
|
// GEOGRAPHY is no type group the drawing knows: it shows as unknown (grey).
|
|
184
|
-
attr('place_id', 'PK', 'BIGINT'), attr('name', '', '
|
|
187
|
+
attr('place_id', 'PK', 'BIGINT'), attr('name', '', 'VARCHAR(120)'), attr('location', '', 'GEOGRAPHY'), attr('tz', '', 'VARCHAR(40)'),
|
|
185
188
|
] },
|
|
186
189
|
{ id: 'business_event', name: 'business_event', ...at(2, 1), attributes: [
|
|
187
190
|
attr('event_id', 'PK', 'BIGINT'), attr('type_code', 'FK', 'VARCHAR(20)'), attr('occurred_at', '', 'TIMESTAMP'),
|
|
@@ -197,7 +200,7 @@
|
|
|
197
200
|
attr('launched_on', '', 'DATE'), attr('retired_on', '', 'DATE'), attr('components', '', 'JSONB'),
|
|
198
201
|
] },
|
|
199
202
|
{ id: 'product_price', name: 'product_price', ...at(4, 1), attributes: [
|
|
200
|
-
attr('product_id', 'PK FK', 'BIGINT'), attr('valid_from', 'PK', 'DATE'), attr('amount', '', 'DECIMAL(
|
|
203
|
+
attr('product_id', 'PK FK', 'BIGINT'), attr('valid_from', 'PK', 'DATE'), attr('amount', '', 'DECIMAL(18,2)'), attr('currency', '', 'CHAR(3)'),
|
|
201
204
|
] },
|
|
202
205
|
{ id: 'agreement', name: 'agreement', ...at(0, 3), attributes: [
|
|
203
206
|
attr('agreement_id', 'PK', 'BIGINT'), attr('party_id', 'FK', 'BIGINT'), attr('signed_on', '', 'DATE'), attr('terms', '', 'JSONB'),
|
|
@@ -206,7 +209,7 @@
|
|
|
206
209
|
attr('product_id', 'PK FK', 'BIGINT'), attr('feature', 'PK', 'VARCHAR(40)'), attr('value', '', 'TEXT'),
|
|
207
210
|
] },
|
|
208
211
|
{ id: 'condition', name: 'condition', ...at(2, 3), attributes: [
|
|
209
|
-
attr('condition_code', 'PK', 'VARCHAR(20)'), attr('kind', '', 'VARCHAR(
|
|
212
|
+
attr('condition_code', 'PK', 'VARCHAR(20)'), attr('kind', '', 'VARCHAR(20)'), attr('rate', '', 'DECIMAL(9,4)'), attr('product_id', 'FK', 'BIGINT'),
|
|
210
213
|
] },
|
|
211
214
|
{ id: 'business_direction', name: 'business_direction', ...at(0, 2), attributes: [
|
|
212
215
|
attr('direction_id', 'PK', 'BIGINT'), attr('kind', '', 'VARCHAR(20)'), attr('statement', '', 'TEXT'),
|
|
@@ -214,9 +217,9 @@
|
|
|
214
217
|
] },
|
|
215
218
|
{ id: 'direction_target', name: 'direction_target', ...at(4, 2), attributes: [
|
|
216
219
|
attr('direction_id', 'PK FK', 'BIGINT'), attr('measure', 'PK', 'VARCHAR(40)'), attr('product_id', 'FK', 'BIGINT'),
|
|
217
|
-
attr('
|
|
220
|
+
attr('target_value', '', 'NUMERIC(14,2)'), attr('unit', '', 'VARCHAR(10)'), attr('due_on', '', 'DATE'),
|
|
218
221
|
] },
|
|
219
|
-
{ id: 'account', name: 'account', ...at(3, 2), attributes: [attr('account_code', 'PK', 'VARCHAR(20)'), attr('name', '', '
|
|
222
|
+
{ id: 'account', name: 'account', ...at(3, 2), attributes: [attr('account_code', 'PK', 'VARCHAR(20)'), attr('name', '', 'VARCHAR(120)'), attr('kind', '', 'VARCHAR(20)')] },
|
|
220
223
|
{ id: 'classification', name: 'classification', ...at(3, 1), attributes: [
|
|
221
224
|
attr('scheme', 'PK', 'VARCHAR(40)'), attr('code', 'PK', 'VARCHAR(20)'), attr('label', '', 'TEXT'),
|
|
222
225
|
attr('parent_code', 'FK', 'VARCHAR(20)'), attr('notes'), // no type at all: unknown too
|
|
@@ -246,7 +249,7 @@
|
|
|
246
249
|
// How the levels map: [concept, logical entity], then [logical entity, table]; any number either way.
|
|
247
250
|
const mappings = [
|
|
248
251
|
{ from: 'conceptual', to: 'logical', pairs: [
|
|
249
|
-
['party', 'person'], ['party', 'organisation'], ['role', 'party-role'],
|
|
252
|
+
['party', 'party'], ['party', 'person'], ['party', 'organisation'], ['role', 'party-role'],
|
|
250
253
|
['party', 'participation'], ['arrangement', 'participation'], ['role', 'participation'],
|
|
251
254
|
['arrangement', 'arrangement'], ['resource', 'resource'], ['place', 'place'], ['event', 'event'],
|
|
252
255
|
['ledger', 'account'], ['ledger', 'ledger-entry'], ['classification', 'scheme'], ['classification', 'code'],
|
|
@@ -255,7 +258,7 @@
|
|
|
255
258
|
['agreement', 'agreement'], ['feature', 'product-feature'], ['condition', 'condition'],
|
|
256
259
|
] },
|
|
257
260
|
{ from: 'logical', to: 'physical', pairs: [
|
|
258
|
-
['person', 'party'], ['organisation', 'party'], ['party-role', 'party_role'], ['participation', 'arrangement_party'],
|
|
261
|
+
['party', 'party'], ['person', 'party'], ['organisation', 'party'], ['party-role', 'party_role'], ['participation', 'arrangement_party'],
|
|
259
262
|
['arrangement', 'arrangement'], ['resource', 'resource'], ['place', 'place'],
|
|
260
263
|
['event', 'business_event'], ['event', 'event_payload'], ['account', 'account'], ['ledger-entry', 'ledger_entry'],
|
|
261
264
|
['scheme', 'classification'], ['code', 'classification'],
|
|
@@ -307,6 +310,7 @@
|
|
|
307
310
|
{ id: 'gst', text: 'Prices include GST (10%)', applies: ['ledger', 'product'], x: 1030, y: 600 },
|
|
308
311
|
{ id: 'one-price', text: 'A product has one current price', applies: ['product'], x: 730, y: 790 },
|
|
309
312
|
{ id: 'one-payer', text: 'A subscription has exactly one paying customer', applies: ['arrangement', 'party'], x: 280, y: 225 },
|
|
313
|
+
{ id: 'legal-name', text: 'always given for an organisation', applies: ['party'], dimension: 'Completeness', attribute: 'legal name', x: 1330, y: 225 },
|
|
310
314
|
],
|
|
311
315
|
},
|
|
312
316
|
{
|
|
@@ -360,7 +364,8 @@
|
|
|
360
364
|
levels: {
|
|
361
365
|
conceptual: {
|
|
362
366
|
entities: [
|
|
363
|
-
{ id: 'party', name: 'Party', details: { bian: 'Party' }, ...grid(0, 0), shape: 'person', labelPosition: 'below', color: '#ede9fe', description: 'A person or organisation the bank deals with.'
|
|
367
|
+
{ id: 'party', name: 'Party', details: { bian: 'Party' }, ...grid(0, 0), shape: 'person', labelPosition: 'below', color: '#ede9fe', description: 'A person or organisation the bank deals with.',
|
|
368
|
+
sensitivity: 'Confidential', categories: ['PII'], stewardship: { owner: 'Head of Customer', steward: 'Customer data steward' } },
|
|
364
369
|
{ id: 'agreement', name: 'Agreement', details: { bian: 'Agreement' }, ...grid(1, 0), shape: 'contract-box', color: '#fef9c3', description: 'The contract a customer signs with the bank: the promises both parties agree on.' },
|
|
365
370
|
{ id: 'arrangement', name: 'Arrangement', details: { bian: 'Arrangement' }, ...grid(2, 0), color: '#fef3c7', description: 'The terms a product is provided on, under an agreement: an account, a loan.' },
|
|
366
371
|
{ id: 'product', name: 'Product', details: { bian: 'Product' }, ...grid(3, 0), shape: 'product-box', color: '#dcfce7', description: 'What the bank offers: a current account, a consumer loan.' },
|
|
@@ -377,9 +382,11 @@
|
|
|
377
382
|
},
|
|
378
383
|
logical: {
|
|
379
384
|
entities: [
|
|
380
|
-
{ id: 'party-entry', name: 'Party Reference Data Directory Entry', ...grid(0, 0),
|
|
381
|
-
|
|
382
|
-
{ id: '
|
|
385
|
+
{ id: 'party-entry', name: 'Party Reference Data Directory Entry', ...grid(0, 0), stewardship: { steward: 'Customer data steward' },
|
|
386
|
+
attributes: [attr('party id', 'PK'), { ...attr('legal name'), sensitivity: 'Confidential', categories: ['PII'] }, attr('kind')] },
|
|
387
|
+
{ id: 'party-reference', name: 'Reference', ...grid(0, 1), attributes: [attr('party id', 'PK FK'),
|
|
388
|
+
{ ...attr('tax number'), sensitivity: 'Restricted', categories: ['PII'] }, { ...attr('passport'), sensitivity: 'Restricted', categories: ['PII'] }] },
|
|
389
|
+
{ id: 'demographics', name: 'Demographics', ...grid(0, 2), attributes: [attr('party id', 'PK FK'), { ...attr('born on'), sensitivity: 'Confidential', categories: ['PII'] }, attr('occupation')] },
|
|
383
390
|
{ id: 'customer-agreement', name: 'Customer Agreement', ...grid(1, 0), attributes: [attr('agreement id', 'PK'), attr('party id', 'FK'), attr('signed on'), attr('status')] },
|
|
384
391
|
{ id: 'agreement-term', name: 'Agreement Term', ...grid(1, 1), attributes: [attr('agreement id', 'PK FK'), attr('term', 'PK'), attr('value')] },
|
|
385
392
|
{ id: 'current-account', name: 'Current Account Facility', ...grid(2, 0), attributes: [attr('arrangement id', 'PK'), attr('agreement id', 'FK'), attr('product id', 'FK'), attr('account number', '', 'Account Identification'), attr('account type', '', 'Current Account Type'), attr('currency', '', 'Currency Code'), attr('balance', '', 'Amount'), attr('opened on')] },
|
|
@@ -419,17 +426,31 @@
|
|
|
419
426
|
},
|
|
420
427
|
physical: {
|
|
421
428
|
entities: [
|
|
422
|
-
{ id: 'party', name: 'party', ...grid(0, 0), attributes: [attr('party_id', 'PK', 'BIGINT'), attr('legal_name', '', 'VARCHAR(200)'), attr('party_kind', '', 'CHAR(1)'), attr('tax_number', '', 'VARCHAR(20)'), attr('born_on', '', 'DATE'), attr('details', '', 'JSONB')] },
|
|
423
|
-
{ id: 'customer_agreement', name: 'customer_agreement', ...grid(1, 0), attributes: [attr('agreement_id', 'PK', 'BIGINT'), attr('party_id', 'FK', 'BIGINT'), attr('signed_on', '', 'DATE'), attr('status', '', 'VARCHAR(12)'), attr('terms', '', 'JSONB')] },
|
|
424
|
-
{ id: 'account', name: 'account', ...grid(2, 0), attributes: [attr('arrangement_id', 'PK', 'BIGINT'), attr('agreement_id', 'FK', 'BIGINT'), attr('product_id', 'FK', 'BIGINT'), attr('kind', '', '
|
|
425
|
-
{ id: 'account_interest', name: 'account_interest', ...grid(2, 1), attributes: [attr('arrangement_id', 'PK FK', 'BIGINT'), attr('rate', '', 'DECIMAL(7,4)'), attr('basis', '', 'VARCHAR(10)')] },
|
|
426
|
-
{ id: 'account_mandate', name: 'account_mandate', ...grid(2, 2), attributes: [attr('arrangement_id', 'PK FK', 'BIGINT'), attr('mandate', 'PK', 'VARCHAR(30)'), attr('kind', '', 'VARCHAR(
|
|
427
|
-
{ id: 'account_fee', name: 'account_fee', ...grid(2, 3), attributes: [attr('arrangement_id', 'PK FK', 'BIGINT'), attr('fee_code', 'PK', 'VARCHAR(12)'), attr('amount', '', 'DECIMAL(
|
|
428
|
-
{ id: 'loan_schedule', name: 'loan_schedule', ...grid(3, 1), attributes: [attr('arrangement_id', 'PK FK', 'BIGINT'), attr('due_on', 'PK', 'DATE'), attr('kind', '', '
|
|
429
|
+
{ id: 'party', name: 'party', ...grid(0, 0), sensitivity: 'Restricted', categories: ['PII'], stewardship: { custodian: 'Core banking platform team' }, attributes: [attr('party_id', 'PK', 'BIGINT'), attr('legal_name', '', 'VARCHAR(200)'), attr('party_kind', '', 'CHAR(1)'), attr('tax_number', '', 'VARCHAR(20)'), attr('born_on', '', 'DATE'), attr('details', '', 'JSONB')] },
|
|
430
|
+
{ id: 'customer_agreement', name: 'customer_agreement', ...grid(1, 0), attributes: [attr('agreement_id', 'PK', 'BIGINT'), { ...attr('party_id', 'FK', 'BIGINT'), references: 'party' }, attr('signed_on', '', 'DATE'), attr('status', '', 'VARCHAR(12)'), attr('terms', '', 'JSONB')] },
|
|
431
|
+
{ id: 'account', name: 'account', ...grid(2, 0), attributes: [attr('arrangement_id', 'PK', 'BIGINT'), { ...attr('agreement_id', 'FK', 'BIGINT'), references: 'customer_agreement' }, { ...attr('product_id', 'FK', 'BIGINT'), references: 'product' }, attr('kind', '', 'VARCHAR(20)'), attr('balance', '', 'DECIMAL(18,2)'), attr('opened_on', '', 'DATE')] },
|
|
432
|
+
{ id: 'account_interest', name: 'account_interest', ...grid(2, 1), attributes: [{ ...attr('arrangement_id', 'PK FK', 'BIGINT'), references: 'account' }, attr('rate', '', 'DECIMAL(7,4)'), attr('basis', '', 'VARCHAR(10)')] },
|
|
433
|
+
{ id: 'account_mandate', name: 'account_mandate', ...grid(2, 2), attributes: [{ ...attr('arrangement_id', 'PK FK', 'BIGINT'), references: 'account' }, attr('mandate', 'PK', 'VARCHAR(30)'), attr('kind', '', 'VARCHAR(20)'), attr('amount', '', 'DECIMAL(18,2)')] },
|
|
434
|
+
{ id: 'account_fee', name: 'account_fee', ...grid(2, 3), attributes: [{ ...attr('arrangement_id', 'PK FK', 'BIGINT'), references: 'account' }, attr('fee_code', 'PK', 'VARCHAR(12)'), attr('amount', '', 'DECIMAL(18,2)')] },
|
|
435
|
+
{ id: 'loan_schedule', name: 'loan_schedule', ...grid(3, 1), attributes: [attr('arrangement_id', 'PK FK', 'BIGINT'), attr('due_on', 'PK', 'DATE'), attr('kind', '', 'VARCHAR(20)'), attr('amount', '', 'DECIMAL(18,2)'), attr('paid', '', 'BOOLEAN')] },
|
|
429
436
|
{ id: 'payment_order', name: 'payment_order', ...grid(4, 0), attributes: [attr('payment_id', 'PK', 'BIGINT'), attr('from_arrangement', 'FK', 'BIGINT'), attr('to_account', '', 'VARCHAR(34)'), attr('amount', '', 'DECIMAL(18,2)'), attr('status', '', 'VARCHAR(12)'), attr('steps', '', 'JSONB')] },
|
|
430
437
|
{ id: 'product', name: 'product', ...grid(5, 0), attributes: [attr('product_id', 'PK', 'BIGINT'), attr('name', '', 'VARCHAR(120)'), attr('line', '', 'VARCHAR(20)'), attr('features', '', 'JSONB'), attr('conditions', '', 'JSONB')] },
|
|
438
|
+
// A star for reporting balances (a dimensional scheme): a fact at a stated grain, its dimensions around it.
|
|
439
|
+
{ id: 'dim_account', name: 'dim_account', ...grid(6, 0), role: 'dimension', scdType: '2', description: 'An account as it was over time: a row per version.', attributes: [
|
|
440
|
+
attr('account_key', 'PK', 'BIGINT'), { ...attr('arrangement_id', 'FK', 'BIGINT'), references: 'account' }, attr('valid_from', '', 'DATE'), attr('valid_to', '', 'DATE'),
|
|
441
|
+
] },
|
|
442
|
+
{ id: 'dim_date', name: 'dim_date', ...grid(7, 0), role: 'dimension', scdType: '0', conformed: true, description: 'A calendar day, shared by every fact.', attributes: [
|
|
443
|
+
attr('date_key', 'PK', 'INT'), attr('calendar_date', '', 'DATE'), attr('month', '', 'INT'), attr('year', '', 'INT'),
|
|
444
|
+
] },
|
|
445
|
+
{ id: 'fact_daily_balance', name: 'fact_daily_balance', ...grid(6.5, 1.5), role: 'fact', grain: 'One row per account per day', attributes: [
|
|
446
|
+
{ ...attr('date_key', 'PK FK', 'INT'), references: 'dim_date' }, { ...attr('account_key', 'PK FK', 'BIGINT'), references: 'dim_account' },
|
|
447
|
+
{ ...attr('balance', '', 'DECIMAL(18,2)'), measure: 'semi-additive' }, { ...attr('interest_accrued', '', 'DECIMAL(18,2)'), measure: 'additive' },
|
|
448
|
+
] },
|
|
431
449
|
],
|
|
432
450
|
relationships: [
|
|
451
|
+
{ source: 'account', target: 'dim_account', name: 'versioned as', sourceCardinality: '1', targetCardinality: '1..*', identifying: false },
|
|
452
|
+
{ source: 'dim_account', target: 'fact_daily_balance', name: 'balance of', sourceCardinality: '1', targetCardinality: '0..*' },
|
|
453
|
+
{ source: 'dim_date', target: 'fact_daily_balance', name: 'balance on', sourceCardinality: '1', targetCardinality: '0..*' },
|
|
433
454
|
{ source: 'party', target: 'customer_agreement', name: 'signs', sourceCardinality: '1', targetCardinality: '0..*', identifying: false },
|
|
434
455
|
{ source: 'customer_agreement', target: 'account', name: 'governs', sourceCardinality: '1', targetCardinality: '0..*', identifying: false },
|
|
435
456
|
{ source: 'account', target: 'account_interest', name: 'has', sourceCardinality: '1', targetCardinality: '0..1' },
|
|
@@ -482,6 +503,7 @@
|
|
|
482
503
|
{ id: 'account-identification', name: 'Account Identification', basedOn: 'Text', description: 'An account number in any suitable form (an IBAN).', iso20022: 'AccountIdentification' },
|
|
483
504
|
],
|
|
484
505
|
perspectives: [
|
|
506
|
+
{ kind: 'classification', id: 'sensitive', name: 'Sensitive data', description: 'Every entity coloured by how sensitive it is: green public, blue internal, amber confidential, red restricted.' },
|
|
485
507
|
{ kind: 'service-domain', id: 'sd-current-account', name: 'Current Account', businessArea: 'Operations and Execution', businessDomain: 'Loans and Deposits',
|
|
486
508
|
asset: 'Current Account', pattern: 'Fulfill', entities: ['arrangement', 'product', 'condition'], controlRecord: 'current-account',
|
|
487
509
|
qualifiers: [{ name: 'Interest', entity: 'interest' }, { name: 'Payments', entity: 'account-payments' }, { name: 'Service Fees', entity: 'service-fees' }] },
|
package/package.json
CHANGED