Post Install Instructions

Even after installed, Jarvis will have no effect on Salesforce users experience until you assign one of its Permission Sets to an User, which may be affected accordingly to which Permission Set is assigned.

End User

End users, who will make use of Scripts on customer service use cases, need to have “Jarvis Script User” Permission Set assigned.

Furthermore, an Administrator will need to add “Run Script” button/action into any Object Layout (Account, Contact, Case, Asset) that may apply on its business needs, like illustrated below:

../../_images/runscriptaction.png

Adding “Run Script” action on Account Layout.

Administrator

Administrators, who will manage all Scripts definitions, need to have “Jarvis Script Administration” Permission Set assigned.

../../_images/jarvisapp.png

Jarvis application being accessible by 9-dots menu.

Sample Data (Test data):

Some test data can be inserted by calling “JarvisDataHelper” Apex Class through Developer Console. See source code below:

Anonymous Apex Code
1
JarvisDataHelper.insertData('Script');

Sample Data (Example):

Some example data can be inserted (for testing purposes) by creating “JarvisTestData” Apex Class, and then calling it through Developer Console. See source code below:

JarvisTestData.cls
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
public class JarvisTestData {

        private static final List<jarvis__Script_Typo__c> SCRIPT_TYPO_DATA = new List<jarvis__Script_Typo__c> {
                new jarvis__Script_Typo__c(
                        jarvis__Name__c = 'Information 01',
                        jarvis__External_ID__c = 'Jarvis Demo 01',
                        jarvis__Status__c = 'Active',
                        jarvis__Level_01__c = 'Information',
                        jarvis__Level_02__c = 'Request',
                        jarvis__Level_03__c = 'Quote'
                ),
                new jarvis__Script_Typo__c(
                        jarvis__Name__c = 'Information 02',
                        jarvis__External_ID__c = 'Jarvis Demo 02',
                        jarvis__Status__c = 'Active',
                        jarvis__Level_01__c = 'Information',
                        jarvis__Level_02__c = 'Request',
                        jarvis__Level_03__c = 'Brochure'
                ),
                new jarvis__Script_Typo__c(
                        jarvis__Name__c = 'Information 03',
                        jarvis__External_ID__c = 'Jarvis Demo 03',
                        jarvis__Status__c = 'Active',
                        jarvis__Level_01__c = 'Information',
                        jarvis__Level_02__c = 'One thing here',
                        jarvis__Level_03__c = 'A new level here',
                        jarvis__Level_04__c = 'And a new one',
                        jarvis__Level_05__c = 'One last one'
                ),
                new jarvis__Script_Typo__c(
                        jarvis__Name__c = 'Information 04',
                        jarvis__External_ID__c = 'Jarvis Demo 04',
                        jarvis__Status__c = 'Active',
                        jarvis__Level_01__c = 'Information',
                        jarvis__Level_02__c = 'Another thing here',
                        jarvis__Level_03__c = 'A new level here',
                        jarvis__Level_04__c = 'And a new one',
                        jarvis__Level_05__c = 'One more',
                        jarvis__Level_06__c = 'And one more',
                        jarvis__Level_07__c = 'Almost there...',
                        jarvis__Level_08__c = 'Anything else'
                ),
                new jarvis__Script_Typo__c(
                        jarvis__Name__c = 'Complaint 01',
                        jarvis__External_ID__c = 'Jarvis Demo 05',
                        jarvis__Status__c = 'Active',
                        jarvis__Level_01__c = 'Complaint',
                        jarvis__Level_02__c = 'One thing here',
                        jarvis__Level_03__c = 'A new level here',
                        jarvis__Level_04__c = 'And a new one',
                        jarvis__Level_05__c = 'One more',
                        jarvis__Level_06__c = 'And one more'
                ),
                new jarvis__Script_Typo__c(
                        jarvis__Name__c = 'Complaint 02',
                        jarvis__External_ID__c = 'Jarvis Demo 06',
                        jarvis__Status__c = 'Active',
                        jarvis__Level_01__c = 'Complaint',
                        jarvis__Level_02__c = 'One thing here',
                        jarvis__Level_03__c = 'And a new one',
                        jarvis__Level_04__c = 'A new level here',
                        jarvis__Level_05__c = 'One more',
                        jarvis__Level_06__c = 'And one more'
                ),
                new jarvis__Script_Typo__c(
                        jarvis__Name__c = 'Complaint 03',
                        jarvis__External_ID__c = 'Jarvis Demo 07',
                        jarvis__Status__c = 'Active',
                        jarvis__Level_01__c = 'Complaint',
                        jarvis__Level_02__c = 'Two things here',
                        jarvis__Level_03__c = 'A new level here',
                        jarvis__Level_04__c = 'And a new one',
                        jarvis__Level_05__c = 'One more'
                ),
                new jarvis__Script_Typo__c(
                        jarvis__Name__c = 'Complaint 04',
                        jarvis__External_ID__c = 'Jarvis Demo 08',
                        jarvis__Status__c = 'Active',
                        jarvis__Level_01__c = 'Complaint',
                        jarvis__Level_02__c = 'Two things here',
                        jarvis__Level_03__c = 'A new level here',
                        jarvis__Level_04__c = 'And a new one',
                        jarvis__Level_05__c = 'One more',
                        jarvis__Level_06__c = 'And one more'
                ),
                new jarvis__Script_Typo__c(
                        jarvis__Name__c = 'Complaint 05',
                        jarvis__External_ID__c = 'Jarvis Demo 09',
                        jarvis__Status__c = 'Active',
                        jarvis__Level_01__c = 'Complaint',
                        jarvis__Level_02__c = 'Two things here',
                        jarvis__Level_03__c = 'A new level here',
                        jarvis__Level_04__c = 'And a new one',
                        jarvis__Level_05__c = 'One more',
                        jarvis__Level_06__c = 'And one more',
                        jarvis__Level_07__c = 'Anything else'
                ),
                new jarvis__Script_Typo__c(
                        jarvis__Name__c = 'Suggestion 01',
                        jarvis__External_ID__c = 'Jarvis Demo 10',
                        jarvis__Status__c = 'Active',
                        jarvis__Level_01__c = 'Suggestion',
                        jarvis__Level_02__c = 'Do something',
                        jarvis__Level_03__c = 'A little bit different',
                        jarvis__Level_04__c = 'And something repeating here',
                        jarvis__Level_05__c = 'And on',
                        jarvis__Level_06__c = 'And on',
                        jarvis__Level_07__c = 'First one',
                        jarvis__Level_08__c = 'Anything else'
                ),
                new jarvis__Script_Typo__c(
                        jarvis__Name__c = 'Suggestion 02',
                        jarvis__External_ID__c = 'Jarvis Demo 11',
                        jarvis__Status__c = 'Active',
                        jarvis__Level_01__c = 'Suggestion',
                        jarvis__Level_02__c = 'Do something',
                        jarvis__Level_03__c = 'A little bit different',
                        jarvis__Level_04__c = 'And something repeating here',
                        jarvis__Level_05__c = 'And on',
                        jarvis__Level_06__c = 'And on',
                        jarvis__Level_07__c = 'Second one',
                        jarvis__Level_08__c = 'Anything else'
                ),
                new jarvis__Script_Typo__c(
                        jarvis__Name__c = 'Suggestion 03',
                        jarvis__External_ID__c = 'Jarvis Demo 12',
                        jarvis__Status__c = 'Active',
                        jarvis__Level_01__c = 'Suggestion',
                        jarvis__Level_02__c = 'Do something',
                        jarvis__Level_03__c = 'A little bit different',
                        jarvis__Level_04__c = 'And something repeating here',
                        jarvis__Level_05__c = 'And on',
                        jarvis__Level_06__c = 'And on',
                        jarvis__Level_07__c = 'Third one',
                        jarvis__Level_08__c = 'Anything else'
                ),
                new jarvis__Script_Typo__c(
                        jarvis__Name__c = 'Anything else 01',
                        jarvis__External_ID__c = 'Jarvis Demo 13',
                        jarvis__Status__c = 'Active',
                        jarvis__Level_01__c = 'Anything else'
                )
        };

