Future support for using PL/SQL core business logic with ADF BC

We want to migrate our large Forms client/server (6i) application to ADF, possibly using a migration tool like Ciphersoft Exodus.
One scenario could be to use ADF BC and ADF-Faces or a different JSF-Implementation for presentation and business layer but keep our heavy PL/SQL-businesslogic inside the Oracle database in packages, triggers, functions and procedures.
This scenario could be chosen due to the huge amount of interconnected logic inside the database (10 years of development; no technical components; any package may access any table and more of this kind of dependencies). The business logic nowadays held in Forms client will be moved mainly into the database as a prerequisite to this scenario.
Choosing this "keep-logic-in-DB"-scenario we need a good support by ADF BC to do so. We know and prototyped that it is possible to call some PL/SQL via JDBC from ADF BC and it is possible to use stored procedure calls for standard business entity data access (ins, del, upd, ..). But this does not solve our problems. We want to reuse core business logic coded in PL/SQL. This is much more than change the ADF standard behavior for an update with an own PL/SQL-call.
Now my question:
Will there be a kind of sophisticated support to use ADF BC in combination with database-kept logic?
If so, when will this happen and how will the common problems of transactional state inside the database and inside the ADF BC be solved? Any plans or ideas yet?
Many other clients do have similar applications built in Forms and PL/SQL and would be glad to hear about a path of direction.
I've read the technical article 'understanding the ADF BC state management feature' which you have contributed to. One current limitation is pointed out there: Using PL/SQL with ADF BC limits ADF AM pooling to 'restricted level' which reduces scalability.
Are you aware of additional main problems/tasks to solve when using PL/SQL heavily with ADF BC, which we have to think about?
Thank you for any response.
Ingmar

