xTra4o stands for “XLIFF Translator for Oracle”, and more specific for APEX.
xTra4o is an application that iAdvise has built, already a few years ago, that helps in the translation process of an APEX application. This tool is publicly available as referenced by the APEX OTN site.
Read our blogs referring to this tool, posted in February 2007.
There is a one specific step within the process of tanslating an application that APEX itself does not so well support; it is step 3 where you must translate all translatable elements within the so-called XLIFF file.
Our xTra4o allows to upload this XLIFF file and translate the individual elements via a specific editor.
A first surplus of this tool is the possibility to write common terms in a Dictionary and use this Dictionary for translating similar terms.
Today we have added an additional useful feature to the tool. For each source term you can get the translation via the Google Translate API. Following screenshot shows the new icon, you can click on to let Google make the translation. In the example English terms must be translated into French:
As a user, you can always adjust the proposed translation yourself and decide to add the word in the Dictionary.
We have discovered that Google does not always treat ‘special characters’ in a proper way. For some of those signs (like the ‘#’ sign), we block the API call. It is possible that we do not block all special characters yet, but this can easily be added. If you detect such cases, let us know via the feedback option in the tool.
To use this Google Translate API we started from the PL/SQL code that you can find on this blog.
iAdvise organiseert naar jaarlijkse gewoonte een (gratis) Seminarie over Oracle Application Express.
De uitnodiging is als volgt:
“Stap voor stap zullen we aantonen hoe je op een snelle en eenvoudige manier veilige en mooi ogende data-driven webtoepassingen bouwt en uitrolt, en dit allemaal zonder zware architectuur en zonder lange leertrajecten. Om dit alles te staven, kan je tijdens het seminarie live de installatie van Oracle Apex volgen, bouwen we een volledig nieuwe applicatie met Apex, en plaatsen we deze webtoepassing ook nog eens in productie.
Na het seminarie beschik je over de nodige informatie om zelf onmiddellijk aan de slag te gaan. ‘Express’ in de productnaam is geen ijdele marketing kreet. Laat je enkele uren op sleeptouw nemen en laat je overtuigen!”
Wanneer: 8 December vanaf 13:30
Waar: kantoren te Kontich
Inschrijven kan via deze weg.
The main reason for me to come to the ODTUG conference was — besides presenting our own paper — to see what other Oracle users are doing with the tool. So, most of the sessions I followed were Apex-related. As you can read on different other blogs, it is clear that Apex is hot. So, it is the right momentum to start using the tool, if you not already did.
But I also tried to follow some other sessions. A short impression:
“Service-enable Oracle E-Business Suite with Oracle SOA Suite BPEL Process Manager“, by Basheer Khan. Basheer is a very gentle and nice person, especially for newbies. I met him during the “Presenters Drink” where he invited me to his session. During his presentation he showed how to create a BPEL process that integrates with Oracle E-Business Suite using Web Services. When you are used to Apex, is this a totally different world, but a world that sooner or later we will also need to integrate within Apex.
Since I doing also a lot of pre-sales activities and always get some questions on Oracle Forms, I decided to attend a session on this matter: “How to Turn Older Oracle Forms Applications into a SOA Application“. Grant Ronald did the introduction. He emphasized (again) that Oracle Forms is not going away, but that you need start looking at other tools and technologies. His most important message was that — for Oracle customers struggling with the question which Oracle tool they need to choose — it is no longer an OR … OR decision, but rather an AND … AND… solution. An Oracle Forms application can continue existing, aside an ADF application with SOA integration or even an apex development environment for enterprise-alike applications. I have the impression that the ADF-guru’s are not yet convinced by this, but a comment of Tom Kyte on an “Apex versus ADF” post is very enlightening on this matter: “APEX is as capable of building an enterprise-y application as anything else. … APEX can build anything from tiny to huge – you do not need the infrastructure and overheads the java environment would pull along in order to build big. … There are times for Java, there are times for APEX, there are times for each of the tools – they have their strengths and weakness.”
Of course, I also wanted to attend a session of Steven Feuerstein, thé PL/SQL Evangelist. This is real entertainment, but with a high level of knowlegde transfer, maybe we should call it “knowledge-tainment”. All his “knowledge” can be found on his site and the presentation on Weird PL/SQL can be downloaded from here.
The most interesting session for me (besides the apex ones) was given by Sue Harper: “Oracle SQL Developer: An Overview and New Feaures“. The most recent version (1.5) confirms the fact that it becomes a valid and mature alternative for the Toads or SQL Navigators … and it is free. This shouldn’t be surprising since the driving force and ‘intellectual father’ of the tool is Mike Hichwa, as for Oracle Application Express.
And SQL Developer becomes even better since they announced that the tool will be extended with Data Modeling capabilities (ERDs, physical schema design, dimensional modeling, reverse engineering and more …). Finally, an alternative for the “data”-part of Oracle Designer. I’am really looking forward to this new extension.
We talked about “The Apex Project Workplace” during our presentation at ODTUG Kaleidoscope. This workplace could look like something as presented on the following picture:
The desk, where a developer is working, is like a workbench where all necessary materials are available that can help to efficiently guide and increase the productivity of the development process.
In your development environment, you should always be looking for manners to improve the productivity of your work: do it quicker, but don’t compromise the quality of your work. The latter is one of the reasons why we started our QA-Viewer-for-Apex.
Therefore, my favorite — and in my opinion — the most useful Apex session at the conference was given by Patrick Wolf.
He showed how you can write quicker and better code by extending the “toolset” within your apex development workplace with “open source” tools. On the one hand, Patrick demonstrated a set of tools around Mozilla Firefox which are useful for any webdevelopment (Firebug, WebDeveloper, Yslow and Live HTTP Header). On the other hand, Patrick developed his own extensions on top of the Apex Application Builder: the ApexLib, the Apex Builder plug in and Apex Essentials. Probably you can read more about in on other blogs or on Patrick’s site
Bottom line is, that everybody should consider to add this tools to his Apex development workplace.
End of this month we organize together with Oracle Belgium our annual seminar on Apex.
For more then 3 years we are doing projects with Oracle Application Express and want to share our knowledge and our experience with the Oracle community.
In the first part of the seminar we will give first a small introduction on the product, its positioning and architecture. Next we will give an overview of the different kind of applications you can build with Apex from internet- over extranet- to intranet or back-office applications. Where possible we will refer to applications we already realized.
After a break we will explain our Apex Development Approach. This is a very pragmatic approach and can be considered as an assemblage of standards, guidelines, tips, standard solutions and custom-developed tools (like xTra4o, QA, …).
In between we will give a demo of the most important new features of the latest version Apex 3.1.
All presentations will be in Dutch. Belgium customers that want to join the seminar, can subscribe here.
In one of my previous blogs, I already told we grouped the different QA-checks-you-want-to-perform in a single Apex application.
A special attention point is that this application needs to be imported in the workspace where the application resides that you want to control. This is due to the way the apex_ repository views are designed: you only see those applications where the different schemas assigned to the workspace have access to.
Since the last blog, we changed a little bit our approach. At that time, we had the idea tho group all related qa-checks in one UNION’ed view, containing ALL the queries for the different controls.
The main disadvantage of this implementation is that each time you want to add an extra check, you need to modify the view; this means doing some DDL.
Therefore, we decided to store the SQL-statements in a separate column related to each different control. Following screenshot, shows you the page that is used to add/modify a pre-defined control:
The sample query is used to check whether the Report Column Headings are always aligned the same way: Left, Right or Center. As you can see we do not hardcode one of those possible options in the where clause; but retrieve the standard-alignment-for-the-columns via a function call (Pck$QA_APEX_Standards.heading_alignment).
Therefore we created a separate table where we define all kind of parameters of which the value can differ from applicaton to application. The following screenshot shows the page where the parameter “heading_alignment” is defined with his default value.
If you want to differ from this default value for a given application, we have foreseen the possibility (via a second table), to store for a specific application (GWI in the example) the standard-value we agreed on with our end-users. This permits to have different standards for different apex-applications in the same workspace.
A very good example of how the Apex Repository can be used for doing QA-work on your Apex development can be found here.
You can find there such a UNION’ed select — I talked about in one of my previous posts – showing how you can detect all the components where a condition is set to ‘Never’.
Very interesting …
In my previous post I emphasized the power of the Apex dictionary views.
On this matter, have also a look at the very complete presentation of Patrick Wolf.
In the meanwhile, we further elaborated our idea of building a custom Apex application that should help in doing quality checks on coding standards and guidelines.
We gathered the different checks that we wanted to perform in different groups. For each group, we have built a view consisting of different UNIONed selects as illustrated in my previous blog.
This is a list of groups we distinguish so far:
- APR => Application Page Regions (QA_APEX_APP_PAGE_REGIONS)
- APRC => Application Page Rep Columns (QA_APEX_APP_PAGE_RPT_COLS)
- API => Application Page Items (QA_APEX_APP_PAGE_ITEMS)
- APP => Application Page Processes (QA_APEX_APP_PAGE_PROC)
- APV => Application Page Validations (QA_APEX_APP_PAGE_VAL)
Within each group, we defined one or more checks, corresponding with a specific select against the apex repository. Each check we gave a short identifying code.
- APR-001 = Wrong Reports Region Template
- APR-002 = Wrong no_data_found_message
- APR-003 = Wrong maximum_rows_to_query
- APR-004 = Wrong pagination_scheme
- APR-005 = Wrong enable_csv_output
- APR-006 = Wrong report_null_value_as
- APR-007 = No ORDER BY – No Dflt sort sequence
- API-001 = Wrong date format in Date Picker
- API-002 = Date column NOT based on Date Picker
- APP-001 = Verify (Length) PL SQL Source
- APP-002 = No Process Error Message
- APV-001 = Wrong error_display_location
- APRC-001 = Wrong date format
- APRC-002 = Wrong Heading Alignment
After having defined the different checks and their corresponding query, the only thing we still needed to do was finding a way to give the developer or code reviewer an easy interface to perform those checks for a specific Apex application.
The following figure shows you how we finally visualized those checks:
In this screenshot, you can see for example which date item on which page and region does not yet correspond with the date format we decided on at the start of the development.
We also added an export to Csv. Like Carl Backstrom suggested, we could extract easily this data to PDF by using the PDF-Printing facilities available since Apex 3.0.
We have the impression that this QA-application can be extended and ameliorated in different ways. We are convinced that it have a lot of potential. For example, for the Apex project we are currently working on, we needed to present a global Quality Plan for the project. In that document we could refer to this QA-application as one of the ways to guarantee the quality of the application that we have to deliver within a few months.
(to be continued…)