        private static final List<jarvis__Agreement__c> SCRIPT_AGREEMENT_DATA = new List<jarvis__Agreement__c> {
                new jarvis__Agreement__c(jarvis__Name__c = 'Agreement 01', jarvis__Text_Value__c = 'Agreement 01 text here', jarvis__Display_Text__c = 'Agreement 01 text here'),
                new jarvis__Agreement__c(jarvis__Name__c = 'Agreement 02', jarvis__Text_Value__c = 'Agreement 02 text here', jarvis__Display_Text__c = 'Agreement 02 text here'),
                new jarvis__Agreement__c(jarvis__Name__c = 'Agreement 03', jarvis__Text_Value__c = 'Agreement 03 text here', jarvis__Display_Text__c = 'Agreement 03 text here')
        };

        private static final List<jarvis__Question__c> SCRIPT_QUESTION_DATA = new List<jarvis__Question__c> {
                new jarvis__Question__c(jarvis__Type__c = 'Text', jarvis__Name__c = 'Non_Required_Question', jarvis__Text__c = 'Any non required question?', jarvis__Display_Text__c = 'Any non required question?'),
                new jarvis__Question__c(jarvis__Type__c = 'Boolean', jarvis__Name__c = 'Boolean 01', jarvis__Text__c = 'Boolean 01?', jarvis__Display_Text__c = 'Boolean 01?'),
                new jarvis__Question__c(jarvis__Type__c = 'Checkbox', jarvis__Name__c = 'Checkbox 01', jarvis__Text__c = 'Checkbox 01?', jarvis__Display_Text__c = 'Checkbox 01?'),
                new jarvis__Question__c(jarvis__Type__c = 'Radio', jarvis__Name__c = 'Radio 01', jarvis__Text__c = 'Radio 01?', jarvis__Display_Text__c = 'Radio 01?'),
                new jarvis__Question__c(jarvis__Type__c = 'Text', jarvis__Name__c = 'Text 01', jarvis__Text__c = 'Text 01?', jarvis__Display_Text__c = 'Text 01?'),
                new jarvis__Question__c(jarvis__Type__c = 'Text', jarvis__Name__c = 'Text 02', jarvis__Text__c = 'Text 02?', jarvis__Display_Text__c = 'Text 02?'),
                new jarvis__Question__c(jarvis__Type__c = 'Text', jarvis__Name__c = 'Text 03', jarvis__Text__c = 'Text 03?', jarvis__Display_Text__c = 'Text 03?'),
                new jarvis__Question__c(jarvis__Type__c = 'TextArea', jarvis__Name__c = 'TextArea 01', jarvis__Text__c = 'TextArea 01?', jarvis__Display_Text__c = 'TextArea 01?')
        };

