skip to main content
OpenEdge Development: ADM Reference
Container Objects and Their Methods and Properties : Methods for SmartBusiness container objects
 
Methods for SmartBusiness container objects
Theis section describes the methods for SmartBusinessObjects (SBOs). The SBO integrates multiple SmartDataObjects and is a special purpose organizer object that is part of the Container class. SBOs provide a single point of contact for other objects, and allow you to synchronize updates on multiple SmartDataObjects in a single server-side transaction.
addDataTarget
Procedure that updates the ObjectMapping property. This property is used to broker messages between the contained objects and outside objects in communication with them. It is also used to set DataSourceNames and UpdateTargetNames in the data-targets.
Location: sbo.p
Parameters:  
INPUT phTarget AS HANDLE
The target handle to be added.
Notes:  
*Called by registerObject, subscribed as DataTargetEvent and published from the DataTarget's initializeObject.
*DataSourceNames might be specified by the user in which case it actually specifies how to generate the ObjectMapping. If it is not set, both it and UpdateTargetNames are always set here so that colValues, addRow, deleteRow, updateRow, etc. can identify the intended target or source without looping through all the fields again and again.
*Objects built against RowObject must find ALL columns in ONE of the ContainedDataObjects in order to become mapped.
*Only this procedure is allowed to add Data-Targets to the ObjectMapping property.
*ObjectMapping versus DataSourceNames. There is some overlap here and add-, copy- and deleteRow with ObjectMapping could be used instead of DataSourceNames. But since both cases require knowing the requester, there is not much advantage to only using the ObjectMapping. A way to distinguish between UpdateTargets and DataSources is necessary, and having them implemented similarly makes it all a bit easier to use.
Ideally, the SBO should not have to know about or deal with the object mapping. That should happen at the visual level instead, so the way mapping works might change in some future release.
addNavigationSource
Procedure that adds a NavigationSource to the ObjectMapping property that is used to broker messages between contained objects and the outside objects with which they communicate.
Location: sbo.p
Parameters:  
INPUT phSource AS HANDLE
The handle of the source.
Note: Called by registerObject, which is subscribed as NavigationSourceEvent and published by the Navigation-Source’s initializeObject.
addQueryWhere
SmartBusinessObject version of this where-clause function. It simply passes the parameters on to the SmartDataObject named in the pcBuffer argument.
Location: sbo.p
Parameters:  
INPUT pcWhere AS CHARACTER
Same as in query.p function addQueryWhere.
INPUT pcObject AS CHARACTER
Must match a SmartDataObject ObjectName.
INPUT pcAndOr AS CHARACTER
Same as in the query.p function.
Returns: LOGICAL
Note: Currently the pcBuffer argument must be specified.
addRow
SmartBusinessObject version of the function. It passes the column list on to the contained SmartDataObject that manages that data.
Location: sbo.p
Parameters:  
INPUT pcViewColList AS CHARACTER
 
