Panel |
---|
|
The Glossary Mechanism provides a way to translate CRM.COM terms to any language that is supported by CRM.COM. This section explains how to use the mechanism when creating custom pages and is applicable from CRM.COM R9.0.0 onwards. What does this section cover? |
General Idea
All CRM.COM terms that appear on screen should be replaced in both .xml and .java files with keys. A key must have the following format: key_<unique_phrase> and should always be in lowercase. i.e. key_priceplan, key_price_plan. A key can only be defined once but it can be used multiple times.
...
Properties file is used to store the keys and their translation. Properties file for English translation is named translation_eng.properties can be found under <project_directory>/Crm/WebContent/labels. Note that all keys must be unique.
Expand |
---|
title | Properties file for English translation |
---|
|
Code Block |
---|
language | xml |
---|
title | translation_eng.properties |
---|
| <properties>
<comment>eng Translation</comment>
<entry key="key_life_cycle_state">Life Cycle State</entry>
<entry key="key_all">All</entry>
<entry key="key_n/a">N/A</entry>
<entry key="key_billing_information">Billing Information</entry>
<entry key="key_view">View</entry>
.
.
.
</properties> |
|
...
Expand |
---|
title | Non-translated terms Example |
---|
|
keys used: key_name, key_alternativecode, key_description key_alternativecode has not been defined in properties file. Code Block |
---|
language | xml |
---|
title | translation_eng.properties |
---|
| <fieldlist>
...
<field>
<fieldname>PRODUCTTYPES.PRODTYPENAME</fieldname>
<caption>key_name</caption>
<summary>true</summary>
<filter>true</filter>
<filtercaseinsensitive>true</filtercaseinsensitive>
<link>page.do?xml=products/type&act=itm&jndi=ejb/CRMUIProductType&fc=loadForm&pv0=((PRODUCTTYPES.PRODTYPEID))&pvc=1</link>
</field>
<field>
<fieldname>PRODUCTTYPES.PRODTYPEALTCODE</fieldname>
<caption>key_alternativecode</caption>
<summary>true</summary>
<available>true</available>
<filter>true</filter>
</field>
<field>
<fieldname>PRODUCTTYPES.PRODTYPEDESC</fieldname>
<caption>key_description</caption>
<summary>true</summary>
<filter>false</filter>
</field>
...
</fieldlist> |
Image RemovedImage Added |
Summary Pages
This section shows how to use the Glossary Mechanism when creating summary pages.
...
Expand |
---|
|
keys used: key_life_cycle_state, key_all
Code Block |
---|
language | xml |
---|
title | Life Cycle State Search Field |
---|
| <field>
<fieldname>LIFECYCLESTATE_FILTER</fieldname>
<fieldfunction>ACCOUNTSRECEIVABLE.LIFECYCLESTATE</fieldfunction>
<caption>key_life_cycle_state</caption>
<summary>false</summary>
<filter>true</filter>
<filtertextoption>equal</filtertextoption>
<fixedlookup>ejb/CRMUIAccountReceivable.getLifeCycleStateOptions:key_all</fixedlookup>
</field> |
Image RemovedImage Added |
Summary Fields
...
Expand |
---|
|
keys used: key_life_cycle_state, key_n/a
Code Block |
---|
language | xml |
---|
title | Life Cycle State Summary Field |
---|
| <field>
<fieldname>LIFECYCLESTATE</fieldname>
<fieldfunction>ACCOUNTSRECEIVABLE.LIFECYCLESTATE</fieldfunction>
<caption>key_life_cycle_state</caption>
<summary>true</summary>
<filter>false</filter>
<fixedlookup>ejb/CRMUIAccountReceivable.getLifeCycleStateOptions:key_n/a</fixedlookup>
</field> |
Image RemovedImage Added |
Drill Downs
When defining drill downs in summary pages the following rules must be followed:
...
Expand |
---|
|
keys used: key_billing_information, key_view
Code Block |
---|
language | xml |
---|
title | Billing Information Drill Down |
---|
| <field>
<fieldname>BILLINGINFORMATION</fieldname>
<fieldfunction>''</fieldfunction>
<caption>key_billing_information</caption>
<summary>true</summary>
<fieldtype>label</fieldtype>
<label>key_view</label>
<link>drilldown:billing/bills;hidefilters~true~BILLS.ACCRECID~((ACCOUNTSRECEIVABLE.ACCRECID))</link>
</field> |
Image RemovedImage Added |
Actions
When defining actions in summary pages the following rule must be followed:
...
Expand |
---|
|
keys used: key_new, key_set_privacy_level Code Block |
---|
language | xml |
---|
title | Summary page actions |
---|
| <actions>
<action>
<caption>key_new</caption>
<topmenu>true</topmenu>
<link>page.do?xml=communications/communication&act=new&jndi=ejb/CRMUICommunication&fc=createButton&pvc=0</link>
</action>
<action>
<caption>key_set_privacy_level</caption>
<modal>true</modal>
<link>javascript:displayModalCreate('communications/setPrivacyLevel','ejb/CRMUICommunication','loadPrivacyLevelForm','java.util.ArrayList@[[SummaryComponent_((component))]]','edit',null,'','')</link>
</action>
</actions> |
Image RemovedImage Added |
Data Entry Pages
This section shows how to use the Glossary Mechanism when creating data entry pages.
Definition File
In data entry definition files, all name, label, sidelabel, truelabel, falselabel, tipexpression tags must contain only keys in order for their values to be translated by the glossary mechanism.
...
The following example demonstrates how to make use of the glossary mechanism when defining the title of a data entry page.
Expand |
---|
|
keys used: key_communication
Code Block |
---|
language | xml |
---|
title | Data entry page title |
---|
| <?xml version="1.0" encoding="UTF-8"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xsd/dataEntry.xsd">
<id>communications/communications</id>
<name>key_communication</name>
<datapath>number</datapath>
.
.
.
</page> |
Image RemovedImage Added |
Main Menu
The following examples demonstrate how to make use of the glossary mechanism when implementing the main menu of a data entry page.
Expand |
---|
|
keys used: key_new
Code Block |
---|
language | xml |
---|
title | New menu option |
---|
| <mainmenu>
<components>
<component>
<id>cmpNew</id>
<name>key_new</name>
<visiblemodes>read</visiblemodes>
<hideinmodal>true</hideinmodal>
<elements>
<button>
<id>btnNew</id>
<name>key_new</name>
.
.
.
</button>
</elements>
</component>
.
.
.
</components>
</mainmenu> |
Image RemovedImage Added |
Expand |
---|
|
keys used: key_cmdactions, key_follow_up, key_set_privacy_level Code Block |
---|
language | xml |
---|
title | Actions menu option |
---|
| <mainmenu>
<components>
.
.
.
<component>
<id>cmpActions</id>
<name>key_cmdactions</name>
<visiblemodes>read,edit</visiblemodes>
<elements>
<menu>
<id>menuActions</id>
<name>key_actions</name>
<visiblemodes>read,edit</visiblemodes>
<menuitems>
<modal>
<id>mdlFollowUp</id>
<name>key_follow_up</name>
<visibilityconditions>
'[[getValue,java.lang.String,lifeCycleState]]'=='COMPLETED'
</visibilityconditions>
.
.
.
</modal>
<modal>
<id>mdlSetPrivacyLevel</id>
<name>key_set_privacy_level</name>
<visiblemodes>read</visiblemodes>
.
.
.
</modal>
</menuitems>
</menu>
</elements>
</component>
</components>
</mainmenu>
|
Image RemovedImage Added |
Components
Component name tag should always contain a key in order for its value to be translated by the glossary mechanism.
Expand |
---|
|
keys used: key_key_dates
Code Block |
---|
language | xml |
---|
title | Component |
---|
| <component>
<id>cmpKeyDates</id>
<name>key_key_dates</name>
<isgroup>true</isgroup>
<columns>4</columns>
<elements>
.
.
.
</elements>
</component>
|
Image RemovedImage Added |
Elements
When defining an element, label, sidelabel, tipexpression tags must contain only keys in order for their values to be translated by the glossary mechanism.
Expand |
---|
|
keys used: key_type
Code Block |
---|
language | xml |
---|
title | Selectbox element |
---|
| <elements>
<selectbox>
<id>slbType</id>
<label>key_type</label>
.
.
.
</selectbox>
</elements>
|
Image RemovedImage Added |
Expand |
---|
|
keys used:key_allow_creating_access_tokens_with_no_identifier_and_pass_code
Code Block |
---|
language | xml |
---|
title | checkbox element |
---|
| <elements>
<checkbox>
<id>chkOnAllowNoIdentifierPassCode</id>
<sidelabel>key_allow_creating_access_tokens_with_no_identifier_and_pass_code</sidelabel>
.
.
.
</checkbox>
</elements>
|
Image RemovedImage Added |
Expand |
---|
title | Tipexpression Example |
---|
|
keys used: key_tipexpression_rewards_award_expiration_run_definition_cmp_award_expired_x_days_ago
Code Block |
---|
language | xml |
---|
title | textbox element |
---|
| <elements>
<textbox>
<id>txtAwardExpiredXDaysAgo</id>
<tipexpression>key_tipexpression_rewards_award_expiration_run_definition_cmp_award_expired_x_days_ago</tipexpression>
.
.
.
</textbox>
</elements>
|
Image Removed |
...
Image Added |
Layout File
In the data entry layout files, all name and instruction tags must contain only keys in order for their values to be translated by the glossary mechanism.
...
The following example demonstrates how to make use of the glossary mechanism when defining a section in order for its name and instructions to be translated.
Expand |
---|
|
keys used: key_main_information, key_instruction_segments_segment_sec_main_information
Code Block |
---|
| <sections>
<section>
<id>secMainInformation</id>
<name>key_main_information</name>
<instruction>key_instruction_segments_segment_sec_main_information</instruction>
.
.
.
</section>
</sections> |
Image Removed |
Image Added |
Search Pages
This section shows how to use the Glossary Mechanism when creating search pages.
...
- searchcaption and label tags should always contain a key in order for their values to be translated by the glossary mechanism.
- displaytype tag should make use of keys to define the available search criterion options.
...
Expand |
---|
|
keys used: key_search_accounts_receivable, key_life_cycle_state, key_active, key_suspended, key_terminated
Code Block |
---|
language | xml |
---|
title | search page |
---|
| <searchcaption>key_search_accounts_receivable</searchcaption>
.
.
.
<fields>
<fielditem>
<field>ACCOUNTSRECEIVABLE.LIFECYCLESTATE</field>
<label>key_life_cycle_state</label>
<expression>VALUE</expression>
<datatype>ftXString</datatype>
<fieldlen>10</fieldlen>
<searchcriteria>1</searchcriteria>
<visible>1</visible>
<executable>1</executable>
<displaytype>combobox;;;ACTIVE;key_active;SUSPENDED;key_suspended;TERMINATED;key_terminated</displaytype>
<indexorder>50</indexorder>
</fielditem>
.
.
.
</fields>
.
.
. |
Image Removed |
...
Image Added |
Dashboards
This section shows how to use the Glossary Mechanism when creating dashboards.
...
- name, description, primaryfieldlabel, groupbyfieldlabel and caption tags should always contain a key in order for their values to be translated by the glossary mechanism.
- fixedlookup should make use of a key to define the value that will be displayed when no option is selected from the drop-down list and no filtering is to be made based on the search field.
Expand |
---|
|
keys used: key_buy_in_advance_requests_per_duration_and_subscription_type, key_buy_in_advance_requests_per_duration_and_subscription_type_stacked_bar_chart, key_number_of_buy_in_advance_requests, key_view_buy_in_advance_requests_of, key_duraition, key_Subscription_type, key_all
Code Block |
---|
language | xml |
---|
title | search page |
---|
| <dashboardcomponent>
<name>key_buy_in_advance_requests_per_duration_and_subscription_type</name>
<description>key_buy_in_advance_requests_per_duration_and_subscription_type_stacked_bar_chart</description>
<primaryfieldlabel>key_number_of_buy_in_advance_requests</primaryfieldlabel>
<groupbyfieldlabel>key_duration,_subscription_type</groupbyfieldlabel>
.
.
.
<fields>
<field>
<fieldname>BUYINADVANCE_PERIOD</fieldname>
<caption>key_view_buy_in_advance_requests_of</caption>
<summary>true</summary>
<filter>true</filter>
<fixedlookup>ejb/CRMUIBillDashboard.getBuyInAdvanceRequestsPerDurationAndSubscriptionTypePeriodOptions:key_all</fixedlookup>
<filtertextoption>equal</filtertextoption>
</field>
</fields>
.
.
.
</dashboardcomponent> |
Image Removed Image Added |
Metadata
Fields
This section shows how to use the Glossary Mechanism when defining metadata fields.
When defining metadata fields name tag should always contain a key in order for its value to be translated by the glossary mechanism.
Expand |
---|
title | Metadata Fields Example |
---|
|
keys used: key_number, key_description
Code Block |
---|
language | xml |
---|
title | metadata fields |
---|
| <mainfield>
<id>number</id>
<name>key_number</name>
.
.
.
</mainfield>
<fields>
<field>
<id>description</id>
<name>key_description</name>
</field>
.
.
.
</fields>
.
.
. |
|
...
When defining metadata entities name tag should always contain a key in order for its value to be translated by the glossary mechanism.
Expand |
---|
|
keys used: key_account_classification
Code Block |
---|
| <entity>
<id>ACCCLASSIFICATIONS</id>
<name>key_account_classification</name>
.
.
.
</entity> |
|
...
When defining metadata messages, expression tag should always contain a key in order for its value to be translated by the glossary mechanism.
Expand |
---|
|
keys used: key_com_crm_exception_mandatoryfieldexception
Code Block |
---|
| <message>
<code>COM.CRM.EXCEPTION.MANDATORYFIELDEXCEPTION</code>
<expression>key_com_crm_exception_mandatoryfieldexception</expression>
<description>A mandatory field is not specified.</description>
</message> |
|
...
When defining metadata applications, applicationdescription tag should always contain a key in order for its value to be translated by the glossary mechanism.
Expand |
---|
|
keys used: key_the_rewards_application.
Code Block |
---|
language | xml |
---|
title | Application |
---|
| <applications>
<application>
<applicationid>REWARDS</applicationid>
<applicationname>REWARDS</applicationname>
<applicationdescription>key_the_rewards_application.</applicationdescription>
</application>
.
.
.
</applications> |
|
...
When defining metadata menu options, name and description tags should always contain a key in order for their values to be translated by the glossary mechanism.
Expand |
---|
|
keys used: key_manage_rewards_participants
Code Block |
---|
language | xml |
---|
title | Menu Option |
---|
| <menuoptions>
<menuoption>
<id>MANAGE_REWARD_PARTICIPANTS</id>
<name>key_manage_rewards_participants</name>
<description>key_manage_rewards_participants</description>
<menuoptionparentid>REWARDS</menuoptionparentid>
<menuoptionordernum>3</menuoptionordernum>
<menuoptionurl>page.do?act=summary&xml=rewards/participants</menuoptionurl>
</menuoption>
.
.
.
</menuoptions> |
Image RemovedImage Added |
Modules
This section shows how to use the Glossary Mechanism when defining metadata modules.
...
The following example demonstrates how to make use of the glossary mechanism when defining the common processes of a module.
Expand |
---|
title | Module common processes example |
---|
|
keys used: key_create_reward_scheme, key_create_a_new_reward_scheme. Code Block |
---|
language | xml |
---|
title | Module common process |
---|
| <commonprocesses>
<process>
<id>CREATE_REWARD_SCHEME</id>
<name>key_create_reward_scheme</name>
<description>key_create_a_new_reward_scheme.</description>
.
.
.
</process>
.
.
.
</commonprocesses> |
|
...
The following example demonstrates how to make use of the glossary mechanism when defining the additional processes of a module.
Expand |
---|
title | Module additional processes example |
---|
|
keys used: key_activate_reward_scheme, key_activate_a_reward_scheme.
Code Block |
---|
language | xml |
---|
title | Module additional process |
---|
| <additionalprocesses>
<process>
<id>ACTIVATE_REWARD_SCHEME</id>
<name>key_activate_reward_scheme</name>
<description>key_activate_a_reward_scheme.</description>
.
.
.
</process>
.
.
.
</additionalprocesses> |
|
...
The following example demonstrates how to make use of the glossary mechanism when defining the additional processes of a module.
Expand |
---|
title | Module dashboard components example |
---|
|
keys used: key_rewards_participants_per_scheme_bar_chart
Code Block |
---|
language | xml |
---|
title | Module dashboard component |
---|
| <dashboardcomponents>
<dashboardcomponent>
<id>PARTICIPANTS_PER_SCHEME</id>
<name>key_rewards_participants_per_scheme_bar_chart</name>
<description>key_rewards_participants_per_scheme_bar_chart</description>
<filename>rewards/participantsPerScheme</filename>
</dashboardcomponent>
.
.
.
</dashboardcomponents> |
|
...
The following example demonstrates how to make use of the glossary mechanism when defining the reports of a module.
Expand |
---|
title | Module reports example |
---|
|
keys used: key_rewards_participants_balance, key_view_the_wallet_balance_of_each_effective_rewards_participant
Code Block |
---|
language | xml |
---|
title | Module report |
---|
| <reports>
<report>
<id>REWARDPARTICIPANT_BALANCE_REPORT</id>
<name>key_rewards_participants_balance</name>
<description>key_view_the_wallet_balance_of_each_effective_rewards_participant</description>
<reportfilename>Rewards/Participants_Balance.crxml</reportfilename>
</report>
.
.
.
</reports> |
|
...
Note: In Web API's case the name tag should contain the method's name which will not be translated.
Expand |
---|
title | Module Web APIs Example |
---|
|
keys used: key_show_rewards_award_transactions_web_api
Code Block |
---|
language | xml |
---|
title | Module Web API |
---|
| <webapis>
<webapi>
<id>REWARD_AWARD_TRANSACTIONS_SHOW</id>
<name>reward_transactions/awards/show</name>
<description>key_show_rewards_award_transactions_web_api</description>
<classname>CRMAPIRewardTransactionBean</classname>
<method>awardsShow</method>
</webapi>
.
.
.
</webapis> |
|
...
The following example demonstrates how to make use of the glossary mechanism when defining the printouts of a module.
Expand |
---|
title | Module printouts example |
---|
|
keys used: key_warranty, key_view_the_warranty_policy_printout
Code Block |
---|
language | xml |
---|
title | Module printout |
---|
| <printouts>
<printout>
<id>WARRANTY_PRINTOUT</id>
<name>key_warranty</name>
<description>key_view_the_warranty_policy_printout</description>
<printoutfilename>InstalledItems/warranty_policy_printout.jrxml</printoutfilename>
<entityid>INSTALLEDITEMS</entityid>
</printout>
.
.
.
</printouts> |
|
...
Exceptions
This section shows how to use the Glossary Mechanism when creating exceptions.
The following examples demonstrate how to make use of the glossary mechanism when defining and throw an exception.
Expand |
---|
title | Defining an exception example |
---|
|
1. Create the exception class. Code Block |
---|
language | java |
---|
title | Exception class |
---|
| public class OnlyOneRecordException extends CRMValidationException {
/**
* Only one %1 %2 must be specified.
*
* @param crmSession - the session object
* @param value1 - the exception first value
* @param value2 - the exception second value
* @throws Exception
*/
public OnlyOneRecordException(CRMSession crmSession, String value1,String value2) throws Exception {
super();
ArrayList<String> parameters = new ArrayList<String>();
parameters.add(value1);
parameters.add(value2);
try
{
setMessage(this.getClass().getName().toUpperCase(), crmSession, parameters);
}
catch (Exception e)
{
e.printStackTrace();
}
}
} |
2. Define the exception in the messages.xmlfile. Use a unique key for the expression tag. Keys used: key_com_crm_exception_onlyonerecordexception Code Block |
---|
language | xml |
---|
title | messages.xml |
---|
| <messages>
<message>
<code>COM.CRM.EXCEPTION.ONLYONERECORDEXCEPTION</code>
<expression>key_com_crm_exception_onlyonerecordexception</expression>
<description>Only one record must be specified.</description>
</message>
.
.
.
</messages> |
3. Define the exception in the properties file, by using the expression tag key defined in metadata messages file as the entry key, and specifying the exception message. Code Block |
---|
language | xml |
---|
title | translation_eng.properties |
---|
| <properties>
<entry key="key_com_crm_exception_onlyonerecordexception">Only one %1 %2 must be specified.</entry>
.
.
.
</properties> |
|
Expand |
---|
title | Thowing an exception example |
---|
|
A key should be used for every exception input parameter that needs to be translated. Keys used: key_email_type Code Block |
---|
language | java |
---|
title | Throwing Exception |
---|
| if (emailTypes.contains(emailDto.getType().toString()))
{
throw new OnlyOneRecordException(getCRMSession(), "key_email_type",emailDto.getType().getLabel());
} |
|
Questions
...
This section shows how to use the Glossary Mechanism when creating questions.
Expand |
---|
|
keys used: key_invoice,key_confirm_financial_transaction_saved_as_posted question code used: CONFIRM_FINANCIAL_TRANSACTION_SAVED_AS_POSTED
1. Use showConfirmQuestion method to display the confirmation question. Code Block |
---|
language | java |
---|
title | Show question |
---|
| public CRMDOInvoice postInvoiceButton(CRMDOInvoice invoice)throws Exception{
showConfirmQuestion(
"CRMUIInvoice",
"postInvoice",
"CONFIRM_FINANCIAL_TRANSACTION_SAVED_AS_POSTED",
new String[]{"key_invoice"});
return invoice;
} |
2. Define the question code in metadata messages file. Code Block |
---|
language | xml |
---|
title | messages.xml |
---|
| <messages>
<message>
<code>CONFIRM_FINANCIAL_TRANSACTION_SAVED_AS_POSTED</code>
<expression>key_confirm_financial_transaction_saved_as_posted</expression>
<description>Confirm Action</description>
</message>
</messages> |
3. Define the question in the properties file, by using the expression tag key defined in metadata messages file as the entry key, and specifying the question message. Code Block |
---|
language | xml |
---|
title | translation_eng.properties |
---|
| <properties>
<entry key="key_confirm_financial_transaction_saved_as_posted">%1 is going to be saved as Posted. Do you wish to continue?</entry>
.
.
.
</properties> |
Image Removed |
...
Image Added |
Informational Messages
...
This section shows how to use the Glossary Mechanism when creating informational messages.
Expand |
---|
title | Informational message example |
---|
|
keys used: key_access_token_passcode_reset_success_msg informatinal message code used: ACCESS_TOKEN_PASSCODE_RESET_SUCCESS_MSG
1. Use showInfoMessage method to display the informational message. Code Block |
---|
language | java |
---|
title | Show informational message |
---|
| public CRMDOAccessToken resetPassCode(CRMDOAccessToken accessToken) throws Exception {
...
InfoMessage infoMsg = new InfoMessage(getCRMSession(),
"ACCESS_TOKEN_PASSCODE_RESET_SUCCESS_MSG",
new String[]{ accessToken.getAlias("passCodeAfterReset").toString() },
getCRMSession().getRealPath(),
getOrganisationID());
showInfoMessage(infoMsg);
...
} |
2. Define the question code in metadata messages file. Code Block |
---|
language | xml |
---|
title | messages.xml |
---|
| <messages>
<message>
<code>ACCESS_TOKEN_PASSCODE_RESET_SUCCESS_MSG</code>
<expression>key_access_token_passcode_reset_success_msg</expression>
<description>Access token pass code has been reset successfully</description>
</message>
</messages> |
3. Define the informational message in the properties file, by using the expression tag key defined in metadata messages file as the entry key, and specifying the message. Code Block |
---|
language | xml |
---|
title | translation_eng.properties |
---|
| <properties>
<entry key="key_access_token_passcode_reset_success_msg">The access token pass code has been reset to %1.</entry>
.
.
.
</properties> |
Image RemovedImage Added |
String Concatenation
...
This section shows how to use the Glossary Mechanism when concatenating strings.
Expand |
---|
title | String concatenation example |
---|
|
keys used: key_rule Use getTranslation method to get the translation of the different strings you want to concatenate. Code Block |
---|
language | java |
---|
title | Get translation |
---|
| public CustomerEventAutomation addPaymentMediumTypeAutomationButton(CRMDOCustomerEventDefinition customerEventDefinition) throws Exception {
PaymentMediumTypeAutomation paymentMediumTypeAutomation = new PaymentMediumTypeAutomation();
...
paymentMediumTypeAutomation.setRuleName(getCRMSession().getTranslation("key_rule")+" "+ruleNumber);
customerEventAutomation.setPaymentMediumTypeAutomation(paymentMediumTypeAutomation);
return customerEventAutomation;
} |
|
...
Mandatory Fields
...
This section shows how to use the Glossary Mechanism when defining mandatory while creating business object classes.
Expand |
---|
title | Mandatory fields example |
---|
|
keys used: key_website Code Block |
---|
language | java |
---|
title | CRMBOWebCustomerEventBean |
---|
| @Override
protected LinkedHashMap<String, String> getMandatoryFields(CRMDO dto) throws Exception {
LinkedHashMap<String, String> mandatoryFields = new LinkedHashMap<String, String>();
mandatoryFields.putAll(super.getMandatoryFields(dto));
mandatoryFields.put("key_website", "website");
return mandatoryFields;
} |
Image RemovedImage Added |