        private static final List<List<jarvis__Question_Domain__c>> SCRIPT_QUESTION_DOMAIN_DATA = new List<List<jarvis__Question_Domain__c>> {
                new List<jarvis__Question_Domain__c>(),
                new List<jarvis__Question_Domain__c> {
                        new jarvis__Question_Domain__c(jarvis__Name__c = 'Yes', jarvis__Value__c = 'Yes', jarvis__Display_Value__c = 'Yes'),
                        new jarvis__Question_Domain__c(jarvis__Name__c = 'No', jarvis__Value__c = 'No', jarvis__Display_Value__c = 'No')
                },
                new List<jarvis__Question_Domain__c> {
                        new jarvis__Question_Domain__c(jarvis__Name__c = 'CheckboxYes', jarvis__Value__c = 'Yes', jarvis__Display_Value__c = 'Yes'),
                        new jarvis__Question_Domain__c(jarvis__Name__c = 'CheckboxNo', jarvis__Value__c = 'No', jarvis__Display_Value__c = 'No'),
                        new jarvis__Question_Domain__c(jarvis__Name__c = 'CheckboxMaybe', jarvis__Value__c = 'Maybe', jarvis__Display_Value__c = 'Maybe')
                },
                new List<jarvis__Question_Domain__c> {
                        new jarvis__Question_Domain__c(jarvis__Name__c = 'Option 01', jarvis__Value__c = 'Option 01', jarvis__Display_Value__c = 'Option 01'),
                        new jarvis__Question_Domain__c(jarvis__Name__c = 'Option 02', jarvis__Value__c = 'Option 02', jarvis__Display_Value__c = 'Option 02'),
                        new jarvis__Question_Domain__c(jarvis__Name__c = 'Option 03', jarvis__Value__c = 'Option 03', jarvis__Display_Value__c = 'Option 03'),
                        new jarvis__Question_Domain__c(jarvis__Name__c = 'Option 04', jarvis__Value__c = 'Option 04', jarvis__Display_Value__c = 'Option 04'),
                        new jarvis__Question_Domain__c(jarvis__Name__c = 'Option 05', jarvis__Value__c = 'Option 05', jarvis__Display_Value__c = 'Option 05'),
                        new jarvis__Question_Domain__c(jarvis__Name__c = 'Option 06', jarvis__Value__c = 'Option 06', jarvis__Display_Value__c = 'Option 06')
                },
                new List<jarvis__Question_Domain__c>(),
                new List<jarvis__Question_Domain__c>(),
                new List<jarvis__Question_Domain__c>(),
                new List<jarvis__Question_Domain__c>()
        };

