Now that you understand what salesforce is, it is time to dive in. This article (second in salesforce series) talks about how to customize/extend salesforce platform using its native functionality that does not requiring any coding.
An organization account in salesforce at the root level comprises of various data objects. While the platform comes ready with some pre-built objects (like Account, Contact etc), it also allows its users to define new ones. This process of creating a new Custom Object is similar to that of creating a table in a database where the definition of the object is captured & requires special privileges. Salesforce provides simple web based UI tools to administrators that allow them to define an object & add attributes to it through a UI wizard. The following section talk about various concepts that are involved related to salesforce objects.
Custom Fields : Once an object is defined, it is not of much use till you add “Fields” to it. These fields are elements that would be required to be filled with data with every record of the custom object. You might want to think of these as columns of a database table. These fields could be of different types like numbers (integers as well as floating), text, date, Boolean, currency, lists etc. While defining the object, one is required to specify the “record name” – a field that would uniquely identify a record. This field of type Text or auto-generated number can be thought of as the “primary key” for the object.
Constraints : Once an attribute has been defined, the platform allows adding simple constraints on them. A constraint comes handy when you want to impose restrictions on the possible values that an attribute can contain. For example if an attribute represents a percentage value, you would want to impose a constraint that it can be between zero and hundred. You also define an error message that is displayed if the constraint is violated.
Dependent Fields : Fields can also be marked dependent on one another. For example if you have a drop down (or pick-list) that stores a list of countries and another drop down that stores a list of cities; it is possible to show only cities of the selected country by marking the “city” drop down dependent on the “country” drop down.
Relationships : When adding an attribute, one can also set up a relation between objects. For example – When defining a “Student” object, it might have an attribute called “School” for example which might have its own set of attributes. These fields are known as “lookup” fields. You might want to think of this as a “foreign-key” relationship.
Triggers : Another interesting feature that can be used for manipulating custom-objects is triggers. These are call back methods that are executed by salesforce platform when data is inserted, updated or deleted. The logic to be executed is written in Apex (to be discussed later).
Security : When creating an attribute, security is also defined for that attribute. This essentially involves who all have permissions to view/modify/delete data in the field. More on security later.
Once a custom object has been defined along with the associated relationships, dependencies & constraints one can add that object to a new “Tab”. A tab is a UI element that provides visibility for the object to a user. A tab can show a list of instances/records of a particular object; clicking each item in the list provides more details (Fields of the record) which can be edited if desired (assuming edit permissions are granted). A tab also provides buttons that allow a user to do standard operations like “New” which presents a user with a form that takes input for all the attributes defined. One can also create custom buttons to do custom actions – For example you might want to have a custom button that modifies an attribute of multiple instances in one shot (this would require Apex programming though which I’ll talk about in later sections).
As mentioned above a Tab associated with a custom object provides information about instances of that object. All UI related aspects of this object are decided by the Page Layout. One can define different layouts and associate them to different roles (therefore controlling the amount of information visible to any role). A Page Layout manager is the place where one defines what all fields would be shown & in what order. This also allows a user to select the buttons that are to be shown.
Note – This post only introduces various concepts as used by salesforce & is by no means complete. If you like to read further, here is an excellent document that should help you – http://wiki.apexdevnet.com/index.php/Members:Creating_On-Demand_Apps_PDF. This points to a document titled : Creating On Demand Apps and is an excellent read. You would need to signup (free) as a developer to download this.
If you have any questions, please feel free to post the same in comments section and I would try to help as much as possible.