Architecture (00035)
The purpose of this lesson is to help you learn iDempiere's architecture.Architecture - Introduction
Architecture - Layers
Architecture - Context
- iDempiere Wiki page for Context
- @AD_Org_ID@ = 1000001
- @Name@=A,R,S (logically equivalent to using an sql IN statement)
- @#AD_Role_ID@ = 102 (note the pound sign refers to the user's session info - describing the person using the keyboard)
- @AD_Org_ID.Value@ = HQ (works when evaluator.java is performing the evaluation from GridTab)
- @AD_Org_ID.AD_Org_UU@ = KJLKJSLKJDLKFJSLKDJF (handy when you do not know the _ID because of Pack In offset IDs)
- @C_BPartner_ID<Value>@_@Name@ (alternate way to dereference a foreign key field. This style of context is used in Window, Tab and Field => Title Logic field)
- @IsSOTrx:N@ (the text after the colon is the default value if the context lookup is not successful - implemented in evaluator.java)
- @DateAcct<yyyyMM>@ - example
- @SQL=SELECT to_char(date_trunc('day',now())-2, 'yyyy-MM-dd') - default a date field based on relative days
- for date and time: 'yyyy-MM-dd hh:mm:ss'
- @IsSOTrx:Y@=Y = shows how to default the value. This is demonstrated in System Admin role => Info Window => Business Partner => isCustomer field
- @1|C_TaxCategory_ID@ = pull C_TaxCategory_ID from a specific tab; in our case, tab = 1. You can see the detailed context information by tab by clicking on upper-left logo => Error tab => View button => scroll down to the context section. When you see something like 1|0|_TabInfo_AD_Tab_ID == 100, the first number is the window, the second number is the tab. Here is more information.
- There are times when you need to add information to context in a new variable. You can use Column SQL to accomplish this task. Here is an example (discussion).
- Env.parseContext(...)
- MMailText.parse(...) and MMailText.parseVariable(...)
- Evaluator.java
- GridField.getDefaultFrom...(...)
Default Logic
- Integer and numeric fields try to default to 0. Setting the Default Logic field to Null (not using quotes) will ensure the value is empty. Here is a summary of what to try:
- Null
- 1=2
- -1
- Included for reference: Link to discussion - preventing default value or default logic from context
Architecture - Window Tab Field - Window Tab
- All Window, Tab, Field => Window Type field = "Transaction" has special behavior. This type is used for SO, PO, MR, Inv, Etc...
- Transaction windows do not show all records when they are opened.
- Instead, they show
- All documents that are not completed, voided, reversed, or closed
- All documents that have been completed, voided, reversed, or closed in the last 24 hours.
- Transaction windows also include a 'Total' tip strip in the upper right corner of the window. Ex: SO Example: 1 Line - 0.00 - Total: 0.00 USD = 0.00
- Encrypted
- Encrypted filed display value as ******
- Do not manage change logs .
- Store direct value(same as entred) store in database.
- Obscure
- Obscure filed use for display last 4 digit value and other digit display like below
- Example :- *********1478
- Manage change logs in Obscure.
- Store direct value(same as entered) store in database.
- Secure
- Secure column store direct value(same as entered) in database
- Display same value in field.
- Secure content can not manage change logs.
Architecture - Window Tab Field - Tab Tab
Architecture - Window Tab Field - Field Tab
Architecture - Table and Column - Table Tab
Architecture - Table and Column - Column Tab
Architecture - Table and Column - Reference Field
2013-12-10 AM Meeting (ppt) - Architecture
- Calling processes from menu, button, scheduler, web services.
- Secure content
- read only, URL and WebUI
- Callouts, count, order, language
- Change Log (table, window, role) what can prevent log?
- Grid customization per person
- encryption (UI or DB)? Use in Cloud
- tabs tied to view
- Dynamic validation
2013-12-10 PM Meeting (ppt) - Architecture
- Three product windows - context?
- Jasper reports
- Cache management - Period example
- web services - load balancing
- Starting at 0:31:00 we start discussing costing
- Inspection control BP+Prod (link)
- What was the issue(s) regarding the fork from Adempiere to Idempiere?
- What is the control structure that is in place for iDempiere development (added feature/functionality & integrations) as well as bug corrections? Jira (bitbucket)