        private static final List<jarvis__Script__c> SCRIPT_DATA = new List<jarvis__Script__c> {
                new jarvis__Script__c(jarvis__Name__c = 'Script_01', jarvis__Public__c = true, jarvis__Version__c = 1, jarvis__Status__c = 'Active'),
                new jarvis__Script__c(jarvis__Name__c = 'Script_02', jarvis__Public__c = true, jarvis__Version__c = 1, jarvis__Status__c = 'Active'),
                new jarvis__Script__c(jarvis__Name__c = 'Script_03', jarvis__Public__c = true, jarvis__Version__c = 1, jarvis__Status__c = 'Active'),
                new jarvis__Script__c(jarvis__Name__c = 'Script_04', jarvis__Public__c = true, jarvis__Version__c = 1, jarvis__Status__c = 'Active')
        };

        private static final List<jarvis__Script_Fragment__c> SCRIPT_FRAGMENT_DATA = new List<jarvis__Script_Fragment__c> {
                new jarvis__Script_Fragment__c(jarvis__Name__c = 'Fragment_01_1', jarvis__Allows_Undo__c = false),
                new jarvis__Script_Fragment__c(jarvis__Name__c = 'Fragment_01_2', jarvis__Allows_Undo__c = false),
                new jarvis__Script_Fragment__c(jarvis__Name__c = 'Fragment_01_3', jarvis__Allows_Undo__c = false),
                new jarvis__Script_Fragment__c(jarvis__Name__c = 'Fragment_02', jarvis__Allows_Undo__c = false),
                new jarvis__Script_Fragment__c(jarvis__Name__c = 'Fragment_03', jarvis__Allows_Undo__c = false),
                new jarvis__Script_Fragment__c(jarvis__Name__c = 'Fragment_04', jarvis__Allows_Undo__c = false)
        };

        private static final List<jarvis__Script_Fragment__c> SCRIPT_FRAGMENT_PARENT_DATA = new List<jarvis__Script_Fragment__c> {
                null,
                SCRIPT_FRAGMENT_DATA.get(0),
                SCRIPT_FRAGMENT_DATA.get(0),
                null,
                null,
                null
        };

        private static final List<List<jarvis__Script_Fragment__c>> SCRIPT_FRAGMENT_ASSOC_DATA = new List<List<jarvis__Script_Fragment__c>> {
                new List<jarvis__Script_Fragment__c> { SCRIPT_FRAGMENT_DATA.get(0), SCRIPT_FRAGMENT_DATA.get(1), SCRIPT_FRAGMENT_DATA.get(2) },
                new List<jarvis__Script_Fragment__c> { SCRIPT_FRAGMENT_DATA.get(3) },
                new List<jarvis__Script_Fragment__c> { SCRIPT_FRAGMENT_DATA.get(4) },
                new List<jarvis__Script_Fragment__c> { SCRIPT_FRAGMENT_DATA.get(5) }
        };

        private static final List<List<jarvis__Question__c>> SCRIPT_FRAGMENT_QUESTION_DATA = new List<List<jarvis__Question__c>> {
                new List<jarvis__Question__c> { SCRIPT_QUESTION_DATA.get(2), SCRIPT_QUESTION_DATA.get(0) },
                new List<jarvis__Question__c> { SCRIPT_QUESTION_DATA.get(3), SCRIPT_QUESTION_DATA.get(0) },
                new List<jarvis__Question__c> { SCRIPT_QUESTION_DATA.get(1), SCRIPT_QUESTION_DATA.get(0) },
                new List<jarvis__Question__c> { SCRIPT_QUESTION_DATA.get(1), SCRIPT_QUESTION_DATA.get(4), SCRIPT_QUESTION_DATA.get(0) },
                new List<jarvis__Question__c> { SCRIPT_QUESTION_DATA.get(2), SCRIPT_QUESTION_DATA.get(5), SCRIPT_QUESTION_DATA.get(0) },
                new List<jarvis__Question__c> { SCRIPT_QUESTION_DATA.get(3), SCRIPT_QUESTION_DATA.get(6), SCRIPT_QUESTION_DATA.get(7) }
        };

