Design Patterns/Best Practices etc...

fellow WLI gurus,
I am looking for design patterns/best practices especially in EAI / WLI.
Books ? Links ?
With patterns/best practices I mean f.i.
* When to use asynchronous/synchronous application view calls
* where to do validation (if your connecting 2 EIS, both EIS, only in WLI,
* what if an EIS is unavailable? How to handle this in your workflow?
* performance issues
Anyone want to share his/her thoughts on this ?
Kris

          Hi.
          I recently bought WROX Press book Professional J2EE EAI, which discusses Enterprise
          Integration. Maybe not on a Design Pattern-level (if there is one), but it gave
          me a good overview and helped me make some desig decisions. I´m not sure if its
          technical enough for those used to such decisions, but it proved useful to me.
          http://www.wrox.com/ACON11.asp?WROXEMPTOKEN=87620ZUwNF3Eaw3YLdhXRpuVzK&ISBN=186100544X
          HTH
          Oskar
          

Similar Messages

  • Process modelling : Design patterns & Best Practices

    Hi
    Could some one please suggest/share any technical information or documents tha's related to 'Process modelling - Design Patterns & Best Practices'
    Thanks in Advance
    Santosh K.
    Edited by: Santosh539 on Jul 29, 2010 4:07 PM

    Hi Santosh,
    There is no specific site with all the information you asked for.
    But I think these links would be helpful...
    on Work Flow Patterns: http://www.workflowpatterns.com/
    on BPM Service Pattern: http://enterprisearchitecture.nih.gov/ArchLib/AT/TA/WorkflowServicePattern.htm
    HTH
    Sharma

  • Design Pattern / Best Practice Question

    Hi,
    I have been using Flex for a while now, but there is a
    scenario which I still have not found a solution I'm entirely happy
    with. I'm wondering if anyone else out there might have suggestions
    on a design pattern or best practice.
    Suppose I have a view which depends on model data which
    resides in some back end systems. That model data may or may not
    have been loaded (e.g. via a web service or remote object call) at
    the time the view is displayed.
    I don't know if the user will ever visit this part of the
    application so I would prefer to defer retrieval of the data until
    the user actually navigates to this view. Or I want to retrieve the
    data each time the view is displayed because the data is dynamic
    and could change between one presentation of the view and the next.
    Because the data comes from several systems, I cannot simply
    make one service call and display the view when it completes and
    all the data is available. I need to call several services which
    could complete in any order but I only want to display my view
    after I know all of them have completed and all of the model data
    is available. Otherwise, I can present the user an incomplete view
    (e.g. some combo boxes are empty until the corresponding service
    call to get the data completes).
    The solution I like best so far is to dispatch a single event
    (I am using Cairngorm) handled by a single command which acts as
    the caller and responder for all of the services. This command then
    remembers which responses it has received and dispatches another
    event to navigate to the view once all the results have returned.
    If the services being called are used in different
    combinations on different screens, this results in proliferation of
    events and commands. An event and command for each service and
    additional events and commands to bundle the services and the
    handling of their responses in the right combinations for each of
    the views.
    Another approach is to have some helper class listen for all
    of the model changes and only display the view when the model
    enters some state that is acceptable. It is sometimes difficult to
    determine just by looking at the model whether it is in the right
    state (e.g. how can I tell that a collection is the new collection
    that should just have been requested versus an old one lingering
    from a previous call). The logic required can get kind of
    convoluted and brittle.
    Basically, all of the solutions I've come up with so far seem
    less than ideal and a little hackish. I keep thinking there is some
    elegant solution out there that I am just missing ... but so far,
    no luck finding it. Thoughts?
    Thanks.
    Bill

    i think a service class is right - to coordinate your calls.
    i would have 1 event per call (so you could listen to individual
    responses if you wanted to).
    then i would use a flag. if you want to check for staleness,
    you would probably want two objects to map your service flag to
    lastRequested and lastCompleted. when you check, check if it's
    completed, and if it's not stale and that your lastRequested is
    less than lastCompleted (meaning that you're not currently waiting,
    i.e. you've returned since making a request). then make the request
    and update your lastRequested.
    here's a snippet of what i mean.
    ./paul
    public static const SVC1_LOADED:int = 1;
    public static const SVC2_LOADED:int = 2;
    public static const SVC3_LOADED:int = 4;
    public static const SVCALL_LOADED:int = 7;
    private var completedFlag:int = 0;
    then each call would have it's own callback.
    private function onSvc1Complete( evt:Event):void {
    completedFlag |= SVC1_LOADED;
    lastCompleted[ SVC1_LOADED ] = getTimer();
    dispatchEvent( new Event("svc1complete") );
    checkDone();
    private function checkDone():void{
    if( completedFlag == SVCALL_LOADED )
    dispatchEvent(new Event( "allLoaded" ));

  • Translation patterns - best practice

    We have 300 DIDs from our telco.    Currently, only 150 are in use.   If a call comes thru for a non-asigned number, I would like to set-up a call handler that states the number is a non-working number that belongs to the company and then give options for contacting the correct person.      Also, when a person leaves the company I am currenly forawarding the number to the operator but I would also like to make these numbers part of the call handler.
    My question is this - what is the best way to set this up?    I currently am removing the number from the directory numbers and setting up a translation pattern to point the number to an end point such as the operator.    Is this the best thing to do?    I would like to know what is considered to be "best practice" in keeping the phone system as clean as possible.
    I appreciate any input.
    Pat

    I would setup a catch-all scenario with a translation to a CTIRP that would forward to VM and hit the Call handler you desire.  For example if you had the DIDs 212-555-1000 thru 212-555-1299 i would first setup a non-DID CTI RP that matches your call handler dtmf (e.g. 7999 if you use 4 digit extensions).  the CTI RP for 7999 would forward to VM and then the Call Handler with DTMF of 7999 would play your message that number is not in use.
    Then setup a translation for 212-555-1[012]xx that translates to 7999.
    This wildcard match would not route the call if there was a more specific match present within the Calling Search Space for the Gateway.  So if extension 1050 was present it would route to that phone, but if extension 1051 was a terminated or unused number it would not be present and therefore the call would hit the translation and be routed to the "number not in use" call handler.
    I think this is what you are after, a way to minimize the translations and not have to keep track of individual numbers.  Of course modify the length of the translations if you are not routing based on 10 digits.

  • XDK -Performance best practices etc

    All ,
    Am looking for some best practices with specific emphasis on performance
    for the Oracle XDK ..
    can any one share any such doc or point me to white papers etc ..
    Thanks

    The following article discusses how to choose the most performant parsing strategy based on your application requirements.
    Parsing XML Efficiently
    http://www.oracle.com/technology/oramag/oracle/03-sep/o53devxml.html
    -Blaise

  • Network Design Review - Best Practices

    Looking to start a discussion around best practices for inbound network design at the core. 
    The planned devices are as followings:
    Edge Routing / DMVPN - Cisco 2951
    Cisco UCM / IP Phone VPN Concentrator - Cisco ASA 5512-X
    Cisco AnyConnect SSL Client Concentrator - Cisco ASA 5515-X
    Cisco FirePower / IPS Device - Cisco ASA 5515-X
    The plan is as follows:
    All traffic enters through the 2951. 
    DMVPN traffic will go directly to the FirePower Device and then to the core network.
    IP Phones will pass-through 2951, enter 5512-X for VPN, go to FirePower and then to the core network.
    AnyConnect Clients will pass-through 2951, enter 5515-X for VPN, go to FirePower and then to the core network. 
    Wondering if anyone else has completed a similar setup and any issues you may have fun into. 
    Basic diagram attached. 
    Thanks!

    There really isn't a true two factor authentication you can just do with radius unless its ISE and your doing EAP Chaining.  One way that is a workaround and works with ACS or ISE is to use "Was machine authenticated".  This again only works for Domain Computers.  How Microsoft works:) is you have a setting for user or computer... this does not mean user AND computer.  So when a windows machine boots up, it will sen its system name first and then the user credentials.  System name or machine authentication only happens once and that is during the boot up.  User happens every time there is a full authentication that has to happen.
    Check out these threads and it explains it pretty well.
    https://supportforums.cisco.com/message/3525085#3525085
    https://supportforums.cisco.com/thread/2166573
    Thanks,
    Scott
    Help out other by using the rating system and marking answered questions as "Answered"

  • Design Patterns, best approach for this app

    Hi all,
    i am starting with design patterns, and i would like to hear your opinion on what would be the best approach for this app. 
    this is basically an app for data monitoring, analysis and logging (voltage, temperature & vibration)
    i am using 3 devices for N channels (NI 9211A, NI 9215A, NI PXI 4472) all running at different rates. asynchronous.
    and signals are being processed and monitored for logging at a rate specified by the user and in realtime also. 
    individual devices can be initialized or stopped at any time
    basically i'm using 5 loops.
    *1.- GUI: Stop App, Reload Plot Names  (Event handling)
    *2.- Chart & Log:  Monitors Data and Start/Stop log data at a specified time in the GUI (State Machine)
    *3.- Temperature DAQ monitoring @ 3 S/s  (State Machine)   NI 9211A
    *4.- Voltage DAQ monitoring and scaling @ 1K kS/s (State Machine) NI 9215A
    *5.- Vibration DAQ monitoring and Analysis @ 25.6 kS/s (State Machine) NI PXI 4472
    i have attached the files for review, thanks in advance for taking the time.
    Attachments:
    V-T-G Monitor_Logger.llb ‏355 KB

    mundo wrote:
    thanks Will for your response,
    so, basically i could apply a producer/consummer architecture for just the Vibration analysis loop? or all data being collected by the Monitor/Logger loop?
    is it ok having individual loops for every DAQ device as is shown?
    thanks.
    You could use the producer/consumer architecture to split the areas where you are doing both the data collection and teh analysis in the same state machine. If one of these processes is not time critical or the data rate is slow enough you could leave it in a single state machine. I admit that I didn't look through your code but based purely on the descriptions above I would imagine that you could change the three collection state machines to use a producer/consumer architecture. I would leave your UI processing in its own loop as well as the logging process. If this logging is time critical you may want to split that as well.
    Mark Yedinak
    "Does anyone know where the love of God goes when the waves turn the minutes to hours?"
    Wreck of the Edmund Fitzgerald - Gordon Lightfoot

  • Subclass design problems/best practices

    Hello gurus -
    I have a question problem regarding the domain objects I'm sticking in my cache. I have a Product object - and would like to create a few subclasses - say BookProduct and MovieProduct (along with the standard Product objects). These really need to be contained in the same cache. The issue/concern here is that both subclasses have attributes that I'd like to index AND query on.
    When I try to create an index on the subclasses attributes when there are just "standard" products - I get the following error (which only exists on one of the subclasses):
    2010-10-20 11:08:43.280/227.055 Oracle Coherence GE 3.5.2/463 <Error> (thread=DistributedCache:MyCache, member=2): Exception occured during index rebuild: java.lang.RuntimeException: Missing or inaccessible method: com.test.domain.product.Product.getAuthors()
    So I'm not sure the indexing is working or stopping once it hits this exception.
    Furthermore, I get a similar error when attempting to Filter based on that attribute. So if I want to add the following filter:
    Filter filter = new ContainsAnyFilter( "getAuthors", authors );
    I will receive the following exception:
    Caused by: Portable(java.lang.RuntimeException): Missing or inaccessible method: com.test.domain.product.Product.getAuthors()
    What is considered the best practices for this assuming these really should be part of the same names cache? Should I attempt to subclass the extractors to "inspect" the Object for its class type during indexing or applying filters? Or should I just add all the attribute in the BookProduct and MovieProduct into the parent object and just forget about subclassing? That seems to have a pretty high "yuck" factor to me. I'm assuming people have run into this issue before and am looking for some best practices or perhaps something that deals with this that I'm missing. We're currently using Coherence 3.5.2. Not sure if it matters, but we are using the POF format for serialization.
    Thanks!
    Chris

    Hi Chris,
    I had a similar problem. The way I solved it was to use a subclass of the ChainedExtractor that catches all RuntimeException occurring during the extraction like the following:
    * {@link ChainedExtractor} that catches any exceptions during extraction and returns null instead.
    * Use this for cases where you're not certain that an object contains that necessary methods to be extracted.
    * F.e. an object in the cache does not contain the getSomeProperty() method. However other objects do.
    * When these are put together in the same cache we might want to use a {@link ChainedExtractor} like the following:
    * new ChainedExtractor("getSomeProperty.getSomeNestedProperty"). However this will result in a RuntimeException for those entries that
    * don't contain the object with the someProperty. Using the this class instead won't result in the exception.
    public class SafeChainedExtractor extends ChainedExtractor
         public SafeChainedExtractor()
              super();
         public SafeChainedExtractor( String sMethod )
              super( sMethod );
         @Override
         public Object extract( Object entry )
              try
                   return super.extract( entry );
              catch(RuntimeException e)
                   return null;
         @Override
         public Object extractFromEntry( Entry entry )
              try
                   return super.extractFromEntry( entry );
              catch(RuntimeException e)
                   return null;
    }For all indexes and filters we then use extractors that subclassed the SafeChainedExtractor like the following:
    public class NestedPropertyExtractor extends SafeChainedExtractor
         private static final long serialVersionUID = 1L;
         public NestedPropertyExtractor()
              super("getSomeProperty.getSomeNestedProperty");
    //adding an index:
    myCache.addIndex( new NestedPropertyExtractor(), false, null );
    //using a filter:
    myCache.keySet(new EqualsFilter(new NestedPropertyExtractor(), "myNestedProperty"));This way, the extractor will just return null when a property doesn't exist on the target class.
    Regards
    Jan

  • Populating users and groups - design considerations/best practice

    We are currently running a 4.5 Portal in production. We are doing requirements/design for the 5.0 upgrade.
    We currently have a stored procedure that assigns users to the appropriate groups based on the domain info and role info from an ERP database after they are imported and synched up by the authentication source.
    We need to migrate this functionality to the 5.0 portal. We are debating whether to provide this functionality by doing this process via a custom Profile Web service. It was recommended during ADC and other presentation that we should stay away from using the database security/membership tables in the database directy and use the EDK/PRC instead.
    Please advise on the best way to approach(With details) this issue. We need to finalize the best approach to take asap.
    Thanks.
    Vanita

    So the best way to do this is to write a custom Authentication Web Service.  Database customizations can do much more damage and the EDK/PRC/API are designed to prevent inconsistencies and problems.
    Along those lines they also make it really easy to rationalize data from multiple backend systems into an orgainzation you'd like for your portal.  For example you could write a Custom Authentication Source that would connect to your NT Domain and get all the users and groups, then connect to your ERP system and do the same work your stored procedure would do.  It can then present this information to the portal in the way that the portal expects and let the portal maintain its own database and information store.
    Another solution is to write an External Operation that encapsulates the logic in your stored procedure but uses the PRC/Server API to manipulate users and group memberships.  I suggest you use the PRC interface since the Server API may change in subtle ways from release to release and is not as well documented.
    Either of these solutions would be easier in the long term to maintain than a database stored procedure.
    Hope this helps,
    -Akash

  • OID DIT tree design. Best practice.

    Can I extend the orcluser object class to include all my application related attributes and define a new object class appusr to define all the user attributes. Similarly I have extended the OrclGroup to appgroup class. And I have configured "User Object Classes" in the User Entry management in OIDDAS to look into my new class and attributes. I didn't modify the defalut "User Search Context" and "Group Search Context". Is this the correct approach if we need to extend application specific user and group information. If so, will this arrangement work well for ALL the associated 9iAS components like Portal, SSO etc...
    Apart from the userpassword reset issue for upcoming releases, is there any portability/compatability issues with version upgrades?

    Hi,
    don't have the answer to your question but you might find some guidlines in the 'Oracle9i Directory Service Integration and Deployment Guide' and the chapter about 'Deploying Oracle Products with Oracle Internet Directory'
    http://download-west.oracle.com/docs/cd/B10501_01/network.920/a96579/products.htm#1008968
    --Olaf                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Best practices Struts for tech. proj. leads

    baseBeans engineering won best training by readers of JDJ and published the first book on Struts called FastTrack to Struts.
    Upcoming class is live in NYC, on 5/2 from 7:30 AM to 1:00PM. We will cover db driven web site development, process, validation, tiles, multi row, J2EE security, DAO, development process, SQL tuning, etc.
    We will teach a project tech lead methods that will increase the productivity of his team and review best practices, so that they can benchmark their environment.
    Sign up now for $150, the price will be $450 soon as we get closer to the date (price goes up every few days). The web site to sign up on is baseBeans.net* .
    You will receive a lab/content CD when you sign up.
    Contact us for more details.
    ·     We preach and teach simple.
    ·     We use a very fast DAO DB Layer – with DAO side data cache
    ·     We use JSTL
    ·     We use a list backed Bean w/ DAO helper design for access to any native source and to switch out DAO.
    ·     We use J2EE security, container managed declarative authorization and authentication. (no code, works on any app. server).
    ·     Struts based Content Management System. A Struts menu entry like this:
    <Item name="About_Contacts"      title="About/Contacts"
    toolTip="About Us and Contact Info" page="/do/cmsPg?content=ABOUT" />
    passes to the action the parm of “about” which the DAO populates.
    You can peak at the source code at sourceforge.net/projects/basicportal or go to our site baseBeans.net. (16,000 downloads since Oct. 2002)
    Note that the baseBeans.net is using the Content Management System (SQL based) that we train on. (our own dog food)
    Note: We always offer money back on our public classes.
    Vic Cekvenich
    Project Recovery Specialist
    [email protected]
    800-314-3295
    <a href =”baseBeans.net”>Struts Training</a>
    ps:
    to keep on training, details, best practice, etc. sign up to this mail list:
    http://www.basebeans.net:8080/mailman/listinfo/mvc-programmers
    (1,000 + members)

    Hi,
    We use only Stateful release modes for application modules, defined in the action mappings in struts-config.xml exactly the same way as in your example. Stateful mode releases the module instance back to the pool and it can be reused by other sessions as well. However, all the code that uses the app modules and view objects, etc, must be written with the assumption that the module or the view object the code is operating on can be a different instance from the one in the previous request in the same session.
    The concept of BC4J is that this recycling of modules should be transparent for the users of the app modules, but this is not exactly the case. Some things are not passivated in the am's snapshots and are not activated in case of recycling, for example, custom view object properties or entries in the userData map (or at least were not in 9.0.5, I doubt this is changed in 10.1.2.) These are things that you have to manually passivate and activate if you use them to store some information that is relevant to a particular user session.
    All chances are that these strange things that you experience only occur in sessions that use recycled application modules, that is, there was passivation and subsequent activation of vo and am states. I have found it useful as a minimum to test the application with only 1 application module in the pool and at least 2 user sessions, constantly recycling this one am instance. Many of the problems that will surface in a real application usage only when there is a high load can be experienced in this artificial setup.

  • Best Practice / Solutions for using 11g DB+x86 or Small Computer to build iaas/paas?

    My customer wants to build their own iaas/paas using Oracle 11g DB, plus x86 or other small computer, running Linux or Solaris or Unix OS.
    Oracle Exadata is not feasible for them to use currently.
    Customer wants to know whether there are other customers have implemented their cloud solution based on these or not?
    If yes, would like to share the experience, presentation slides, best practices etc.
    Is there an Oracle email DL for asking this kind of question?
    Thanks,
    Boris

    Like Rick, I'm not aware of a specific "cloud implementors forum". Internally, Oracle has lots of material on implementing cloud, using any platform at all, although obviously we feel Engineered Systems are the most cost-effective solution for many customers. Are you interested in IaaS i.e. virtualised hardware, or PaaS i.e. DBaaS? They should not be confused, neither is required for the other, in fact, using IaaS to implement "DBaaS", as the OpenStack trove API attempts to do, is probably the most counter-productive way to go about it. Define the business-visible services you will be offering, and then design the most efficient means of supporting them. That way you gain from economies of scale, and set up appropriate management systems that address issues like patching, security, database virtualisation and so on.

  • Web services - Best practices

    Hello all,
    I have been working my way through 'Core J2EE Patterns: Best Practices and Design Strategies' in preparation for a web services based project I am responsible for delivering.
    Theres just one thing I cannot get my head round. The book identifies a web service broker responsible for dealing with WS requests. However it states its at the integration level. If I have a WS enabled client wanting to communicate with my services, wouldn't the web service broker have to be the first point of contact, almost acting as a Controller?
    Much of this is new to me, so perhaps I am barking up the wrong tree. But any help would be greatly appreaciated
    Kind regards
    Kevin

    Michal
    Can you send me your article or anything you have on web services? I am trying to connect to a .NET server and I'm getting the following error:
    System.Web.Services.Protocols.SoapHeaderException: WSE012: The input was not a valid SOAP message because the following information is missing: action. at Microsoft.Web.Services3.Utilities.AspNetHelper.SetDefaultAddressingProperties(SoapContext context, HttpContext httpContext) at Microsoft.Web.Services3.WseProtocol.CreateRequestSoapContext(SoapEnvelope requestEnvelope) at Microsoft.Web.Services3.WseProtocol.FilterRequest(SoapEnvelope requestEnvelope) at Microsoft.Web.Services3.WseProtocol.RouteRequest(SoapServerMessage message) at System.Web.Services.Protocols.SoapServerProtocol.Initialize() at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response) at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)
    I know it has something to do with Axis but I just don't know enough. Is there a way around it? Do you know if WSE 3.0 requires Axis2?
    Thanks for any info you can send my way.
    Steve

  • What are the best practices in design patterns?

    What design patterns are likely popular?

    If you go to your local bookstore or online book store you will find at least 20 books that describe this.
    Some how I doubt you are going to get 20 books worth of an answer.

  • Wireless authentication network design questions... best practices... etc...

    Working on a wireless deployment for a client... wanted to get updated on what the latest best practices are for enterprise wireless.
    Right now, I've got the corporate SSID integeatred with AD authentication on the back end via RADIUS.
    Would like to implement certificates in addition to the user based authentcation so we have some level of dual factor authentcation.
    If a machine is lost, I don't want a certificate to allow an unauthorized user access to a wireless network.  I also don't want poorly managed AD credentials (written on a sticky note, for example) opening up the network to an unathorized user either... is it possible to do an AND condition, so that both are required to get access to a wireless network?

    There really isn't a true two factor authentication you can just do with radius unless its ISE and your doing EAP Chaining.  One way that is a workaround and works with ACS or ISE is to use "Was machine authenticated".  This again only works for Domain Computers.  How Microsoft works:) is you have a setting for user or computer... this does not mean user AND computer.  So when a windows machine boots up, it will sen its system name first and then the user credentials.  System name or machine authentication only happens once and that is during the boot up.  User happens every time there is a full authentication that has to happen.
    Check out these threads and it explains it pretty well.
    https://supportforums.cisco.com/message/3525085#3525085
    https://supportforums.cisco.com/thread/2166573
    Thanks,
    Scott
    Help out other by using the rating system and marking answered questions as "Answered"

Maybe you are looking for