Post On Change is set typically for what kind of widget?
Input widget
What is the form of a type-safe reference to a property of a class instance in a query when using the Query API?
1. EntityType.Property
2. EntityType_Property
3. EntityType#Property
4. EntityType|Property
3
A bundle has what, which it is most akin to in traditional database parlance?
Each bundle has a database transaction that is part of it.
Bundles look for entities from one of three places, in what order, first to last place?
1. Database, local cache, application cache
2. Application cache, local cache, database
3. Local cache, application cache, database
4. Local cache, database, application cache
Answer 3 is correct.
True or False: The Data Dictionary is re-generated every time you compile the server code
False: The DD has to be re-built manually using:
gwb genDataDictionary
One of the statements below is true; choose it:
1. Check the "Enable targeted Post On Change" checkbox to enable Post On Change.
2. Check the "Post On Enter" checkbox to enable Post On Change.
3. There are three configurable properties: disablePostOnExit, onChange, and target
4. If the 'target' property is set to a widget id, typically the update that will occur will be slower than if the 'target' property were left blank.
5. Post On Change is generally more efficient than using widget reflection.
1
2: There is no such checkbox.
3: disablePostOnEnter is the property, not disablePostOnExit.
4: The order of performance efficiency generally is, slowest to fastest: <no value>, <a widget id>, "DATA_ONLY". So the statement is wrong.
5: the opposite is true.
True or False: Property references are safe to use with virtual fields.
False. Property references only work with fields defined in the database. A run-time exception is thrown if you use it to refer to a virtual field.
What are the two kinds of bundles?
1. Transferable
2. Static
3. Writable
4. Segmented
5. Read-Only
6. Fixed
3 and 5: Read-Only and Writable
True or False: A writable bundle is always automatically committed to a database unless configured otherwise by the developer.
False. It is possible to create a bundle that does not have an explicit code range scope of effect; the bundle is assigned to a variable. Only by calling bundle_variable.commit() is the bundle committed in that case.
Using the form of creating a new bundle that declares a set scope does however call commit() at the end of that scope automatically.
The data dictionary documents in three distinct sections the following (choose three):
1. Key Relationships
2. Entities
3. Tables
4. Fields
5. Typelists
6. Schema Maps
2, 4, and 5
What kind of device is used to temper dynamic behavior on a page such that multiple widgets can be managed together, limiting the number of relationships needed among widgets to monitor one another's state?
1. Input Set
2. Detail View
3. Input Group
4. Widget Container
5. List View
Choice 3 is correct.
Which of these statements is true about case-insensitive searches? Choose two.
1. They require you set 'compareIgnoreCase' to true on the column for the field you want to search.
2. They require you set 'supportsLinguisticSearch' to true on the column for the field you want to search.
3. Case-insensitive searches will not work at all as such if you fail to set the column properties as necessary.
4. You cannot do a case-insensitive search on an encrypted column.
5. Case-insensitive searching requires the Ultimate license to be supported.
2, 4
1: 'compareIgnoreCase' is a function used in a query, not a column attribute.
3: CISs will work without 'supportLinguisticSearch' set to true, just not as efficiently.
5: Simply false.
What happens when you try to add a modified version of an entity from one bundle to another if committed modifications in the source bundle are not permitted but the destination bundle permits them?
1. Nothing. The entity is passed into the second bundle.
2. An IllegalAccessException is thrown.
3. Nothing will happen but the entity will not be added.
4. An IllegalTransferException is thrown.
5. An IllegalStateException is thrown.
4: An IllegalTransferException is thrown.
If a bundle is created that has no run-as user for it specified, the bundle executes under what user ID privileges?
1. 'su' - Super-User.
2. The currently logged-in user.
3. The 'anon_user' account, which is configured in the System Tools page for permissions and rights.
4. The bundle's transaction will not run without a valid user ID specified.
5. No user ID need be specified typically, as bundles' transactions need not run under any particular user ID.
Item 2 is the answer.
You discover a column named one way in the database (the physical model) and another way in the data dictionary (generated from the logical model). What do you do?
1. Ignore the discrepancy unless it is actually creating a business problem in some way.
2. Change the logical model files to match the physical model.
3. Create a script to change the physical model to match the logical model then send it to Guidewire support for review and validation before running it anywhere.
4. Report it to Guidewire, then wait until the next product upgrade when the issue will probably be resolved.
5. Change the physical model column name to match the logical model because the logical model is the source of truth on the database design. There is no need to contact Guidewire.
Answer 3 is correct.
Select three statements that are true:
1. Client reflection is configured on the listening widget(s).
2. Checking "Enable client reflection" on the triggering widget enables reflection.
3. The triggerIds property is where you specify the triggering widget IDs.
4. Listening widgets reflect changes in these properties: Value, Availability, Value range, Visible, and Input Mask
5. VALUE is used to represent the triggerId field keyword token.
6. postOnChange is specifically preferred over reflection when using ListViews.
1, 3, 5
2: "Enable client reflection" is to be checked on the listening widget, not the triggering widget.
4: 'Visible' doesn't belong in the list.
6: The opposite is true. Reflection is preferred because each new row added to a ListView triggers a trip to the server.
Which of the following are anti-patterns when using the Query API to do searches? Choose three.
1. Use of query.intersect()
2. Use of subselect under an exclusive OR.
3. Using database-level aggregation functions in the query.
4. Use of subselect under an OR.
5. Filtering data by property inspection after the query returns results.
6. Use of compare() to filter query results.
1, 4, 5
2: 4 is correct while 2 is not.
3: This is a best practice.
6: This is a best practice in lieu of what happens in item 5.
Bundles need not be managed by the developer when working in/in context of (some, none, or all may be correct answers):
1. Gosu Rules
2. Gosu code in general
3. Workflows
4. Any plugin
5. UI changes when not in edit mode
1, 3
2: "Gosu code in general" is too expansive; any no. of cases may arise where developer-managed bundles are needed.
4: Only certain plugins do not need explicit management.
5: Opposite is true. "not in edit mode" means, effectively, read-only mode. UI changes in R-O mode do need explicit bundle mgt.
The complete list of non-developer-managed items is:
Gosu Rules, Workflows, Certain Plugins, and changes made to the UI when in read-only mode.
You must use explicit bundle management in which of these cases? Some, none, or all may be valid cases.
1. A user edits a Contact entry and saves it.
2. An external system invokes a web service that stores a new hospital name and address in our system.
3. A Gosu code block with a query that retrieves a list of client addresses.
4. A Gosu code block that retrieves a list of entities and changes all their permission-to-contact flag entries to false.
5. A batch process that runs nightly that generates a report of all new claims added over the last 24 hours.
2, 4
The list of cases where bundle mgt. is necessary is: Web services that make DB changes, batch processes that make DB changes, modifications to entities returned from queries, certain plugins, changes made through the user interface when the user interface is in read-only mode
The Data Dictionary is useful for what three purposes?
1. Documentation for the current data model configuration.
2. A reference for the original intended design of the database.
3. An analysis tool for mapping integration and legacy data fields
4. Tool to validate data model configuration changes before updating the database
5. A semantic definition of all the fields in the database.
6. An anthology of changes made over the last three database upgrades.
1, 3, and 4 are correct.
The page layout will not re-render if the 'target' property of a widget with PostOnChange checked is set to what?
DATA_ONLY
What statements are true? Some, none, or all may be correct.
1. The generated query from the Query API uses 'qRoot' to refer to a row query.
2. Row queries bring back data and meta-data for each of the returned columns.
3. Entity queries support outer joins along with row queries.
4. Entity query results are loaded in the local cache only.
5. Gosu code batch processes support both entity and row queries.
1, 5
2: False. Row queries bring back only the values in the selected columns.
3: False. Row queries are needed for outer joins. Entity queries do not support outer joins.
4. False. Entity query results are loaded in the global, application, and local caches.
Scenario: In a bundle, a new entity is created using a constructor. That entity is then copied into another bundle because it is needed for the transaction therein in some way. How do you do this without creating an exception state?
1. Commit the current bundle, then use other_bundle.add(new_instance) to add it.
2. You cannot do this without throwing an exception.
3. You only need to use other_bundle.add(new_instance) without committing the source bundle first.
4. Use other_bundle.receiveNewEntity(new_instance) to acquire the new entity reference which is now shared across the two bundles.
5. Use source_bundle.copyNewEntity(new_instance, other_bundle) to copy the new instance into the other bundle.
2 is correct. A new instance created inside even a writable bundle cannot be copied into a different bundle without an exception being thrown.
When going to process and commit to database a very large number of records (eg: more than 500,000), what is missing from the code below?
var queryResults = do_query()
for(ent in com.google.common.collect.Iterables.partition(queryResults, 250)) {
gw.transaction.Transaction.runWithNewBundle(\ bundle -> {
for(ent1 in ent) {
bundle.add(ent1)
}
}, username)
}
Between
var queryResults = do_query()
and
for(e in com.google. ...
this should be present:
queryResults.setPageSize(10000)
The exact number, 10000, isn't as important as that the statement be there. That statement pages the results from the database and allows the record buffer to remain a manageable size. This way all 1/2 million of the records don't all get retrieved at once, killing performance.
When is database schema validation always executed?
It executes on server startup after the database upgrade step.