        private static final List<jarvis__Script_Path__c> SCRIPT_PATH_DATA = new List<jarvis__Script_Path__c> {
                new jarvis__Script_Path__c(jarvis__Title__c = 'Script_01_FromPage_01_ToPage_02', jarvis__Sequence__c = 2, jarvis__Effective_Start_Date__c = Datetime.now().date(), jarvis__Active__c = true),
                new jarvis__Script_Path__c(jarvis__Title__c = 'Script_01_FromPage_01_ToPage_03', jarvis__Sequence__c = 1, jarvis__Effective_Start_Date__c = Datetime.now().date(), jarvis__Active__c = true),
                new jarvis__Script_Path__c(jarvis__Title__c = 'Script_01_FromPage_03_ToPage_02', jarvis__Sequence__c = 1, jarvis__Effective_Start_Date__c = Datetime.now().date(), jarvis__Active__c = true)
        };

        private static final List<List<jarvis__Script_Path__c>> SCRIPT_PATH_ASSOC_DATA = new List<List<jarvis__Script_Path__c>> {
                new List<jarvis__Script_Path__c> { SCRIPT_PATH_DATA.get(0), SCRIPT_PATH_DATA.get(1) },
                new List<jarvis__Script_Path__c>(),
                new List<jarvis__Script_Path__c> { SCRIPT_PATH_DATA.get(2) },
                new List<jarvis__Script_Path__c>(),
                new List<jarvis__Script_Path__c>(),
                new List<jarvis__Script_Path__c>()
        };

        private static final List<jarvis__Script_Fragment__c> SCRIPT_PATH_NEXT_DATA = new List<jarvis__Script_Fragment__c> {
                SCRIPT_FRAGMENT_DATA.get(1),
                SCRIPT_FRAGMENT_DATA.get(2),
                SCRIPT_FRAGMENT_DATA.get(1)
        };

        private static final List<List<jarvis__Script_Path_Condition__c>> SCRIPT_PATH_CONDITION_DATA = new List<List<jarvis__Script_Path_Condition__c>> {
                new List<jarvis__Script_Path_Condition__c> (),
                new List<jarvis__Script_Path_Condition__c> {
                        new jarvis__Script_Path_Condition__c(
                                jarvis__Sequence__c = 1,
                                jarvis__Type__c = 'Answer',
                                jarvis__Data_Type__c = 'Text',
                                jarvis__Key__c = 'Checkbox 01',
                                jarvis__Comparison__c = 'Equals',
                                jarvis__Value__c = 'Maybe'
                        )
                },
                new List<jarvis__Script_Path_Condition__c> ()
        };