My main problem is two 'concurrent' areas holding state in an application system based on DB-stored PL/SQL-logic in combination with ADF BC.
For a new System everything can be made ok:
Sure, it is possible to build a new system with the business logic included in ADF BC only. All long-living state will be handled in the BC layer ( including support for UnitsOfWork longer than the webside short HTTP-requests and HTTP-sessions and longer than the database transactions.
For an old system these problems arise:
1. DB data changes not reflected in BC layer:
Our PL/SQL-logic changes data in tables without notifying the ADF BC layer (and its cache). To keep the data in ADF BC entity objects identical to the changed database content a synchronization is needed. BC does not know which part of the application data has been changed because it has not initiated the changes through its entity objects. Therefore a full refresh is needed. In a Forms4GL environment the behavior is similar: We do frequently requeries of all relevant (base)tables after calling database stored logic to be sure to get the changed data to display and to operate on it.
-> Reengineering of the PL/SQL-logic to make the ADF BC layer aware of the changes is a big effort (notifying BC about any change)
2. longer living database transactions
Our PL/SQL-logic in some areas makes use of lengthy database transactions. The technical DB-transaction is similar to the UnitOfWork. If we call this existing logic from ADF BC, database state is produced which will not be DB-committed in the same cycle.
This reduces scalability of ADF BC AM pooling.
Example:
a) Call a DB-stored logic to check if some business data is consistent and prepare some data for versioning. This starts a DB-transaction but does not commit it.
b) Control is handed back to the user interface. Successful result of step a) is displayed
c) User now executes the versioning operation
d) Call another DB-stored logic to execute the versioning. DB-transaction is still open
e) Business layer commits the transaction automatically after successful finishing step d). Otherwise everything from a) to e) is rolled back.
-> redesign of this behavior (= cutting the 1to1 relation between LogicalUnitOfWork and the technicalDatabaseTransaction is a big effort due to the big amount of code.

Similar Messages

  • Accessing LCDS Persistence Layer for use in Server-Side Business Logic

    Within server-side business logic, I want to be able to get a persisted object from LCDS, manipulate  that object, and then use LCDS to persist those changes to the database  as well as send those changes to the client.
    Is it possible to access LCDS' persistence layer (Hibernate) to be used by server-side business logic?
    I have attempted to use DataServiceTransaction.getItem(...).  However, for objects that contain a collection of other objects I get this error:
    [LCDS] Runtime exception while trying to fetch a property from hibernate: flex.data.DataServiceException: There is no current message broker to return.
    When calling DataServiceTransaction.updateItem(...) for objects that contain a collection of other objects, I get this error:
    org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.sd.pojo.Book.chapters, no session or session was closed
    Also, it appears that DataServiceTransaction.updateItem does NOT update the database?
    I have resorted to building my own Hibernate SessionFactory, but that seems unnecessary.
    One other piece of information is that I am using the Fiber modeling tool to build and deploy the model to the server.  I am generating the Java classes with Fiber and making them available to be used on the server.
    Thanks,
    Collin

    Thanks for the help guys.
    I guess what I'm really trying to get straight in my own mind is whether supporting interraction and control of eJB database interraction is still using the same functionality as having a stand alone app interracting with a db.
    I'm thinking about; the implications of using eJBs specific query language and the different way in which eJBs use db connections (either for the period of their lifetime or just for the duration of one interaction) compared with a stand alone app, which would maintain a connection to the database(s) while it is open.
    Connection pooling and caching of DB objects is often quoted as being a middle tier activity, but what does this mean when all 3 tiers reside on the same machine?
    Once again thanks for your comments and advice.
    Mark

  • Characters ! ~ - * ( ) ' will be de-supported for use in identifiers ?

    I received the following warning errors during a test import of an mbis EUL owned AP business area.
    Here is an example :The identifier for Join 'AP Vendors -> AP Checks' contains one or more of the characters ! ~ - * ( ) ' which will be de-supported for use in identifiers in future releases of Discoverer - see release notes for more details.
    The problem is that this is an EUL that was packaged with the ERP we purchased 3 years ago.
    I generated an issue with the vendor but would like to know more about it from this forum.
    How can this be fixed so that we don't have a problem with future releases of Discoverer.
    What are identifiers exactly? They do not appear to be primary keys, yet they are unique keys in some instances ( I did not check all of the tables.)
    Also, any information you can direct me to would be helpful.

    I get this error message all the time when I went from 4i to 9i. I believe the message is related to the actual display name of the join which cannot contain the dash (-) like you have in the AP Vendors -> AP Checks join.
    I think it might be the actual identifier if you look at the properties of the folders and items. The identifier I think is listed last and I think it contains the dash or underscores as part of the identifier name which Discoverer creates but you can most certainly change. I don't know the domino effect it will have if you change the identifier to comply with the error message. I haven't made the change yet either but imagine in the near future I would need to.

  • [svn:fx-trunk] 9349: * Added support for using getStyle() in Mxml data binding expressions.

    Revision: 9349
    Author:   [email protected]
    Date:     2009-08-17 11:32:37 -0700 (Mon, 17 Aug 2009)
    Log Message:
    Added support for using getStyle() in Mxml data binding expressions.
      In addition to the existing "function return watcher" data binding
      functionality, we register to listen for style related change events
      when we see a function marked with [Bindable(style="true")].
      UIComponent's and TextGraphicElement's styleChanged() will now
      dispatch events for "getStyle()" FunctionReturnWatchers to handle.
      When null or "styleName" is passed into styleChanged(), we dispatch
      an "allStylesChanged" event.
    QE notes: mxunit test to follow
    Doc notes:
    Bugs: SDK-20394
    Reviewer: Glenn, Pete F, Peter D
    Tests run: checkintests, mxunit databinding
    Is noteworthy for integration: only if you want to start using it.
    Code-level description of changes:
      modules/compiler/src/java/flex2/compiler/as3/binding/DataBindingExtension.java
        Modified generateWatcher() to do the AST equivalent of the
        WatcherSetupUtil.vm change.
      modules/compiler/src/java/flex2/compiler/as3/binding/FunctionReturnWatcher.java
        Removed unused isNew variable and added isStyleWatcher variable.
        Modified shouldWriteSelf() to return true if isStyleWatcher is true.
      modules/compiler/src/java/flex2/compiler/as3/binding/WatcherSetupUtil.vm
        Modified writeFunctionReturnWatcher macro to add a true arg to the
        FunctionReturnWatcher constructor call when isStyleWatcher() is
        true.
      modules/compiler/src/java/flex2/compiler/as3/binding/BindableFirstPassEvaluator.java
        Modified evaluate(Context, MetaDataNode) to skip reporting an
        error for no events when style is true.
      modules/compiler/src/java/flex2/compiler/as3/binding/DataBindingFirstPassEvaluator.java
        Replaced insideCallExpression boolean with callExpressionStack
        Stack.  The "!insideCallExpression" checks were replaced with
        callExpressionStack.isEmpty().
        Modified addBindables() to handle [Bindable(style="true")].
        Made argumentListStack and resetSet more strongly typed.
      frameworks/projects/framework/src/mx/core/UIComponent.as
        Modified styleChanged() to dispatch a "Changed" and "allStylesChanged" from the previous
        parent and add listeners to the new parent when isStyle is true.
        Modified eventHandler to notifyListeners() when isStyle is true.
      frameworks/projects/spark/src/spark/primitives/supportClasses/TextGraphicElement.as
        Similar changes to UIComponent.
    Ticket Links:
        http://bugs.adobe.com/jira/browse/SDK-20394
    Modified Paths:
        flex/sdk/trunk/frameworks/projects/framework/src/mx/binding/FunctionReturnWatcher.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as
        flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/TextGraphicE lement.as
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/as3/binding/BindableFirstPassEval uator.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/as3/binding/DataBindingExtension. java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/as3/binding/DataBindingFirstPassE valuator.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/as3/binding/FunctionReturnWatcher .java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/as3/binding/WatcherSetupUtil.vm

  • Support for using TNSNAMES with Oracle Thin Driver?

    Hi.
    In the official Oracle JDBC FAQ (http://www.oracle.com/technology/tech/java/sqlj_jdbc/htdocs/jdbc_faq.htm), they say that from the "10.2.0.1.0" release, the Thin driver hast support for using TNSNAMES entries. Thus, you can use URLs like this:
    jdbc:oracle:thin:@GL (thin driver, but connection info defined in tnsnames.ora)
    Does anyone know how could I use an URL like this? Do I have to install the Oracle client? or can I simply copy a tnsnames.ora file someplace on disk and specify its ubication through an environment variable or something like that?
    I haven't find util information in the Oracle site....any ideas are much appreciated.
    Thanks in advance.

    I just found some info here:
    Re: Thin Driver and Load Balancing
    Thank you very much.

  • How can I use JTA in my business logic and execute process with PAPI?

    HI All,
    How can I use JTA in my business logic and execute process with PAPI?
    When my business logic has exception, the process will rollback.
    or the process has some exceptions, my business logic also will rollback.
    I don't know how to do it.
    Does anyone know how to do it?

    Thank you for your reply, Daniel.
    But I think I did not express my mind clearly.
    There is a scene that I have 2 Application Server.
    My business code is deployed in one Server.
    The BPM is deployed in another Server.
    I want to execute Task use PAPI.(ProcessServiceSession.runActivity)
    In my business code, I will do something before execute Task.
    I need my business logic and Task in same transaction.
    To ensure them "all-or-nothing" .
    As you say, if The transactions are managed by Oracle BPM.
    then can I retrieve OBPM transcaction in my business code?

  • ADF11g: business logic in ADF BC or PLSQL?

    Hi All,
    For a new development in ADF 11g , where we should put our business logic: In ADF BC or in PLSQL?
    What if we write all the bussiness logic in plsql? Because if tomorrow ADF goes(which I know is not ging to happen soon), we can expose pl/sql as web services, and new UI technology can use it. And we will not struggle on migration, as we are struggling today from Forms to ADF.That's what my manager says......
    Though I know that we can write our business logic in ADF BC, and that too can be exposed as web service.
    But I still need more suggestion on this, which one is better to write bussiness logic.
    Thanks
    Vikram

    We have a team with mixed skill sets, so consequently some of our business logic is in ADF/BC and some is in PL/SQL.
    Having some in PL/SQL allows my project manager to divide and conquer the work to be done on an adf project easier than I can train the pl/sql guy to be an adf guy...supposedly.
    Also our project manager is also a techy with a primarily pl/sql orientation.
    I like Java better because it is new and fun for me, but that is not much of a reason.
    I have been to many presentation's of Paul Dorsey's BRIM product. Paul is absolutely certain that you and your manager are doing good when you put business logic in the database. Paul goes even further. I respect him and his arguments are sound.
    I still like Java better...mostly because I have done pl/sql for ages and am tired of it. :-)

  • Where is the best place to implement business logic in ADF application?

    I am using jdeveloper 11g R2 , JSF Facelet
    Where is the best place to implement business logic in ADF application?
    I mean something like service layer in Spring
    Appreciate your comments
    Regards
    Mohsen

    Depends on what your logic does and what data it deals with, but in general business logic is in the ADF BC layer.
    Some goes into entity objects - for things like attribute or row validation.
    Some goes into view objects - for things like calculation.
    Some goes into AM - for things like service methods for UI clients.

  • Developing Business Services with ADF BC

    Hello all,
    I was following the tutorial at http://www.oracle.com/technology/obe/obe1013jdev/10131/bslayer/bslayer.htm#t2s5, which is Developing Business Services with ADF Business Components
    AND i was wondering if i could add a custom validation that would: prevent the user from entering a Gender IF the credit limit is greater than 400? Is this possible? If so, could some point me in the right direction
    Cheers

    Hi,
    you have two options:
    1. add the validation on the ADF BC model using a method validator. This would compare the two attributes and throw an exception if the business rule is violated
    2. Use a ValueChange Listener on the credit limit field (in association with a autosubmit=true setting on the field) to enable the gender field through a Partial Page Refresh. To programmatically refresh a field using PPR, you create a binding of the component to refresh o a managed bean using its binding property. Then you call
    AdfFacesContext.getCurrentInstance().addPartialTarget(<component reference here>)
    Frank

  • 10.1.3.1 : Developing Business Services with ADF BC tuto issues

    Hi,
    I was doing a learning session at my office based on the 'Developing Business Services with ADF Business Components' tutorial : http://www.oracle.com/technology/obe/obe1013jdev/10131/bslayer/bslayer.htm. The topic Creating ADF Business Components > 9 shows how to create EOs, VOs, AM and the corresponding UML diagram.
    When using JDev 10.1.3.1 :
    * the diagram is not generated as expected,
    * the java domains are not created from DB domains.
    Under JDev 10.1.3.2 :
    * the java domains are created from DB domains,
    * the diagram has been generated on 1 out of 3 computers.
    Any clues on what's going on or any known bugs ?
    Thanks,
    Seb.

    Hi,
    Today in 10.1.3.1 the diagram generation just works. It seems the keepResident extension was causing troubles as the exception stack trace mentioned its name... I just removed it.
    But still, the domains are not generated as expected. I've made several tests even in a fresh installation of JDeveloper 10.1.3.1.
    Seb.

  • IPod Reset Utility is not supported for use with Windows Vista??????

    is there anyway to get pass this?
    i need to use the ipod resetutility to reset my shuffle
    but the only problem is that i have Vista and the program isnt
    supported for vista. can someone help me out here?

    well the only problem with that is that
    everyone i know use vista -.-

  • Support for using Digital Signatures

    I work in the legal department in a large company.  We are considering using Adobe's Digital Signature for our annual reports and financial documents.  However, I am unable to find how to get support on using such a feature.  Is using this feature pretty simple with Acrobat Pro v. 9?  I walked through the step-by-step features to initially set it up, but are there additional things I need to do to make sure the signature is completely secure? Do I need to purchase additional features or add-ons?  Is it possible to get someone to come to our company and provide a training on this feature?

    Using Acrobat Pro to digitally sign PDF documents is a very simple feature to use from an end user's perspective.  No extra plugins are required to have Acrobat generate a digital signature.  What you do need however is a digital certificate for each user, the certificate is used to create a user's digital signature.  Acrobat does not provide the ability to manage certificates, for this you require a Public Key Infrastructure (PKI) from a company such as VeriSign or Entrust.  Here are Adobe's security partners:
    http://www.adobe.com/security/partners/index.html
    Are you looking to have end users sign documents?  Based on the types of documents you described, you may want to look into "Certifying" documents using Adobe's Certified Document Services.  You can get some more information here:
    http://www.adobe.com/security/partners_cds.html
    Regards
    Steve

  • Future support for C++0x in Sun Studio

    I've recently been having to defend my choice of using the sun studio compiler against several gcc advocates here in the office. The one reasonable issue they keep bringing up is when the upcoming C++0x (more like C++1x or even C++2x at the pace the standards committee is operating at) features will be available in complete fashion in sun studio. They say, and I have to begrudgingly agree, that judging by the amount of time it took studio to support boost (template templates, certain partial template specializations, etc), there could be a long delay between the release of gcc's C++0x support and that of studio's.
    I understand that many of the new features of C++0x, even from initial glance, appear to be quite complicated, especially lambda functors and their associated []/auto return types, variadac template parameters and class concept checking. In addition, I understand gcc has an unfair advantage so to speak since it is being used as the test bed for many of the committee proposal submitter's proof-of-concept implementations (the variadic template parameter feasibility implementation written for gcc comes to mind).
    Could a developer please assuage my fears and inform me that the studio team has a roadmap/timeframe in place to release a studio that fully supports the new language-level features in a reasonably competitive time frame? It apparently will be the responsibility of the STLPort team to essentially copy many of boost's libraries (shared_ptrs, random numbers, type_traits) and rename them and move them to the std namespace and also supply the new unordered<> containers, to name a few.
    I for one can't wait until boost::mpl, boost::fusion, boost::format and others are all reduced from 10's of 1000's of lines of pre-processor generated crufty template definitions to a single variadic template declaration. Also, I won't feel quite so willfully derelict to efficient code every time i bust out an std::for_each and drop in a boost::bind generated functor and instead can use a lambda function with the various efficiency gains ranging from direct referencing to the stack variables passed in as the closure arguments to the ability for the compiler to actually inline the body of the lambda function where appropriate.
    I'm in no way trying to accuse you compiler developers of being slow to implement features, but just would like to be assured that there is nothing to worry about and there is a plan and current work being done on the required features. I know it's still a couple of years off, but I personally can't wait to replace hundreds of lines of boost::bind() calls with their more efficent lambda equivalent, and in addition clean up interfaces that could have used boost::bind if it weren't for the unacceptable overhead introduced often executed blocks of code.
    Thanks,
    Chris Knight - Faithful sun studio user through at least 2 major name changes and since at lest when it was called Forte 4.2 and RougeWave and classicIO libraries roamed the earth in vast quantities.
    P.S. I truly fear that the other 3 major compilers (gnu, intel, ms) will be out the door with C++0x in around the same time and boost will then willingly drop support for the sun compiler if it doesn't support the required language features at that time as they had no problem not supporting studio at all until Studio 12 so I'm sure as soon as the 3 compilers they run nightly tests with support it, they'll be just as eager to
    make use of the new features as I am.
    This leaves someone who has based their entire system on Solaris + SunStudio + Boost in a potentially undesirable situation. Solaris is far too stable and Linux to ever-changing to ever consider Linux as a platform for critical systems yet the idea of running g++ on Solaris w/ gcc's propensity to change their ABI on a weekly basis gives me immediate heartburn.
    Thanks again.

    You raise some very good points, and believe me, we are even more aware of them than you are!
    Short answer: We are planning to bring out a compiler conforming to C++0X in a timely fashion.
    Longer answer:
    Right now, we are working on providing binary compatibility with g++ as an option in the next compiler release. When we are done, you will be able to use g++ headers with Sun C++, and link the code with binaries created by g++. The first implementation will be on Linux. (Which versions of g++ and which versions of Linux? Stay tuned.)
    Implementing all the new features of C++0X will require a re-design of parts of the compiler front end. The current compiler organization does not support "concepts", for example. (We've been looking for an excuse to re-design the front end for a while, and C++0x is not just an excuse -- it's a requirement.) With the g++ ABI work done, we'll ready to start the re-design, and begin to implement C++0x features.
    We won't release an official (stable, fully-supported) product with C++0X features until the standard is final. Until then, any feature could change in unpredictable ways. We got caught by that problem with C++ 4.2 and C++98 -- we implemented what we thought were final features that changed dramatically after we released the compiler. We won't do that again. Compiler stability is one of our most important considerations.
    Beginning some time next year, we expect to have Express releases with some C++0X features. Express releases are our way of providing compilers with experimental features that might not be stable yet. It gives our customers a chance to try them out and provide feedback before they become part of a stable release. That is to say, a feature flagged as experimental is subject to change, and compatibility with other Express or official releases is not guaranteed. We can therefore fix bugs and catch up with late changes in the Standard as necessary.
    We have not yet done all the planning for our C++0X compiler, so I can't give you any estimates about specific feature availability and time frames. When we are farther along, we'll post the road map on a public site, and I'll announce it here.
    Steve Clamage
    Sun C++ Team

  • Future support for APPV Management Servers

    I have heard rumors that APPV is moving away from the separate Management servers and future releases will only support SCCM integration.  Is this a true roadmap ?

    I don't have any insider information BUT I have not heard this from anybody. I'd lean on the side of not believing this. It's still an ok solution for small Enterprise. 
    Considering the announcement yesterday, what the future holds for App-V should be very interesting.
    PLEASE MARK ANY ANSWERS TO HELP OTHERS Blog:
    rorymon.com Twitter: @Rorymon

  • Need support for using my bb classic

    I am not a technical person and need support for my bb classic I sign up for the support with rogers and they have no clue on the bb Are there any experts out there that can provide support I am wiling to pay In the ideal world I woud like someone in the toronto area

    Have you looked through the built-in Help app? It's pretty comprehensive. As an experienced user, I often find things in there I don't know.
    1. Please thank those who help you by clicking the "Like" button at the bottom of the post that helped you.
    2. If your issue has been solved, please resolve it by marking the post "Solution?" which solved it for you!

Maybe you are looking for