Returns: CHARACTER
Notes: None
appendContainedObjects
Builds the list of ContainedObjects in top-down Data-link order.
Location: sbo.p
Parameters:  
INPUT-OUTPUT pcObjects AS CHARACTER
INPUT phObject AS HANDLE
Returns: LOGICAL PRIVATE
Note: Private function.
assignCurrentMappedObject
Current contained Data Object for Navigation or other access by the caller.
Location: sbo.p
Parameters:  
INPUT phRequester AS HANDLE
INPUT pcObjectName AS CHARACTER
Returns: LOGICAL
Note: This function maps the caller to the specified SmartDataObject using the ObjectMapping property.
assignMaxGuess
Procedure that identifies the MaxGuess event from a contained SDO that was passed to the appropriate Data-Target.
Location: sbo.p
Parameters:  
INPUT piMaxGuess AS INTEGER
Notes: None
assignQuerySelection
SmartBusinessObject version of this where-clause function. It separates the Columns by SmartDataObject and appropriately passes on the columns, their values, and operators.
Location: sbo.p
Parameters:  
INPUT pcColumns AS CHARACTER
Comma-separated list of column names.
INPUT pcValues AS CHARACTER
CHR(1)-separated list of the corresponding values.
INPUT pcOperators AS CHARACTER
Operator (one for all columns):
*A blank defaults to (EQ).
*A slash defines alternative string operators (EQ/BEGINS, and so forth).
*A comma-separated list for each column/value.
Returns: LOGICAL
Note: All columns must be qualified by their SmartDataObject Objectname as TableName. This name is replaced with RowObject when the columns are passed on to the SmartDataObject.
cancelNew
Procedure that receives the cancelNew event from a contained SDO and passes it on to the appropriate DATA-TARGET.
Location: sbo.p
Parameters: None
Notes: None
cancelRow
SmartBusinessObject version of this function. It passes the cancel request on to the appropriate contained SmartDataObject, which does the actual work.
Location: sbo.p
Parameters: None
Returns: CHARACTER
Note: See the entry for data.p.
canNavigate
Acts as a pass-through for the same function in some contained SDO, passing the result back to the caller to which the SDO is mapped. An SDO can navigate if it has no children or its children have no commits pending. Children with uncommitted updates prevent navigation by the parent.
Location: sbo.p
Parameters: None
Returns: LOGICAL
Note: This routine publishes isUpdatePending because that includes rowObjectState in the check. Navigation objects receive updateState from the objects they navigate and must perform this check in the source of any updateComplete message. The updateComplete message can come from a branch of a data-link tree; publishing isUpdatePending checks the whole tree.
colValues
Locates requested columns in contained Data Objects and assembles a list of their values. SmartBusinessObject version of the similar SmartDataObject function.
Location: sbo.p
Parameters:  
INPUT pcViewColList AS CHARACTER
Comma-separated list of columns, qualified by the ObjectNames of their respective owning SmartDataObjects.
Returns: CHARACTER
Note: If values are requested from only one SmartDataObject, then the RowIdent entry returned as the head of the return value is the RowIdent from that SmartDataObject (its tt rowid + db rowids). Otherwise, a list of all the tt rowids without their db rowids is returned. This allows submitRow() to send the correct rowid on to each contained SmartDataObject on update.columnWidth (sbo.p).
commitData
Procedure that calls undoTransaction to clean up temp-tables after the commit operation finishes.
Location: sbo.p
Parameters:  
OUTPUT pcError AS CHAR
Notes: None
commitTransaction
Client-side event procedure that receives the Commit event, collects the updates from contained SmartDataObjects, and passes the update to the server.
Location: sbo.p
Parameters: None
Notes: None
confirmContinue
If called with a value of FALSE, asks all contained SDOs whether they have changes pending.
Location: sbo.p
Parameters:  
INPUT-OUTPUT pioCancel AS LOGICAL
Returns TRUE if any SDO reports a pending change.
Returns: LOGICAL
Note: If any SDO reports a pending change, this routine returns pioCancel = TRUE to the caller. The caller then must handle the discrepancy, typically by reporting the unsaved changes to the user and requesting disposition instructions (Save, Discard, etc.).
copyRow
Passes the column list on to the contained DataObject that manages that data. SmartBusinessObject version of this function.
Location: sbo.p
Parameters:  
INPUT pcViewColList AS CHARACTER
Returns: CHARACTER
Note: Qualify all columns or no columns.
currentMappedObject
Returns the object name that is currently mapped to the calling routine.
Location: sbo.p
Parameters:  
INPUT phRequester AS HANDLE
Returns: CHARACTER
Note: The value is derived from the ObjectMapping property in the SmartDataObject.
dataAvailable
Procedure that notifies other objects (Data-Targets) that the current row has been changed. If the DataSource is an external object, uses the Foreign Fields property to get the key-field values. Uses the key-field values to reopen the Master object’s query.
This procedure is the SmartBusinessObject version of the SmartDataObject routine.
Location: sbo.p
Parameters:  
INPUT pcRelative AS CHARACTER
Flag indicating the state of the record.
Note: See the description of the SmartDataObject return for more information.
dataObjectHandle
Returns the handle of the ObjectName (logical name) of a contained SmartDataObject.
Location: sbo.p
Parameters:  
INPUT pcObjectName AS CHARACTER
Returns: HANDLE
Notes: None
deleteComplete
Procedure that receives the deleteComplete event from a contained SDO and passes it on to the appropriate DATA-TARGET.
Location: sbo.p
Parameters: None
Notes: None
deleteRow
Passes the rowident on to the contained DataObject that manages that data. SmartBusinessObject version of this function.
Location: sbo.p
Parameters:  
INPUT pcRowIdent AS CHARACTER
Returns: LOGICAL
Notes: None
destroyServerObject
Procedure that fetches context from the server-side procedure.
Location: sbo.p
Parameters: None
Note: unbindServer is the public interface to this procedure.
endClientDataRequest
Procedure that contains logic to retrieve data properties from the Appserver after a data request. Both queries and commits are considered as data requests.
Location: sbo.p
Parameters: None
Note: The purpose of this function is to encapsulate the logic for stateless and state-aware requests in one call.
fetchBatch
Procedure that returns the next batch of rows to a browse object, communicating with its SmartDataObject.
Location: sbo.p
Parameters:  
INPUT plForwards AS LOGICAL
TRUE if moving forward in the database, FALSE if backward.
Notes: None
fetchContainedData
Procedure that retrieves a set of data from the server, given a where-clause for (currently) the top-level SmartDataObject. Client-side procedure.
Location: sbo.p
Parameters:  
INPUT pcObject AS CHARACTER
If specified, then fetch result set from that Object down only.
Note: The WHERE clause for the MasterDataObject can be specified in advance of this call by running setMasterQueryWhere(). The WHERE clause for individual SmartDataObjects can also be set by running the standard functions for that purpose (addQueryWhere(), assignQuerySelection()) in the SmartDataObject handle (retrieved by the dataHandle() function).
fetchContainedRows
A client-side procedure that gets a batch of data from one SmartDataObject and all the tables from SmartDataObjects lower in the data-link chain or tree.
Location: sbo.p
Parameters:  
INPUT pcObject AS CHARACTER
INPUT piStartRow AS INTEGER
INPUT pcRowIdent AS CHARACTER
INPUT plNext AS LOGICAL
INPUT piRowsToReturn AS INTEGER
OUTPUT piRowsReturned AS INTEGER
Note: If pcObject AS CHARACTER is specified, then this procedure only fetches result sets from that Object on down. Intended for internal use. Called from clientSendRows in the contained SDO.
fetchDOProperties
Procedure that retrieves any properties from the server-side SmartBusinessObject and its SmartDataObjects, and sets them in the contained SmartDataObjects on the client.
Location: sbo.p
Parameters: None
Note: Currently retrieves the OpenQuery property, which is set only on the server but needed on both sides.
fetchFirst
Procedure that retrieves the first row in one of the ContainedDataObjects. It uses the ObjectMapping SmartBusinessObject property to match the caller to its Target, or uses the MasterDataObject by default. It is a SmartBusinessObject version of this event procedure.
Location: sbo.p
Parameters: None
Note: Uses the MasterDataObject by default.
fetchLast
Procedure that retrieves the last row in one of the ContainedDataObjects. It uses the ObjectMapping SmartBusinessObject property to match the caller to its Target or uses the MasterDataObject by default. It is a SmartBusinessObject version of this event procedure.
Location: sbo.p
Parameters: None
Note: Uses the MasterDataObject by default.
fetchNext
Procedure that retrieves the next row in one of the ContainedDataObjects. It uses the ObjectMapping SmartBusinessObject property to match the caller to its Target, or uses the MasterDataObject by default. SmartBusinessObject version of this event procedure.
Location: sbo.p
Parameters: None
Note: Uses the MasterDataObject by default.
initDataObjectOrdering
Initializes the mapping of the AppBuilder-generated order of Upd tables to the developer-defined update order.
Location: sbo.i
Parameters: None
Returns: CHARACTER
Note: This is used in commitTransaction and serverCommitTransaction to order the table parameters properly.
fetchPrev
Procedure that retrieves the previous row in one of the ContainedDataObjects. It uses the ObjectMapping SmartBusinessObject property to match the caller to its Target, or uses the MasterDataObject by default. SmartBusinessObject version of this event procedure.
Location: sbo.p
Parameters: None
Note: Uses the MasterDataObject by default.
findRowWhere
Finds a row and repositions to that row.
Location: sbo.p
Parameters:  
INPUT pcColumns AS CHARACTER
For a SmartBusinessObject (SBO), column names (comma separated); fieldname of a table in the query in the form of TBL.FLDNM or DB.TBL.FLDNM (only if qualified with db).
For a SmartDataObjects (SDO), column names (comma separated); fieldname of a table in the query in the form of RowObject.FLDNM.
If the fieldname is not qualified, it checks the tables in the TABLES property and uses the first match.
INPUT pcValues AS CHARACTER
Corresponding Values (CHR(1) separated).
INPUT pcOperators AS CHARACTER
The operator (one for all columns):
*Blank — Defaults to (EQ)
*Slash — Used to define an alternative string operator (EQ/BEGINS, etc.)
*A comma‑separated list for each column/value
Returns: LOGICAL
Notes:  
*This method resolves the row reposition on the server. As a result, the SDO can no longer determine whether the row position is invalid until after the request has been executed. However, if the RebuildOnRepos property is set to TRUE, the temp-table is emptied before the request.
*The current behavior for a FIND that does not find anything when RebuildOnRepos is TRUE is to read the current batch again.
*The logic is in the query.p super procedure.
initializeObject
Procedure that initializes objects of class SBO. Sets the MasterDataObject property to the leading SmartDataObject.
Location: sbo.p
Parameters: None
Note: Later this procedure must also establish the AppServer connection and other tasks.
initializeServerObject
Procedure that sets context and initializes the server object.
Location: sbo.p
Parameters: None
Notes: None
isUpdatePending
Procedure that is published through data-targets to check if any updates are pending. This SBO version of the event turns around and RUNS it in the SDO to which the caller is mapped. If no pending updates are found, it publishes isUpdatePending to its targets.
Location: sbo.p
Parameters:  
INPUT-OUTPUT plUpdate AS LOGICAL
Returns TRUE and stops the publication if update is pending.
Notes:  
*New is included as a pending update.
*This routine is called from canNavigate, which is used by navigating objects to check whether they can trust an updateState(“UpdateComplete”) message.
newDataObjectRow
Prepares one or more contained SDOs to add or copy (create) a new record.
Location: sbo.p
Parameters:  
INPUT pcMode AS CHARACTER
The operation to be performed. Valid values are Add and Copy.
INPUT pcTargetNames AS CHARACTER
The list of SDOs to be notified. These might be qualified with the ObjectName.
INPUT pcViewColList AS CHARACTER
The list of column names.
Returns: CHARACTER
Note: Called by addRow and copyRow.
openQuery
A wrapper used by fetchContainedData(), allows you to use the SmartDataObject calling sequence.
Location: sbo.p
Parameters: None
Returns: LOGICAL
Notes: None
postCreateObjects
Procedure that runs at the end of createObjects(), after all contained Objects have been created but before they have been initialized. Sets various properties that are dependent on knowing the handles and Instance Properties of all contained objects, and fetches property settings from the server-side SmartBusinessObject.
Location: sbo.p
Parameters: None
Notes: None
prepareErrorsForReturn
Procedure that appends the RETURN-VALUE from the user-defined transaction validation procedure or other update-related error to the list of any errors already in the log. Formats this string to prepare for returning it to the client.
Location: sbo.p
Parameters:  
INPUT pcReturnValue AS CHARACTER
INPUT pcASDivision AS CHARACTER
INPUT-OUTPUT pcMessages AS CHARACTER
Note: Invoked internally from serverCommitTransaction().
prepareQueriesForFetch
Procedure that prepares queries in SmartDataObjects for a fetch of data from the server.
Location: sbo.p
Parameters:  
INPUT pcObjectName AS CHARACTER
INPUT pcOptions AS CHARACTER
OUTPUT pocQueries AS CHARACTER
OUTPUT poctempTables AS CHARACTER
Notes:  
*This procedure exists in order to have common logic for fetchContainedData and fetchContainedRows.
*Cannot be used across sessions because temp-table handles are concatenated in a list. Tests indicate that it is faster to add all the handles to a list than have a procedure with 20 output parameters for the temp-table handles.
queryPosition
Procedure that receives the queryPosition event from a contained SmartDataObject and passes it on to the appropriate Navigation-Source or other object.
Location: sbo.p
Parameters:  
INPUT pcPosition AS CHARACTER
Notes: None
refreshBrowse
Procedure that receives the refreshBrowse event from a contained SDO and passes it on to the appropriate DataTarget.
Location: sbo.p
Parameters:  
INPUT pcPosition AS CHARACTER
Notes: None
registerLinkedObjects
Procedure that registers objects in the ObjectMapping and other properties. This currently applies to navigationSources and Datatargets. Currently we assume that UpdateSources are DataTargets also.
Location: sbo.p
Parameters: None
Note: This procedure is used to register objects that have already been initialized when the SBO is initialized. The SBO also subscribes to ‘registerObject’ in these objects, which they publish at initialization.
registerObject
A general purpose register event procedure published from objects at initialization. This object defines this as navigationSourceEvent and dataTargetEvent. The event is used to register objects in ObjectMapping and other properties. (Currently, assume that updateSources are also DataTargets.)
Location: sbo.p
Parameters: None
Notes: None
remoteCommitTransaction
Server-side version of CommitTransaction that receives all RowObjUpd table updates and passes them on to server-side SmartDataObjects (SDOs).
Location: sbo.i
Parameters:  
INPUT-OUTPUT pccontext AS CHAR
RowObjUpd table references. This parameter can include up to twenty RowObjUpd table references.
OUTPUT pcMessages AS CHARACTER
The generated error messages.
OUTPUT pcUndoIds AS CHARACTER
Rowids of rows that generated error messages.
Note: Unused tables use the placeholder TABLE-HANDLE.
remoteFetchContainedData
Server-side procedure that prepares and opens a query and returns all the resulting data to the client.
Location: sbo.p
Parameters:  
INPUT-OUTPUT pcContext AS CHARACTER
Input context from and output context to client.
pcQueries AS CHARACTER
CHR(1)-delimited-list of QueryString properties of the SmartDataObjects (SDOs).
pocMessages
Error messages generated.
remoteSendRows
A stateless version of sendRows that does no processing but runs sendRows to pass all parameters except for the context and returns the RowObject table as an output parameter to the caller that has the new batch of records created in sendRows.
Location: sbo.p
Parameters:  
INPUT-OUTPUT pcContext
CHR(3) separated list of propCHR(4)value pairs. INPUT is the current context and OUPTPUT is the new context. The INPUT and OUTPUT can have different properties.
INPUT piStartRow
The RowNum value of the record to start the batch to return. Typically piStartRow is a flag with athe Unknown value (?) which indicates pcRowIdent should be used instead of piStartRow.
INPUT pcRowIdent
The RowIdent of the first record of the batch to return. Can also be FIRST or LAST to force the retrieval of the first or last batch of RowObject records.
INPUT plNext
Determines whether serverSendRows should start on the next record instead of what is indicated by piStartRow or piRowIdent. If TRUE, serverSendRows should start on the next record instead of what is indicated by piStartRow or piRowIdent.
INPUT piRowsToReturn
The number of rows in a batch.
OUTPUT piRowsReturned
The actual number of rows returned. This number is either the same as piRowsToReturn or less if there are not enough records to fill the batch.
OUTPUT pcMessages
Used for error messages.
Notes:  
*If piStartRow is not 0 or the Unknown value (?), then pcRowIdent is ignored. plNext is ignored if pcRowIdent is FIRST or LAST. The most common use of piRowsReturned is to indicate that the entire result list has been returned when it is less than piRowToReturn.
*The object should only be started persistently before this is called and not initialized because initializeObject is run after the context has been set.
*The caller is responsible for destroying the object.
*For more details, see synchronizeProperties and genContext.
removeQuerySelection
Separates the Columns by SmartDataObject and passes columns and operators on to the appropriate SmartDataObjects. SmartBusinessObject version of this where-clause function.
Location: sbo.p
Parameters:  
INPUT pcColumns AS CHARACTER
Comma-separated list of column names, qualified by their ObjectNames, that are the subject part of a phrase to be removed.
INPUT pcValues AS CHARACTER
Comma-separated list of the corresponding values.
INPUT pcOperators AS CHARACTER
The operator might be:
*A blank defaults to (EQ).
*A slash (/) is used to define an alternative string operator (EQ/BEGINS, and so on).
*A comma-separated list corresponding to columns and values lists.
Returns: LOGICAL
Note: All columns must be qualified by their SmartDataObject ObjectName as TableName. This name is replaced with RowObject when the columns are passed on to the SmartDataObject.
repositionRowObject
Passes the rowident on to the contained DataObject that manages that data. SBO version of the routine.
Location: sbo.p
Parameters:  
INPUT pcRowIdent AS CHARACTER
Semicolon-separated list, one entry for each ContainedDataObject. The visual object’s getRowIdent returns this correctly.
Returns: LOGICAL
Notes: None
resetQuery
Resets the query for the identified SmartDataObject. If the query being reset belongs to the Master object, the operation brings it to its default state (Open Query). If the query belongs to some other object, the reset operation clears the QueryString property.
If pcObject is not specified, this routine resets the queries for all contained SmartDataObjects.
Location: sbo.p
Parameters:  
INPUT pcObject AS CHARACTER
SmartDataObject ObjectName.
Returns: LOGICAL
Note: This function is here because QueryWhere is not supported for SmartBusinessObjects, and running QueryWhere(") would be the way to do it otherwise.
restartServerObject
A procedure that shuts down a SmartBusinessObject after each use and then restarts it when the SmartBusinessObject is split and running stateless on an AppServer. restartServerObject is run on the client to restart the SmartBusinessObject on the server.
Location: sbo.p
Parameters: None
Note: This override is for error handling to show error message and return adm-error.
serverCommitTransaction
Server-side version of CommitTransaction. This procedure receives all RowObjUpd table updates and passes them on to server-side SDOs.
Location: sbo.i
Parameters:  
INPUT-OUTPUT TABLE FOR...
Up to 20 RowObjUpd table references, assembled through include files and macro definitions. Each table is dedicated to a contained SmartDataObject. If there are fewer than 20 contained SDOs, the unallocated tables are represented by dummy handles.
OUTPUT pcMessages AS CHARACTER
List of error messages.
OUTPUT pcUndoIds AS CHARACTER
List of ROWIDs for rows provoking error messages.
Notes: None
serverContainedSendRows
A procedure that receives the SmartDataObject ObjectName and runs SendRows in that, returning the RowObject table. Server-side SmartBusinessObject version of serverSendRows.
Location: sbo.p
Parameters:  
INPUT piStartRow AS INTEGER
The RowNum value of the record to start the batch to return. Typically piStartRow is the Unknown value (?) as a flag to use pcRowIdent instead of piStartRow.
INPUT pcRowIdent AS CHARACTER
The RowIdent of the first record of the batch to return. Can also be FIRST or LAST to force the retrieval of the first (or last) batch of RowObject records.
INPUT plNext AS LOGICAL
TRUE if serverSendRows() is to start on the record after the one indicated by piStartRow or piRowIdent.
INPUT piRowsToReturn AS INTEGER
The number of rows in a batch.
INPUT pcObjectName AS CHARACTER
The ObjectName of the SmartDataObject to get data from.
OUTPUT piRowsReturned AS INTEGER
The actual number of rows returned. This number is either the same as piRowsToReturn or less when there are not enough records to fill up the batch.
OUTPUT TABLE-HANDLE phRowObject
The batch of rows in the RowObject table.
Notes: None
serverFetchContainedData
Procedure that prepares and opens a query and returns all the resulting data to the client side. Server-side procedure.
Location: sbo.p
Parameters:  
INPUT pcQueries AS CHARACTER
CHR(1)-delimited list of QueryString properties of the SmartDataObjects.
INPUT pcPositions AS CHARACTER
Reserved for future use to provide information on positioning each of the queries.
OUTPUT TABLE-HANDLE phRowObject1 . . . phRowObject20
Temp-table handles for the maximum allowed number of SmartDataObjects.
Notes: None
serverFetchContainedRows
Procedure that prepares and opens a query on the server side and returns all resulting data to the client side.
Location: sbo.p
Parameters:  
INPUT pcQueries AS CHARACTER
CHR(1)-delimited list of SDO QueryString properties.
INPUT pcPositions AS CHARACTER
Reserved for future use in providing positioning information for each of the queries.
OUTPUT TABLE-HANDLE phRowObject1 ... phRowObject20
Temp-table handle for each SDO.
Notes: None
serverFetchDOProperties
A procedure that runs at startup to return property values needed on the client. Server-side procedure.
Location: sbo.p
Parameters:  
OUTPUT pcPropList AS CHARACTER
Note: Currently returns the OpenQuery property of each SmartDataObject.
setPropertyList
A list of properties taken from a CHR(3)‑delimited list of “prop CHR(4) value” pairs.
Location: sbo.p
Parameters: None
Notes: None
startServerObject
When a SmartBusinessObject is split and running statelessly on an AppServer, the startServerObject procedure is run on the client to start the SmartBusinessObject on the server.
Location: sbo.p
Parameters: None
Note: This override is for error handling to show error message and returns adm–error.
submitRow
Accepts a list of changed values for a row and passes them on to the SmartDataObjects from which they came.
Location: sbo.p
Parameters:  
INPUT pcRowIdent AS CHARACTER
Key with row number to update, plus a list of the ROWIDs of the db records from which the RowObject is derived.
INPUT pcValueList AS CHARACTER
A CHR(1)-delimited list of alternating column names and values to be assigned.
Returns: LOGICAL
Notes: None
undoTransaction
Procedure that passes the undoTransaction event on to each contained SmartDataObject that has any uncommitted changes.
Location: sbo.p
Parameters: None
Notes: None
updateState
Procedure that republishes any updateState event messages received from a Data-Target, to get them, for example, to Navigation Panel/Toolbar.
Location: sbo.p
Parameters:  
INPUT pcState AS CHARACTER
Notes: None