Professional Documents
Culture Documents
Siebel Notes
Siebel Notes
A business component is a logical representation of one or more tables. Business components provide the foundation for controlling how data is selected, inserted, and updated in underlying tables. The information stored in a business component is usually specific to a particular functional area, such as a product, a contact, or an account. This information may or may not depend on other business components. Business components can be included in one or more business object definitions. They can have default sort or search specifications that allow you to expose records in the user interface in a predetermined sort order and according to a set of selection criteria. Multiple users can instantiate copies of the same business component. Data changes made by any one user are reflected in all instances of the business component. The main data for a business component comes from a base table and one or more joined extension tables. For example, the Account business component is based on the S_PARTY table, but most of the data retrieved by the business component is stored in the joined extension table, S_ORG_EXT.
An example of the use of BC Read Only Field is the situation in which you need to prevent users from updating inactive accounts. The Inactive Account field in an account record is a TRUE or FALSE field that, when TRUE, indicates that the account is inactive. To configure dynamic read-only behavior for the Account business component based on this field, add a business component user property child object definition to the Account business component, with the following property settings: Name. BC Read Only Field. Value. Inactive Account.
To restrict the Competitor field in an account based on the accounts type 1 Navigate to the Business Component object type in the Object Explorer, and then to the
Account object definition in the Object List Editor. 2 Create a calculated Boolean field in this business component that will have a value of TRUE when the Type field has a value of Competitor. For purposes of the example, the name of this test field can be Competitor Calc, although the name is unimportant as long as it is referenced correctly in the user property. 3 In the calculation property of the Competitor Calc field, enter the following value: IIf([Type] = "Competitor", "Y", "N") 4 Expand the Business Component object type in the Object Explorer, and select the Business Component User Prop object type. Click the Object List Editor to make it active, and then add a record. 5 Set the following values in the new Business Component User Prop object definition:
Parent Read Only Field, but its name, rather than its value, specifies the parent business component. When the calculated value of the specified field evaluates to TRUE or Y, the child business component becomes read-only.
About Joins
A Join object definition creates a relationship between a business component and a table other than its base table. This relationship allows the business component to use columns from the other table. The join uses a foreign key in the business component to obtain rows on a one-to-one basis from the joined table, even though the two tables do not necessarily have a one-to-one relationship.
To use a predefault value for a joined field 1 Define a join to S_OPTY in the Opportunity Product business component. 2 Define two new fields based on the join to show Opportunity Sales Stage and Name. 3 Add the two fields to the Opportunity Product applet. 4 Compile and test using the standard OpportunitiesProducts view. a Add a new Product for an Opportunity. b Note that the joined fields are not populated until
you requery the applet. (However, the source fieldOppty Idfor the join is populated.) 5 Set the Predefault properties of the new fields to Parent: 'ParentBusinessComponent.JoinedField'.
For example, predefault Opportunity Name with Parent: 'Opportunity.Name' and predefault Opportunity Sales Stage with Parent: 'Opportunity.Sales Stage'. 6 Set the Link Specification property of the joined fields (Name and Sales Stage) in the parent business component to TRUE. 7 Compile and then add a new product for an Opportunity. The joined fields are populated immediately, and you do not need to requery the applet to see them.
About Links
A link defines a one-to-many (or master-detail) relationship between two business components. The Link object type makes master-detail views possible, in which one record of the master business component displays with many detail business component records that correspond to the master.
When a multivalue link has been configured with a primary joinwhich is the typical situationthere are circumstances in which the foreign key used by this join to identify the primary record is unable to find the primary. For example, this can happen when the primary record has been deleted from the multivalue group or the multivalue group is newly created and has no records. In such cases, the multivalue link can be configured to update the primary foreign key to a value of NULL, or to a special value of NoMatchRowId, depending on your requirements. This behavior is configured through the Check No Match property of the Multi Value Link object type, and has performance consequences. The purpose of the special NoMatchRowId value is to prevent secondary queries on foreign key values that are known to have failed, thereby improving performance, much in the same way that using a primary join improves performance. The NoMatchRowId generating and testing behavior is activated by setting Check No Match to FALSE for the MVL. This setting has the following results: When the application encounters a master record where the primary foreign key is NULL or invalid, it performs a secondary query to determine if there are detail records in the multivalue group. If it finds there are no detail records, it sets the primary ID field to the special value NoMatchRowId. When the application encounters a master record where the primary foreign key has the value NoMatchRowId, this indicates to the system that there are no detail records in the multivalue group and the secondary query is not performed. If you set Check No Match to TRUE, the Siebel application will perform a secondary query whenever the outer join on the primary fails, or is set to NULL or NoMatchRowId. If the secondary query finds a matching detail record, it updates the foreign key with that records row ID, provided the MVL has an Auto Primary property setting of DEFAULT. If no matching child record is found, or Auto Primary is set to NONE, the application leaves the existing value intact. A Check No Match setting of TRUE can have serious negative performance consequences. If a multivalue group is sparsely populated (that is, most master records do not have any detail records in the multivalue group) and has Check No Match set to TRUE, it will be almost as slow as not having a primary join at all. Check No Match should be set to FALSE for most multivalue links because of the performance consequences. It should only be set to TRUE if the multivalue group could possibly have records added to it without going through the MVG itself. For example, account addresses might actually be inserted by means of the Business Address multivalue group on the Contact business component instead of the Address multivalue group on the Account business component. Also, if records can be added to the detail business component through EIM, the TRUE setting is the appropriate one. The Use Primary Join property should be set to TRUE if CheckNoMatch is TRUE. If CheckNoMatch is
set to TRUE and Use Primary Join is FALSE, then the Siebel application will always do the secondary query to find the child records.
To configure a primary field for a 1:M or M:M relationship 1 Create a Primary Id column. 2 Create a field based on that Primary Id column. 3 In a Multi Value Link object, set the Primary Id Field attribute to the new Primary Id field. 4 Set the Use Primary Join attribute to TRUE.
For example, in the Account business component the primary ID field for the Address multivalue group is called Primary Address Id. The Account Address Mvg Applet displays the corresponding multivalue group. The primary record, indicated with a check mark in the list column labeled Primary, has its row ID stored in the Primary Address Id field in the account record. Each time there is a different account record displayed, the multivalue fields for the Address load the primary Business Address records values only. It is not necessary to query the Business Address business component for multiple rows. This can be a significant performance enhancement, especially in list applets. NOTE: In a multivalue group applet, the list column that displays the check mark (indicating the primary or nonprimary status of each record) obtains its data from a system field called SSA Primary Field. This field does not appear in the Object Explorer or Object List Editor, but may be referenced by a list column for this purpose. The benefit of using a primary ID, from the systems standpoint, is that it converts a one-tomany relationship into a one-to-one relationship. This allows the row retrieval process to be simplified from a query with subqueries to a simple join query. This substantially improves performance, especially when the user is scrolling through the records of a list applet that displays the master. The properties of Link or Multi Value Link object types used to implement a primary ID field are as follows: Primary ID Field. This property specifies the name of the field in the master business
component that holds the row ID values pointing to primary records in the detail business component. NOTE: Do not display primary ID fields in the user interface. Exposing primary ID fields using an editable control or list column on an applet causes the update of the primary from the MVG applet not to be triggered. If you wish to expose primary ID fields on the UI, such as for testing, use a read-only control or list column. Use Primary Join. The Use Primary Join property is a TRUE or FALSE property that turns the Primary Join feature on or off. If TRUE, the primary detail record is obtained for each master record through a join on the primary ID field. If FALSE, the detail table is queried again with each master record change. Auto Primary. This property setting determines how row ID values are populated in the primary ID field, based on a system-supplied list column labeled Primary in the multivalue group applet. The user can manually select the primary. Auto Primary determines how, if at all, the primary selection is defaulted. The possible values for Auto Primary are DEFAULT, SELECTED, or NONE as follows: DEFAULT. The first record automatically becomes the primary.
SELECTED. The highlighted record becomes the primary when the user views the multivalue
group applet and then exits. NONE. The user must specify the primary manually. SELECTED only pertains when there are several multivalue links pointing to the same detail business component. This is the case for the Bill To Business Address and Ship To Business Address multivalue links in a standard Siebel Sales application. These multivalue links exist under both the Order and Account business components. In this case, an example of the desired behavior is as follows: if a primary is not set for the Bill To address, then when the Siebel application does a separate query to bring back all addresses associated with the account (or order), it will check to see whether one of the addresses has already been selected as primary for the Ship To address and, if so, it will SELECT (that is, set) that address as the primary for Bill To address as well. When the Auto Primary property of a Multi Value Link object has a value of SELECTED, setting read-only properties at the applet level still does not force the SSA Primary Field to be readonly. NOTE: If the destination business component of the Multi Value Link object is read-only, you may receive the following error message, This operation is not available for a read-only field SSA Primary Field. This is because the Primary ID field is automatically updated through the system field SSA Primary Field, which belongs to the destination business component. Additionally, if this business component is read-only, the field is read-only as well and cannot be updated.
a Set the Picklist property of the parent field to the parent picklist. b Set the Immediate Post Changes property of the parent field to TRUE. c Set the PickList property of the child field to the child picklist. d For the child field, create the following Pick Map objects.
Field picklist field constrain Field PickList Field Constrain [name of parent field] Parent TRUE [name of child field name] Value Leave blank. 3 Compile changes to a repository file. 4 Add LOV values using the Parent LIC column to designate the parent value.
Accounts and contacts Employees and positions User lists and users If you need to extend tables in the party model, you need to create an extension table from S_PARTY. For example, S_CONTACT is an extension table of S_PARTY. Because S_CONTACT is of type Extension (Siebel), you cannot use it as a base table for an extension table. You must create an extension table and use S_PARTY as the base table. To display data from the new extension table, create a Join object (explicit join) to bring in data from the new extension table to the business component you are using.
the base table and extension table (S_CONTACT) that define a Person, or Contact .A Person is the simplest representation of an individual in the database.
S_BU table.
object definitions properties. These user properties belong to the following Siebel object types: Applet Application Assignment Business Component Business Service Business Service Method Arg Control Field Integration Component Integration Component Field Integration Object List Column View Virtual Business Component
PDQDisabledViewn
This user property allows you to disable the Predefined Query (PDQ) dropdown for the view name defined for the property. NOTE: As of release 8.0, you no longer set this property in the application .cfg file; instead, you set it as an application user property in Siebel Tools. Value Name of the view for which you want to disable the Predefined Query (PDQ) dropdown. Some of the predefined property values include: PDQDisabledView0 = Order History View (eSales) PDQDisabledView1 = Order History View - My Company (eSales) PDQDisabledView2 = Order History Summary View (eSales) PDQDisabledView3 = Order Confirmation View (eSales) PDQDisabledView4 = Order Approval View (eSales) PDQDisabledView5 = Saved Quotes View (eSales) PDQDisabledView6 = Saved Quotes View - My Company (eSales) PDQDisabledView7 = Saved Quote Detail View (eSales) PDQDisabledView8 = Quote Summary View (eSales) Usage This user property is used to disable the Predefined Query (PDQ) dropdown for the view name defined for the property. Parent Object Type Application Functional Area Query
CanInvokeMethod: MethodName
This user property allows you to enable and disable methods, such as buttons, declaratively at the applet level. It is easier to use than PreCanInvokeMethod scripting and in many cases can be used instead. Name CanInvokeMethod: MethodName Value Value or expression that returns TRUE or FALSE
Usage This user property is used to enable and disable methods declaratively. For example, Copy Record on the Partner Product List Applet is disabled by default: Name: CanInvokeMethod: CopyRecord Value: N You can inactivate or modify the value for this user property. You can also create new instances of this user property as needed. Parent Object Type Applet Functional Area CSSFrame, CSSFrameList, and their subclasses
"Name", "Action", "BusComp", "Method" When Name is called, Method is invoked on the BusComp business component based on the defined Action. For a list of actions, see Table 16 on page 94. For invoking a business service method, the value consists of five quoted parameters separated by a comma and a space, as follows: "Name", "Action", "BusComp", "Service", "Method" When Name is called, Method from the Service business service is invoked on the BusComp business component based on the defined Action. For a list of actions, see Table 16 on page 94. You can optionally append an additional parameter that defines an expression. If you use a business service action, the expression is passed as a property set, so you must use name-value pairs rather than an array of strings (NameExpr, ValueExpr). Usage Sometimes it is necessary to trigger actions in response to data changes, for example when records are created, deleted, or updated. The response can be required to be triggered before or after the date change has been applied. Within the Siebel Application there is standard functionality, including user properties, to allow you to implement automated responses to data changes without the need to use custom scripts. The Named Method n applet user property can be used to invoke methods in a certain order. For example, the Named Method n applet user property can be used to update a legacy system with new Account records after a new record is created in the Siebel application. It first commits the record in the Siebel application, and then invokes a workflow process to update the legacy system. Named Method 2: WriteRecord 'INVOKE', 'WriteRecord', 'INVOKESVC', 'Workflow Process Manager', 'Run Process', '"ProcessName"', '"Account - New Order"', '"RowId"','[Id]' This user property is supported for applets based on the CSSFrameBase and CSSFrameListBase classes. You can create additional instances of this user property as needed. If you have more than one instance of this user property for a business component, each instance is executed sequentially by number (for example, Named Method 1, then Named Method 2, and so on). If there is only one such user property, then no number is required. See also About Setting Numbered Instances of a User Property on page 78 and Named Method n (Business Component) on page 143. Parent Object Type Applet Functional Area CSSFrameBase, CSSFrameListBase
You can allow updates to other business components by adding user properties to the Service Request business component and substituting the appropriate business component name for Customer Survey. NOTE: Another way to make a closed service request and its child business components accessible for additions and edits is to change its status to Open. Parent Object Type Business Component Functional Area Service Request Value The name of the field you wish to keep updatable. Usage In standard Siebel applications, when a user sets the Status field on a service request to Closed, the Sub-Status field is updated to Resolved. The record becomes read-only except for the Status and Sub-Status fields. This behavior is controlled by the specialized business component class CSSBCServiceRequest. To allow fields to be updated after the service request is closed, use the Always Enable Field n user property. You can inactivate and modify values for this user property. You can also create new instances of this user property as needed. Parent Object Type Business Component Functional Area Service Request
No Change Field n
This user property disallows changing a fields value after the record is committed. Value The value of this user property must be the name of a field in the business component, not enclosed in quotes. Usage This property can be specified with or without the numeric suffix. Append the numeric suffix to differentiate between multiple instances on a business component. For example, add No Change Field 1 and No Change Field 2 user properties to a business component to specify two different fields which cannot be changed after a record is committed. You can inactivate or modify the values for this user property. You can also create new instances of this user property as needed. Parent Object Type Business Component Functional Area Various
No Clear Field n
This user property disallows setting a fields value to NULL.
NoDelete Field
This user property allows you to restrict the deletion of records based on the value of the specified field. Value The value of this user property must be the name of a field in the business component, not enclosed in quotes. Usage This property can be specified with or without the numeric suffix. Append the numeric suffix to differentiate between multiple instances on a business component. For example, add No Clear Field 1 and No Clear Field 2 user properties to a business component to specify two different fields whose values cannot be set to NULL. You can inactivate or modify the values for this user property. You can also create new instances of this user property as needed. Parent Object Type Business Component Functional Area Various
Value The value of this user property must be the name of a field in the business component. Usage When you specify a field in this user property, the business component does not allow records to be deleted that have a value of Y in the specified field. For example, a record on the Contact business component cannot be deleted if NoDelete Field has a value of Protect Internal Employee Flag and the value of the Protect Internal Employee Flag field in the record is Y. You can inactivate or modify the values for this user property. You can also create new instances of this user property as needed, but you cannot create more than one instance for a business component. Parent Object Type Business Component Functional Area CSSBCBase
On Field Update Invoke "Product Name", "Asset Mgmt - Asset", "CopyXA" On Field Update Invoke 1 "Product Name", "Asset Mgmt - Asset", "GeneratePartNumber" On Field Update Invoke 2 "Product Name", "Asset Mgmt - Asset", "SaveCxProd" On Field Update Invoke 3 "Quantity", "Asset Mgmt - Asset", "SetExtendedQuantity" When the Product Name field in the Asset Mgmt - Asset (Order Mgmt) business component is updated, the CopyXA, GeneratePartNumber, and SaveCxProd methods are invoked on the Asset Mgmt - Asset business component. When the Quantity field in the Asset Mgmt - Asset (Order Mgmt) business component is updated, the SetExtendedQuantity method is invoked on the Asset Mgmt - Asset business component. In this example, where no [FieldToCheck] is specified, the CopyXA method is invoked on the Asset Mgmt - Asset business component when the user saves the record: On Field Update Invoke "", "Asset Mgmt - Asset", "CopyXA" NOTE: The empty quotes followed by the comma are necessary. Parent Object Type Business Component Functional Area CSSBCBase
The following example shows how the Condition parameter is used. The Revenue field of the Opportunity business component is set when the Primary Revenue Amount field is updated, but only when the IsParentBCRevn field has a value of N: "Primary Revenue Amount", "Revenue", "[Primary Revenue Amount]", "[IsParentBCRevn] = 'N'" Various address business components, such as Business Address, populate their Address Name field with a concatenation of street address, city, and state. This field is updated, or not, by using a few On Update Field Set instances and the value of a calculated field whenever the street address, city, or state are updated. For example, when the city is updated, an On Update Field Set user property with the following value is used: "City", "Address Name", "IIF( [Address Name Locked Flag] = ""N"", [Calculated Address Name], [Address Name])" Similar numbered instances of the user property are used to update the Address Name field when the street address or state are updated. You can create additional instances of this user property as needed. If you have more than one instance of this user property for a business component, they are executed sequentially by number (for example, On Field Update Set 1, then On Field Update Set 2, and so on). If there is only one such user property, then no number is required. Parent Object Type Business Component Functional Area CSSBCBase
Picklist Pre Default Field 2 with value "Account Id", "'Action.Account Id', 'Comm Outbound Email.Account Id'" You can inactivate or modify the values for this user property. You can also create new instances of this user property as needed. Parent Object Type Business Component Functional Area Picklist generation
Sequence Field
This user property allows you to define a sequence field for a business component. Value The value for the Sequence Field user property must be the name of the field (typically Line Number or Sequence Number) in the business component that corresponds to the sequence number column in the underlying table. Usage This user property is used to configure a sequence field to create a sequential auto-generating line number on new record and copy record events. A sequence business component must be defined in the business object. For new record and copy record events, this user property specifies a field on the business component whose value is a number in a sequence that is autogenerated. A sequence business component must also be defined in the business object. NOTE: When defining a Sequence Field user property, set the Insert Position property to LAST for the applets that display records from the numbered detail business component. Leaving the Insert Position property blank can cause unexpected behavior in the line numbers generated in the applet. Configuring a sequence field on a business component requires several tasks to be completed. For detailed information on creating sequence fields, see Configuring Siebel Business Applications. Parent Object Type Business Component Functional Area Record sequencing
Url
This user property specifies the URL to which to go when the GotoUrl method is invoked for an applet control.
View
This user property specifies the view to display when the GotoView method is invoked for an applet control.
DisableSearch
This single-value field user property allows a Siebel developer to specify whether an end user can execute a wildcard query on a particular field. Value TRUE or FALSE Usage The intent of this field user property is to allow a Siebel developer to prevent users (and the Siebel query engine) from performing queries on non-indexed or text fields. If its value is TRUE, wildcard searching on the field is disabled, but exact match searching is allowed. If its value is FALSE or not specified, searching is allowed on the field. For example, if the [Name] field has the DisableSearch field user property set to TRUE, wildcard searches such as [Name] LIKE 'S*' are suppressed, and an error message is displayed. Exact searches such as [Name] = 'Siebel' are allowed. This user property is enforced when the following query options are exercised: query by example, Query Assistant, Search Center, queries initiated through
programmatic or message-based interfaces, and pre-defined queries. You can inactivate and modify the values for this user property, and you can create a new instance of this user property if it is not already defined on the field. Parent Object Type Field Functional Area Search
DisableSort (Field)
This single-value field user property allows a Siebel developer to specify whether an end user can sort a result set on a specific field of a business component.