        public static void insertData() {
                List<Account> accounts = new List<Account> {
                        new Account(Name = 'Test Account'),
                        new Account(Name = 'Test Account II')
                };
                insert accounts;

                List<Contact> contacts = new List<Contact> {
                        new Contact(FirstName = 'Test', LastName = 'Contact', AccountId = accounts[0].Id),
                        new Contact(FirstName = 'Test', LastName = 'Contact II', AccountId = accounts[1].Id),
                        new Contact(FirstName = 'Test', LastName = 'Contact III', AccountId = accounts[1].Id)
                };
                insert contacts;

                List<Product2> products = new List<Product2> {
                        new Product2(Name = 'Dummy product', ProductCode = 'DUMMY-001', IsActive = true),
                        new Product2(Name = 'Dummy product II', ProductCode = 'DUMMY-002', IsActive = true)
                };
                insert products;

                List<Asset> assets = new List<Asset> {
                        new Asset(Name = products[0].Name, AccountId = accounts[0].Id, ContactId = contacts[0].Id, Product2Id = products[0].Id, Quantity = 1),
                        new Asset(Name = products[1].Name, AccountId = accounts[1].Id, ContactId = contacts[1].Id, Product2Id = products[1].Id, Quantity = 1)
                };
                insert assets;

                List<Case> cases = new List<Case> {
                        new Case(AccountId = accounts[0].Id, ContactId = contacts[0].Id, AssetId = assets[0].Id),
                        new Case(AccountId = accounts[1].Id, ContactId = contacts[1].Id, AssetId = assets[1].Id)
                };
                insert cases;

                // SCRIPT_AGREEMENT_DATA adds some Agreement__c into database
                insert SCRIPT_AGREEMENT_DATA;

                // SCRIPT_QUESTION_DATA adds some Question__c into database
                insert SCRIPT_QUESTION_DATA;

                // SCRIPT_QUESTION_DOMAIN_DATA adds Question_Domain__c into each SCRIPT_QUESTION_DATA
                List<jarvis__Question_Domain__c> domains = new List<jarvis__Question_Domain__c>();
                for (Integer i = 0; i < SCRIPT_QUESTION_DATA.size(); i++) {
                        List<jarvis__Question_Domain__c> domain = SCRIPT_QUESTION_DOMAIN_DATA.get(i);

                        if (jarvis.JarvisUtils.isEmpty(domain)) {
                                continue;
                        }

                        jarvis__Question__c question = SCRIPT_QUESTION_DATA.get(i);
                        for (jarvis__Question_Domain__c item : domain) {
                                item.jarvis__Question_Definition__c = question.Id;
                                domains.add(item);
                        }
                }
                insert domains;

                // SCRIPT_DATA adds some Script__c into database, associated with SCRIPT_AGREEMENT_DATA when needed
                SCRIPT_DATA.get(1).jarvis__Initial_Agreement__c = SCRIPT_AGREEMENT_DATA.get(1).Id;
                SCRIPT_DATA.get(2).jarvis__Final_Agreement__c = SCRIPT_AGREEMENT_DATA.get(2).Id;
                SCRIPT_DATA.get(3).jarvis__Initial_Agreement__c = SCRIPT_AGREEMENT_DATA.get(0).Id;
                SCRIPT_DATA.get(3).jarvis__Final_Agreement__c = SCRIPT_AGREEMENT_DATA.get(1).Id;
                insert SCRIPT_DATA;

                // Adding a "dummy" Script Automation to the first Script for testing purposes
                insert new jarvis__Script_Automation__c(
                        jarvis__Context__c = 'Script',
                        jarvis__When__c = 'Before',
                        jarvis__Type__c = 'Apex Class',
                        jarvis__ProcessName__c = 'JarvisUserScriptExample',
                        jarvis__Sequence__c = 1,
                        jarvis__Active__c = true,
                        jarvis__Stop_on_error__c = true,
                        jarvis__Script_Definition__c = SCRIPT_DATA.get(0).Id
                );

                // SCRIPT_FRAGMENT_ASSOC_DATA associates SCRIPT_FRAGMENT_DATA with SCRIPT_DATA (Script_Definition__c = scriptId)
                for (Integer i = 0; i < SCRIPT_FRAGMENT_ASSOC_DATA.size(); i++) {
                        jarvis__Script__c script = SCRIPT_DATA.get(i);
                        List<jarvis__Script_Fragment__c> scriptFragments = SCRIPT_FRAGMENT_ASSOC_DATA.get(i);

                        if (jarvis.JarvisUtils.isEmpty(scriptFragments)) {
                                continue;
                        }

                        for (jarvis__Script_Fragment__c item : scriptFragments) {
                                item.jarvis__Script_Definition__c = script.Id;
                        }
                }

                // SCRIPT_FRAGMENT_DATA adds some Script_Fragment__c into database (previously associated to SCRIPT_DATA by SCRIPT_FRAGMENT_ASSOC_DATA)
                insert SCRIPT_FRAGMENT_DATA;

                // SCRIPT_FRAGMENT_PARENT_DATA sets Script_Fragment__c Parent Id when needed
                for (Integer i = 0; i < SCRIPT_FRAGMENT_DATA.size(); i++) {
                        jarvis__Script_Fragment__c fragment = SCRIPT_FRAGMENT_DATA.get(i);
                        jarvis__Script_Fragment__c parent = SCRIPT_FRAGMENT_PARENT_DATA.get(i);

                        if (parent != null) {
                                fragment.jarvis__Parent_Script_Fragment__c = parent.Id;
                        }
                }

                update SCRIPT_FRAGMENT_DATA;

                // SCRIPT_FRAGMENT_QUESTION_DATA adds some Script_Fragment_Question__c into SCRIPT_FRAGMENT_DATA (Script_Fragment__c = fragmentId, Question_Definition__c = questionId)
                List<jarvis__Script_Fragment_Question__c> fragmentsQuestions = new List<jarvis__Script_Fragment_Question__c>();

                for (Integer i = 0; i < SCRIPT_FRAGMENT_QUESTION_DATA.size(); i++) {
                        jarvis__Script_Fragment__c fragment = SCRIPT_FRAGMENT_DATA.get(i);
                        List<jarvis__Question__c> questions = SCRIPT_FRAGMENT_QUESTION_DATA.get(i);

                        if (jarvis.JarvisUtils.isEmpty(questions)) {
                                continue;
                        }

                        for (jarvis__Question__c question : questions) {
                                Boolean hasHelpText = !(SCRIPT_QUESTION_DATA.indexOf(question) == 0);

                                fragmentsQuestions.add(new jarvis__Script_Fragment_Question__c(
                                        jarvis__Script_Fragment__c = fragment.Id,
                                        jarvis__Question_Definition__c = question.Id,
                                        jarvis__Required__c = true,
                                        jarvis__Help_Text__c = hasHelpText ? 'Any help text here' : null
                                ));
                        }
                }

                insert fragmentsQuestions;

                // SCRIPT_PATH_ASSOC_DATA associates SCRIPT_FRAGMENT_DATA with SCRIPT_PATH_DATA (Script_Fragment__c = fragmentId)
                for (Integer i = 0; i < SCRIPT_FRAGMENT_DATA.size(); i++) {
                        jarvis__Script_Fragment__c fragment = SCRIPT_FRAGMENT_DATA.get(i);
                        List<jarvis__Script_Path__c> paths = SCRIPT_PATH_ASSOC_DATA.get(i);

                        if (jarvis.JarvisUtils.isEmpty(paths)) {
                                continue;
                        }

                        for (jarvis__Script_Path__c path : paths) {
                                path.jarvis__Script_Fragment__c = fragment.Id;
                        }
                }

                // SCRIPT_PATH_NEXT_DATA sets SCRIPT_PATH_DATA fields (Next_Fragment__c = nextFragmentId)
                for (Integer i = 0; i < SCRIPT_PATH_DATA.size(); i++) {
                        jarvis__Script_Path__c path = SCRIPT_PATH_DATA.get(i);
                        jarvis__Script_Fragment__c next = SCRIPT_PATH_NEXT_DATA.get(i);

                        path.jarvis__Next_Fragment__c = next.Id;
                }

                // SCRIPT_PATH_DATA has Script_Path__c domain (insert all)
                insert SCRIPT_PATH_DATA;

                // SCRIPT_PATH_CONDITION_DATA adds Script_Path_Condition__c into each SCRIPT_PATH_DATA (Script_Path__c = pathId)
                List<jarvis__Script_Path_Condition__c> allConditions = new List<jarvis__Script_Path_Condition__c>();

                for (Integer i = 0; i < SCRIPT_PATH_DATA.size(); i++) {
                        jarvis__Script_Path__c path = SCRIPT_PATH_DATA.get(i);
                        List<jarvis__Script_Path_Condition__c> conditions = SCRIPT_PATH_CONDITION_DATA.get(i);

                        if (jarvis.JarvisUtils.isEmpty(conditions)) {
                                continue;
                        }

                        for (jarvis__Script_Path_Condition__c condition : conditions) {
                                condition.jarvis__Script_Path__c = path.Id;
                                allConditions.add(condition);
                        }
                }

                insert allConditions;

                // SCRIPT_TYPO_DATA adds a Script reference to some typos (Script_Definition__c = scriptId)
                SCRIPT_TYPO_DATA.get(0).jarvis__Script_Definition__c = SCRIPT_DATA.get(0).Id;
                SCRIPT_TYPO_DATA.get(1).jarvis__Script_Definition__c = SCRIPT_DATA.get(1).Id;
                SCRIPT_TYPO_DATA.get(2).jarvis__Script_Definition__c = SCRIPT_DATA.get(2).Id;
                SCRIPT_TYPO_DATA.get(3).jarvis__Script_Definition__c = SCRIPT_DATA.get(3).Id;
                SCRIPT_TYPO_DATA.get(4).jarvis__Script_Definition__c = SCRIPT_DATA.get(3).Id;
                SCRIPT_TYPO_DATA.get(4).jarvis__Create_Case__c = true;
                insert SCRIPT_TYPO_DATA;
        }

}
Anonymous Apex Code
1
JarvisTestData.insertData();