tag:blogger.com,1999:blog-12214002.post6792177617478914157..comments2024-03-09T06:56:57.099-05:00Comments on Let's Wreck This Together...with Oracle Application Express!: APEX_APPLICATION_INSTALLJoel R. Kallmanhttp://www.blogger.com/profile/01915290758512999160noreply@blogger.comBlogger29125tag:blogger.com,1999:blog-12214002.post-61615558879432074342014-12-22T20:28:29.295-05:002014-12-22T20:28:29.295-05:00"Any",
You don't say anything about..."Any",<br /><br />You don't say anything about the specific APEX version you're using. But my guess, on such little information, is that you're encountering a bug fixed in a later patch set of APEX 4.2, where a translation mapping in another workspace is concealing the existence of the application ID in your workspace.<br /><br />JoelJoel R. Kallmanhttps://www.blogger.com/profile/01915290758512999160noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-63290320039516270222014-12-22T17:31:37.319-05:002014-12-22T17:31:37.319-05:00I see My application id in www_flows table but not...I see My application id in www_flows table but not in apex_applications view. <br />Any idea what is wrong?<br />How to make my application id appear in apex_applications view.<br />Please help me to understand.Anyhttps://www.blogger.com/profile/17237888398471143776noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-17571660275021360002014-06-28T07:18:44.585-04:002014-06-28T07:18:44.585-04:00Hi Devi,
You set the character set portion of the...Hi Devi,<br /><br />You set the character set portion of the local NLS_LANG environment variable equal to the file character set *prior* to initiating SQL*Plus.<br /><br />For example, if you're in France and your file is encoded in character set windows-1252, you would set your client NLS_LANG environment variable to FRENCH_FRANCE.WE8MSWIN1252. You could even set it to AMERICAN_AMERICA.WE8MSWIN1252 if you wanted to. It's the character set portion of this variable that is most relevant for the file encoding. As another example, if your file was encoded in utf-8, you could set the NLS_LANG environment variable to FRENCH_FRANCE.AL32UTF8.<br /><br />When I say "local client", I mean the local environment where I'm starting up SQL*Plus and running the application import.<br /><br />Does this make sense?<br /><br />JoelJoel R. Kallmanhttps://www.blogger.com/profile/01915290758512999160noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-34140515429419618462014-06-23T23:01:19.049-04:002014-06-23T23:01:19.049-04:00Hi Joel,
Question: is there a way to set file cha...Hi Joel,<br /><br />Question: is there a way to set file character set ?<br />Because the problem is that in french we have to deal with accents (é è à ç) ... <br /><br />Thanks a lot,<br />DeviAnonymoushttps://www.blogger.com/profile/17775070412752964619noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-69530663571800064842013-12-04T23:28:34.317-05:002013-12-04T23:28:34.317-05:00Hi Tony,
Yes - that's the plan. And also ins...Hi Tony,<br /><br />Yes - that's the plan. And also install and published translated versions too.<br /><br />JoelJoel R. Kallmanhttps://www.blogger.com/profile/01915290758512999160noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-39202807193519272592013-12-04T13:38:04.889-05:002013-12-04T13:38:04.889-05:00Joel,
Quick question.. Do you for see APEX's...Joel,<br /> Quick question.. Do you for see APEX's command line install process in the future having the ability to handle installing supporting objects?<br /><br />Thank you,<br /><br />Tony Miller<br />LuvMuffin SoftwareAPEX Developer In the USAhttps://www.blogger.com/profile/06746962787261032815noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-14540350755592239432013-05-28T23:17:15.654-04:002013-05-28T23:17:15.654-04:00Hi Tony,
Thanks for your comment. My apologies, ...Hi Tony,<br /><br />Thanks for your comment. My apologies, especially to Elie, for not addressing her comment. It was an unintentional oversight.<br /><br />As you may know, you can already export individual pages. And you can directly import these into another APEX instance, assuming the workspace ID and application ID are identical. However, in the case that the application ID and workspace ID are different across two instances, you should be able to use the APEX_APPLICATION_INSTALL API's to import a page into the target application. To make sure everything is in sync, you'd have to compute and properly set the workspace ID, application ID and offset, but that's all that should be required.<br /><br />I've just scanned a page export file, and I *believe* this should work. Let me test it out on Wednesday and I'll followup with my findings.<br /><br />JoelJoel R. Kallmanhttps://www.blogger.com/profile/01915290758512999160noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-38876471097712934292013-05-28T22:36:20.357-04:002013-05-28T22:36:20.357-04:00Hi Joel,
Came accross this thread and noticed tha...Hi Joel,<br /><br />Came accross this thread and noticed that you never came back to Ellie on her comment about having a means of just exporting/importing individual pages.<br /><br />This for me at the moment in v4.2.2 would've have been very useful and unsure why it wasn't considered.<br /><br />Any updates on this and whether this feature will one day be available.<br /><br />Thanks.<br />Tony.Tony Fatouroshttps://www.blogger.com/profile/04933422349221867392noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-65924034873217614782012-05-16T17:28:35.263-04:002012-05-16T17:28:35.263-04:00Thanks Joel. This information is gold. I will test...Thanks Joel. This information is gold. I will test a few of these scenarios and see what works best for us.Rob van Wijkhttps://www.blogger.com/profile/00499478359372903250noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-35203784651392398392012-05-16T15:29:47.677-04:002012-05-16T15:29:47.677-04:00@Rob,
Sorry for the delayed reply. This fell off...@Rob,<br /><br />Sorry for the delayed reply. This fell off the radar.<br /><br />I think it's going to be a bit of a challenge to have developers works independently and then yet collaborate on effectively the same application. Your biggest conflict may be in the use of Shared Components - unless you propagate all shared components to all environments, and keep them up to date, then you're going to have conflicts. If 2 developers create an LOV named "EMP_LOV", which one is used? How about page templates? Authentication schemes?<br /><br />Must you segregate this by workspace? Can you have the developers work on distinct applications, all in the same workspace? Can you have them work on the same application and then segregate their work by page ID range?<br /><br />The synthesized almost globally unique ID is based on a sequence, some random number, and time:<br /><br /> select to_number(<br /> to_char(wwv_seq.nextval) ||<br /> lpad( substr( abs(wwv_flow_random.rand), 1, 5 ),5, '0' ) || ltrim(to_char(mod(abs(hsecs),1000000),'000000')))<br /> into g_curr_val<br /> from sys.v_$timer;<br /><br />and wwv_flow_random.rand is an internal random number generator.<br /><br />I hope this helps.<br /><br />JoelJoel R. Kallmanhttps://www.blogger.com/profile/01915290758512999160noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-52252767833355880342012-05-08T17:35:42.694-04:002012-05-08T17:35:42.694-04:00Thanks for your quick response.
Using specific of...Thanks for your quick response.<br /><br />Using specific offsets for each developer is indeed better than using random offsets using generate_offset, but still has the disadvantage that an export from a developer workspace and a subsequent export split, will lead to every file being different due to the offset, even if you only changed one object. Which leads to a lot of overhead in your version control system.<br /><br />My goal is to develop completely in parallel, with each developer having its own APEX workspace and its own database schemas.<br /><br />Suppose each developer -as you recommended- gets its own specific offset during import. And after the developer completes his work, he exports his application and wants to put it back in version control. We parse the export file and subtract the same offset as used during import from all ID's in the export file. Then we split the export file and now most of the files will be the same as the original, and only the real changes will appear in version control. This will work for sure with one developer, but will it work with several colleagues at the same time at the same application? It depends on how object ID's are generated. Will ID's of new objects collide if -for example- I add a new page 1 and my colleague developer adds a new page 2?<br /><br />Can you tell a bit more about the 20 digit long ID's and how you make them unique? Are they generated using a sequence or using <br />(yuck) nvl(max(id),0)+1, or completely random. I studied the export file and its ID's and none of the above seems to apply. But what does?<br /><br />Regards,<br />Rob.Rob van Wijkhttps://www.blogger.com/profile/00499478359372903250noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-20349340838921105072012-05-07T22:10:20.878-04:002012-05-07T22:10:20.878-04:00Hi Rob,
Thanks for the feedback.
>> What w...Hi Rob,<br /><br />Thanks for the feedback.<br /><br />>> What will happen if we don't generate an offset during import? Will future object ID's collide when we merge each developers work into version control?<br /><br />Even if you choose a different application ID, if you don't choose some different offset for each of the developers (assuming you're importing the same application from the same application export file into each workspace), then you won't even get past the second import. The ID's of the metadata on the import into the second workspace will collide with the ID's of the import into the first workspace.<br /><br />Why don't you do this? Why don't you choose some arbitrarily high offset per developer - 111111111 for the first one, 22222222 for the second one, and so on. Then, on subsequent imports, instead of calling apex_application_install.generate_offset, you would simply call apex_application_install.set_offset - setting the offset to 111111111, 222222222, etc. This way, they all remain consistent.<br /><br />I hope this helps.<br /><br />JoelJoel R. Kallmanhttps://www.blogger.com/profile/01915290758512999160noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-88823743619028013322012-05-07T07:32:04.250-04:002012-05-07T07:32:04.250-04:00Hi Joel,
Thank you for this very useful blogpost....Hi Joel,<br /><br />Thank you for this very useful blogpost.<br /><br />I hope you can clarify some more about offset.<br /><br />I have one APEX environment, with a workspace per developer. I import the same application (under a different application id) into each of those developer workspaces. What will happen if we don't generate an offset during import? Will future object ID's collide when we merge each developers work into version control?<br /><br />Using generate_offset during import works great, but has a disadvantage that each developer's export, after an export split, contains new ID's, making each version totally different from the version under version control.<br /><br />In general, can you tell something about how those 20 digit long id's are generated under the covers?<br /><br />Regards,<br />Rob.Rob van Wijkhttps://www.blogger.com/profile/00499478359372903250noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-64979378619908730702012-04-11T11:37:24.881-04:002012-04-11T11:37:24.881-04:00Martin - thank you for pointing this out. I have ...Martin - thank you for pointing this out. I have updated the internal version of this documentation and it will be corrected the next time they publish it.<br /><br />Thanks again for taking the time to report this.<br /><br />JoelJoel R. Kallmanhttps://www.blogger.com/profile/01915290758512999160noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-18367447873916599962012-04-11T10:51:56.546-04:002012-04-11T10:51:56.546-04:00Hi Joel,
Just to let you know the example you gav...Hi Joel,<br /><br />Just to let you know the example you gave uses different names for each TRAINING workspace (1,2, and 3). In the documentation (http://docs.oracle.com/cd/E23903_01/doc/doc.41/e21676/apex_app_inst.htm#CHDEBIAG) it just repeats it as TRAINING1 instead of 1,2, and 3. Can you please pass along to the appropriate person?<br /><br />Thanks,<br /><br />MartinUnknownhttps://www.blogger.com/profile/16042225376496185054noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-66172624999968810792011-06-04T22:05:51.200-04:002011-06-04T22:05:51.200-04:00Hi, Joel.
I just now came across this blog about ...Hi, Joel.<br /><br />I just now came across this blog about apex_application_install.<br /><br />Unfortunately, what I do NOT see is any reference to importing an exported page or set of pages.<br /><br />In my situation, we need to import over 40 pages from a development Apex app (which contains over 200 pages) into a production Apex app.<br /><br />I see no way how to do this except for the tedious method of manually modifying the export sql files for each page and then (hope for the best) import these modified sql files into my target (production) app.<br /><br />I had hoped that this new PLSQL package would work with individual pages rather than just the entire application.<br /><br />Your thoughts?<br /><br />Thank you.<br /><br />ElieEliehttps://www.blogger.com/profile/04759590911714369865noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-87594867493985703002011-04-13T11:48:23.253-04:002011-04-13T11:48:23.253-04:00@Rene,
>> Does this mean that choosing an e...@Rene,<br /><br />>> Does this mean that choosing an existing ID will completely replace the existing application? (usefull for updates)<br /><br />Yes - absolutely. I should have stated this so clearly, so thanks for doing so.<br /><br />JoelJoel R. Kallmanhttps://www.blogger.com/profile/01915290758512999160noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-90638602661512872352011-04-13T09:55:57.426-04:002011-04-13T09:55:57.426-04:00"The application ID should either not exist i..."The application ID should either not exist in the instance, or if it does exist in the instance, it must be in the workspace where the application will be imported into"<br /><br />Does this mean that choosing an existing ID will completely replace the existing application? (usefull for updates)Rene Westenberghttps://www.blogger.com/profile/06894384618678653138noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-52527521303170482372011-04-13T09:54:18.231-04:002011-04-13T09:54:18.231-04:00"The application ID should either not exist i..."The application ID should either not exist in the instance, or if it does exist in the instance, it must be in the workspace where the application will be imported into"<br /><br />Does this mean that choosing an existing will completely replace the existing application? And thus can be used for updates?Rene Westenberghttps://www.blogger.com/profile/06894384618678653138noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-18006009643590964232010-12-14T22:27:09.692-05:002010-12-14T22:27:09.692-05:00@vikasa - thanks for pointing this out. I've ...@vikasa - thanks for pointing this out. I've corrected it.<br /><br />JoelJoel R. Kallmanhttps://www.blogger.com/profile/01915290758512999160noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-37875470796512035442010-12-12T18:39:34.414-05:002010-12-12T18:39:34.414-05:00Minor typo in the examples - Should be apex_applic...Minor typo in the examples - Should be apex_application_install.get_application_id instead of apex_application.get_application_idAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-12214002.post-22584329753018987432010-07-23T12:41:31.944-04:002010-07-23T12:41:31.944-04:00@vgoncharov - Here you go, this blog post is for y...@vgoncharov - Here you go, this blog post is for you: http://joelkallman.blogspot.com/2010/07/moving-your-xliff-files.html<br /><br />Hopefully you don't deem this useless as well.<br /><br />JoelJoel R. Kallmanhttps://www.blogger.com/profile/01915290758512999160noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-83699995241446688732010-07-22T21:38:27.706-04:002010-07-22T21:38:27.706-04:00@Dan,
No - supporting objects aren't installe...@Dan,<br /><br />No - supporting objects aren't installed via the command line. Granted, it would be ideal to have one single point of truth for installation, regardless if an application is imported via the Web or via SQL*Plus or SQL Developer, but that's not the case. The "alternative" is execution of a SQL script to create your database objects, as everyone is accustomed to.Joel R. Kallmanhttps://www.blogger.com/profile/01915290758512999160noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-50244533322071248922010-07-22T20:50:14.071-04:002010-07-22T20:50:14.071-04:00Very nice Joel!
What about supporting objects? Th...Very nice Joel!<br /><br />What about supporting objects? They can't be installed via the command line can they? If not, could any procedures be added for installs/upgrades? Or is it just assumed that if you're using the command line you're capable of write the scripts manually? <br /><br />Regards,<br />DanDan McGhanhttps://www.blogger.com/profile/13971112000913341546noreply@blogger.comtag:blogger.com,1999:blog-12214002.post-23301853238816824552010-07-22T17:31:38.150-04:002010-07-22T17:31:38.150-04:00@vgoncharov
I don't know if I would say usele...@vgoncharov<br /><br />I don't know if I would say useless. You're able to use this to shift the meta data for translated applications as well. <br /><br />What you're talking about is the loss of the XLIFF files once an application ID is changed, which this API APEX_APPLICATION_INSTALL was never intended to solve.<br /><br />But sit tight - I have a solution for the problem you describe and I'll make it available (via my blog) in the next day or two.<br /><br />JoelJoel R. Kallmanhttps://www.blogger.com/profile/01915290758512999160noreply@blogger.com