Parsing across multiple namespaces... best practice?

Howdy all, here's my situation:
I am attempting to create a simple interface to a particular type of webdav server which has some unusual XML data coming back, and need some advice on the best way to parse this XML.
I have a generic "query" object which consists of a set of "Fields", a "Scope" and a set of "Constraints". This query is ultimately formed as an XML request sent to the WebDAV server. The response is also a generic "ResultSet" response, which consists of "Rows". Each Row consists of "Fields" (the same type as in the query). A Field is basically a key/value pair (all Strings), and a namespace which describes the location of the field within the WebDAV server. (obviously modelled on a JDBC-style interaction)
I need to build a generic parser which can create a ResultSet from a raw XML document.
For Example:
Given a "query" with the following fields:
FIELD 1
namespace: urn:schemas:httpmail
name:fromemail
FIELD 2
namespace: DAV
name: id
The query will basically say (pseudo SQL)
"select "urn:schemas:httpmail:fromemail", "DAV:id" from <scope> where <constraints>"
This will return an XML document something like this:
<a:multistatus
      xmlns:a="DAV:"
      xmlns:b="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/"
      xmlns:c="xml:"
      xmlns:d="urn:schemas:httpmail:"
      xmlns:e="urn:schemas:mailheader:">
   <a:response>
      <a:href>
            http://blah.blah.com/someurl
      </a:href>
      <a:propstat>
         <a:status>
               HTTP/1.1 200 OK
         </a:status>
         <a:prop>
            <d:fromemail>
                 [email protected]
            </d:fromemail>
            <a:id>
                  AQsAAAAARgAgCwAAAABGeAIAAAAA
            </a:id>
         </a:prop>
      </a:propstat>
   </a:response>
   <a:response>
   </a:response>
</a:multistatus>
So.. I then need to create a ResultSet object, which looks like this:
ResultSet<Object>
|---Rows<Collection>
    |---Row<Object>
        |---Field<Object>
            |---name: fromemail
            |---namespace: urn:schemas:httpmail
            |---value: [email protected]
        |---Field<Object>
            |---name: id
            |---namespace: DAV
            |---value: AQsAAAAARgAgCwAAAABGeAIAAAAA
    |---Row<Object>
            ....As you can see, I need BOTH the value, and the original data relating to the namespace and field name in the java object returned.
Problems I am having:
1. Parsing multiple namespaces. The path to multistatus/response/prop/fromemail (for example) spans two namespaces, hence can't use Commons Digester
2. Including XML element names as values in the returned object. I need/want to be able to store the XML element name (eg "fromemail") as a value in the java object returned.
I'm looking for thoughts as to the best way to deal with this... XPath?, DOM/SAX? etc
Any help you can provide.
Cheers

Howdy all, here's my situation:
I am attempting to create a simple interface to a particular type of webdav server which has some unusual XML data coming back, and need some advice on the best way to parse this XML.
I have a generic "query" object which consists of a set of "Fields", a "Scope" and a set of "Constraints". This query is ultimately formed as an XML request sent to the WebDAV server. The response is also a generic "ResultSet" response, which consists of "Rows". Each Row consists of "Fields" (the same type as in the query). A Field is basically a key/value pair (all Strings), and a namespace which describes the location of the field within the WebDAV server. (obviously modelled on a JDBC-style interaction)
I need to build a generic parser which can create a ResultSet from a raw XML document.
For Example:
Given a "query" with the following fields:
FIELD 1
namespace: urn:schemas:httpmail
name:fromemail
FIELD 2
namespace: DAV
name: id
The query will basically say (pseudo SQL)
"select "urn:schemas:httpmail:fromemail", "DAV:id" from <scope> where <constraints>"
This will return an XML document something like this:
<a:multistatus
      xmlns:a="DAV:"
      xmlns:b="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/"
      xmlns:c="xml:"
      xmlns:d="urn:schemas:httpmail:"
      xmlns:e="urn:schemas:mailheader:">
   <a:response>
      <a:href>
            http://blah.blah.com/someurl
      </a:href>
      <a:propstat>
         <a:status>
               HTTP/1.1 200 OK
         </a:status>
         <a:prop>
            <d:fromemail>
                 [email protected]
            </d:fromemail>
            <a:id>
                  AQsAAAAARgAgCwAAAABGeAIAAAAA
            </a:id>
         </a:prop>
      </a:propstat>
   </a:response>
   <a:response>
   </a:response>
</a:multistatus>
So.. I then need to create a ResultSet object, which looks like this:
ResultSet<Object>
|---Rows<Collection>
    |---Row<Object>
        |---Field<Object>
            |---name: fromemail
            |---namespace: urn:schemas:httpmail
            |---value: [email protected]
        |---Field<Object>
            |---name: id
            |---namespace: DAV
            |---value: AQsAAAAARgAgCwAAAABGeAIAAAAA
    |---Row<Object>
            ....As you can see, I need BOTH the value, and the original data relating to the namespace and field name in the java object returned.
Problems I am having:
1. Parsing multiple namespaces. The path to multistatus/response/prop/fromemail (for example) spans two namespaces, hence can't use Commons Digester
2. Including XML element names as values in the returned object. I need/want to be able to store the XML element name (eg "fromemail") as a value in the java object returned.
I'm looking for thoughts as to the best way to deal with this... XPath?, DOM/SAX? etc
Any help you can provide.
Cheers

Similar Messages

  • Embedding same images across multiple components, best practices?

    Hi Guys,
    Once again a great forum.
    I have a fairly large dashboard application, built from many
    components, from an obvious maintenance point of view this is
    preferred.
    To keep the look and feel the same across each component I
    reuse a lot of the icons, this icons have 3 states, disabled,
    normal and hot(rollover)
    The mouse roll over and roll out are the same for each set of
    icons. At the moment I have each component embed each icon and
    repeat the functions.
    This is not the optimum way to do this so I'm looking on best
    practices. Should I build a separate action script package with all
    the embedded images and roll over/out functions. Then import that
    in to each component. But then I will embedded ALL the images in
    each component. Should I embed all the images in the main container
    app, then when flex sees the same image in a compoent will it not
    embedded again or will it embed the images again..
    In the example below 4 of the components have the same
    refresh icon and roll/over states. So this code is repeated (bad
    practice) in all 4. Moving to separate action-script package will
    make maintenance easier, but as stated above will just one copy get
    embedded for the entire app, or will 4 copies get embedded ?
    [Embed(source="images/refresh_24.png")]
    [Bindable]
    private var refreshIcon:Class;
    [Embed(source="images/refresh_24_hot.png")]
    [Bindable]
    private var refreshIconHot:Class;
    [Embed(source="images/refresh_24_dis.png")]
    [Bindable]
    private var refreshIconDis:Class;
    private function rollOverRefresh(event:Event):void {
    if (event.target.source != refreshIconDis )
    {event.target.source = refreshIconHot;}
    private function rollOutRefresh(event:Event):void {
    If (event.target.source != refreshIconDis )
    {event.target.source = refreshIcon;}
    }

    Flex is able to collate those Embeds so they are only
    included once IIRC.
    While it may seem like bad practice to include it in each
    component, it really isn't, from a code reusability standpoint. But
    you could probably continue on that path and create a custom
    component <mycontrols:RefreshButton> that has the the embeds
    in one place for you.
    You could probably also do something similar with style very
    easily:
    .MyButton {
    overSkin="@Embed(source='../assets/orb_over_skin.gif')"
    upSkin="@Embed(source='../assets/orb_up_skin.gif')"
    downSkin="@Embed(source='../assets/orb_down_skin.gif')"/>
    Then apply that style to your button.
    You could also put the button into a single SWF file in Flash
    and include it that way to reduce the number of embeds. I never
    include PNG, JPG, GIF, etc files directly, always SWF as you get
    better compression that way IMO. Plus I just find it gives me
    greater flexibility...if I want to animate my skins in the future
    (button that gleams for instance), I already have SWF's in my code
    so no need to change anything out but the SWF.

  • SOA 11g  Composite Deployment across multiple Instances: Best Practice

    Hi,
    We have a requirement where we need to deploy the composite acrocss mutilple instances(DEV,TEST,Production) without JDEV.
    We are using SOA11.1.3.3(cluster) and linux OS.
    Pls suggest me what is the best practice to deploy the SOA composite.
    Thanks,
    AB

    Why there are different ways to deploy the composite in different environment? Depending upon the environment, it's business importance increases and hence access to developers get more restricted and hence there are many ways for deploying. If you are developing an application, you would not like to export a SAR and then login to EM console to deploy it. For a developer it is always very convenient to use IDE itself for deployment and hence JDev is preferably used for Dev instances for deployment.
    Once development finishes, developer will check in the artifacts into version control system and if you want to deploy to a test instance then you have to check out the stable version, compile it and package it and then only you can deploy. Hence for test instances, ANT is the preferable mode for deployment. (Remember that developers may not be able to connect to Test environment directly and hence deployment from JDev is not possible)
    Once a configuration gets tested in Test env, it's SAR should be checked in into version control system, so that it would not be required to recompile and repackaging of it. This will also make sure that any artifact which is not tested on Test instance, must not go to higher instances (like UAT/PROD). Now in Pre-Prod/UAT/Prod, you may simply access the EM console and deploy the SAR which is already tested in Test instance. Remember that there will be very limited access to such critical environments and hence using Role based access of EM it would be very easy to deploy the resources. Moreover, it is more secure mode of deployment because only those users which have appropriate priviledge, will be able to deploy, and it would also be easier to track the changes.
    What is the proc and cons if we use only one way to deploy the composite across the Instances...As such there is no major pros and cons. You may use EM for all environments but it may be a little discomfort for developers/deployers of test environment. You may also use ANT for all the environments but it is not suggested until and unless you have a very good and secure process in place for deployments.
    Regards,
    Anuj

  • Responsive projects autosizing for multiple devices -- best practices?

    While it's a nice idea to have the three different breakpoints on width that allow you to make some major layout changes, I'm having trouble making this work well across multiple devices.  With the high resolutions of current mobile devices, this model just doesn't seem to work well.  For example, the iPad 2 in landscape mode select the desktop layout, which isn't bad, but in portrait mode gets the tablet layout, which by default is set up to be landscape.  I changed the heights for both breakpoints to better fit the iPad, but then the iPhone in landscape gets the tablet layout, requiring a lot of scrolling.
    Given the wide range of resolutions on mobile devices, it's not at all clear how this a simplistic mechanism like this could ever work.  For one thing, it sure seems like you need to provide for both portrait and landscape layouts on tablets and phones, with Captivate using both width and height to select the best one.  Also, is there any way to tell it to fill the screen without scrolling? How about automatically leaving the area clear where there's a status bar (or telling it to hide the status bar)?
    I could just create a separate version of the project for each device, but then lose much of the value of creating a Responsive Project in the first place.  Have those of you with more experience found good ways to deal with these variables, or is the best option to just create separate versions of the project?

    While it's a nice idea to have the three different breakpoints on width that allow you to make some major layout changes, I'm having trouble making this work well across multiple devices.  With the high resolutions of current mobile devices, this model just doesn't seem to work well.  For example, the iPad 2 in landscape mode select the desktop layout, which isn't bad, but in portrait mode gets the tablet layout, which by default is set up to be landscape.  I changed the heights for both breakpoints to better fit the iPad, but then the iPhone in landscape gets the tablet layout, requiring a lot of scrolling.
    Given the wide range of resolutions on mobile devices, it's not at all clear how this a simplistic mechanism like this could ever work.  For one thing, it sure seems like you need to provide for both portrait and landscape layouts on tablets and phones, with Captivate using both width and height to select the best one.  Also, is there any way to tell it to fill the screen without scrolling? How about automatically leaving the area clear where there's a status bar (or telling it to hide the status bar)?
    I could just create a separate version of the project for each device, but then lose much of the value of creating a Responsive Project in the first place.  Have those of you with more experience found good ways to deal with these variables, or is the best option to just create separate versions of the project?

  • Setting Disks/Caches/Vault for multiple projects - Best Practices

    Please confirm a couple assumptions for me:
    1. Because Scratch Disk, Cache and Autosave preferences are all contained in System Settings, I cannot choose different settings for different projects at the same time (i.e. I have to change the settings upon launch of a new project, if I desire a change).
    2. It is good practice to set the Video/Render Disks to an external drive, and keep the Cache and Autosave Vault set to the primary drive (e.g. user:Documents:FCP Documents). It is also best practice to save the Project File to your primary drive.
    And a question: I see that the Autosave Vault distinguishes between projects, and the Waveform Cache Files distinguishes between clips. But what happens in the Thumbnail Cache Files folder when you have more than one project targeting that folder? Does it lump it into the same file? Overwrite it? Is that something about which I should be concerned?
    Thanks!

    maxwell wrote:
    Please confirm a couple assumptions for me:
    1. Because Scratch Disk, Cache and Autosave preferences are all contained in System Settings, I cannot choose different settings for different projects at the same time (i.e. I have to change the settings upon launch of a new project, if I desire a change).
    Yes
    2. It is good practice to set the Video/Render Disks to an external drive, and keep the Cache and Autosave Vault set to the primary drive (e.g. user:Documents:FCP Documents).
    Yes
    It is also best practice to save the Project File to your primary drive.
    I don't. And I don't think it matters. But you should back that file up to some other drive (like Time Machine).
    And a question: I see that the Autosave Vault distinguishes between projects, and the Waveform Cache Files distinguishes between clips. But what happens in the Thumbnail Cache Files folder when you have more than one project targeting that folder? Does it lump it into the same file? Overwrite it? Is that something about which I should be concerned?
    I wouldn't worry about it.
    o| TOnyTOny |o

  • Integrating Multiple systems - best practice

    Hi,
    I need to integrate the following scenario let me know the best practice with steps.
    Scenario is end to end syncrhonous
    A system(supports open tech i.e webservice client) => SAP PI<=>Oracle(call stored procedure) => Update in ECC=> Reponse back to A system (source)
    Thanks
    My3

    Hi Mythree,
    First get the request from the web service to pi and then map to stored procedure using synchronous send step (Sync Send1) in bpm and get the response back. Once when you get the response back from oracle then use another synchronus send step. Here take the response from the database and map to ecc (use either a proxy or rfc) which is Sync Send2 in the bpm and get the udpdates back. Once when you get the response back send back the response to source system. The steps in BPM would be like this:
    Start --> Receive --> Sync Send1 --> Sync Send2 --> Send --> Stop
    These blogs might be useful for this integration:
    /people/siva.maranani/blog/2005/05/21/jdbc-stored-procedures
    /people/luis.melgar/blog/2008/05/13/synchronous-soap-to-jdbc--end-to-end-walkthrough
    Regards,
    ---Satish

  • Multiple Libraries - Best practice

    I have been using iphoto for the last 5 years, At the end of the year I move the library to an external drive and use iphoto buddy to point to it. Now I have 6-7 libraries and I would rather have everything, together.
    What has people found out is the best way to combine libraries so that all files end up in 1 directory on the firewire drive and then the best way to move this years photos from the hardrive to the ext drive, later? Or is having multiple libraries the best?
    Seems like i am always moving files to and from libraries and i loss any structure and backing it up is a pain. am i missing something here? Thanks in advance
    jf

    Jeff:
    Welcome to the Apple Discussions. The only way at present to merger multiple libraries into one library and retain keywords, rolls, etc, is to use the paid version of iPhoto Library Manager. That will get you one library. If that library gets very large then you might have a storage problem on your boot drive where you want to keep adequate free space for optimal performance. In that case multiple libraries might be best for you.
    FWIW here's my photo strategy. I keep my photos in folder based on the shoot (each upload from the camera after an event, usually family get togethers) in folders dated for the event and a brief description. I then import that folder into iPhoto to get a roll with the same name. Since I take the step to upload before importing to iPhoto I also batch rename the files with the international date format: YYYY-MM-DD-01.jpg and so forth.
    With iPhoto's new capability of using only aliases for the original/source files (I kept my original folders as a backup on a second drive) I used those original source folders for my combined library by importing those folders into a new V6 library using the alias method. So, for 17,400+ photos that take up 27G on my second drive, my iPhoto library on my boot drive only takes up 8G. This is very valuable for PB owners who can't afford that much library space on the boot drive. The one downside to the alias method is that if you delete a photo from the library the source/original file does not get deleted. Hopefully that will be in the next update.
    If the external is dismounted the library is still useable in that you can view thumbnails, create, delete and move albums, add comments and keywords (but with some effort). You can't do anything that requires moving the thumbnails or edit. I've created a workflow to convert from a conventional iPhoto library structure to an alias based one.
    The downside to converting as I mentioned is that you will lose keywords, albums, etc. due to the conversion. So it's not for everyone.
    Bottom line: for combining/merging libraries iPhoto Library Manager is the only option at the present time. Hope this has bee of some help to you.

  • JHeadstart and multiples developers -best practices-

    Hi,
    Which is the best way to use JHeadstart when you have a team of several programmers?
    We’ve seen that several examples have only one “Application Structure File”, therefore it is quite difficult that a group of programmers can work in parallel.
    Which is the best way to handle this situation? Several “Application Structure Files”?
    Our project will have a team of 4 programmers and certainly we want that they work efficiently with this tool.
    Any thought?
    Best regards,

    Michael et al,
    I am working on a big ADF project where we do the following:
    - one big Model project with all business component objects, but we organize the EO's, VO's and AM's in separate packages, and for the VO's, we make sub-packages per functional subsystem
    - several ViewController projects for each functional subsystem, each having its own struts-config-<subsystemname> file.
    - within a ViewController project, we sometimes have multiple Application Structure files generating into the same struts-config file.
    Please see this thread for more info on config management tools:
    Re: Jheadstart, JDeveloper and CVS and TeamWork
    Steven Davelaar,
    JHeadstart Team.

  • Setup internal and external DNS namespaces best practice

    Is external name space (e.g. companydomain.com) and internal name space (e.g. corp.companydomain.com or companydomain.local) able to run on the same DNS server (using Microsoft Windows DNS servers)?
    MS said it is highly recommended to use a subdomain to handle internal name space - say corp.companydomain.com if the external namespace is companydomain.com.  How shall this be setup?  Shall I create my ADDS domain as corp.companydomain.com directly
    or companydomain.com then create a subdomain corp?
    Thanks in advanced.
    William Lee
    Honf Kong

    Is external name space (e.g. companydomain.com) and internal name space (e.g. corp.companydomain.com or companydomain.local)
    able to run on the same DNS server (using Microsoft Windows DNS servers)?
    Yes, it is technically feasible. You can have both of them running on the same DNS server(s). Just only your public DNS zone can be published for external resolution.
    MS said it is highly recommended to use a subdomain to handle internal name space - say corp.companydomain.com
    if the external namespace is companydomain.com.  How shall this be setup?  Shall I create my ADDS domain as corp.companydomain.com directly or companydomain.com then create a subdomain corp?
    What is recommended is to avoid having a split-DNS setup (You internal and external DNS names are the same). This is because it introduces extra complexity and confusion when managing it.
    My own recommendation is to use .local for internal zone and .com for external one.
    This posting is provided "AS IS" with no warranties or guarantees , and confers no rights.
    Get Active Directory User Last Logon
    Create an Active Directory test domain similar to the production one
    Management of test accounts in an Active Directory production domain - Part I
    Management of test accounts in an Active Directory production domain - Part II
    Management of test accounts in an Active Directory production domain - Part III
    Reset Active Directory user password

  • User Account Authentication across multiple Solaris servers - Best Practice

    Hi,
    I am new to Solaris admin and would like to know the best practice/setup for authenticating user accounts across multiple solaris servers.
    Currently we have 20 - 30 Solaris 8 & 10 servers which each have their own user accounts setup. I am planning to replace these with a similar number of Solaris 10 servers and would like to centralise the user accounts and their authentication.
    I would be grateful for any suggestions on the best setup and any links to tutorials.
    Thanks
    Jools

    i would suggest LDAP + kerberos, LDAP for name lookups and krb5 for auth. provides secure auth + extensable directory for users and other apps if needed. plus, it provides a decent spring board to add other unix plats into the mix since this will support any unix/linux/bsd plat. you could integrate this design with a windows AD env if you want as well.
    [http://www.sun.com/bigadmin/features/articles/kerberos_s10.jsp] sol + ldap+ AD
    [http://docs.lucidinteractive.ca/index.php/Solaris_LDAP_client_with_OpenLDAP_server] sol + ldap (openldap)
    [http://aput.net/~jheiss/krbldap/howto.html] sol + ldap + krb5
    now these links are all using some diff means, however they should give you some ideas as to whats out there. sol 10 comes with suns ldap server and you can use the krb5 server which comes with it as well. many many diff ways to do this. many many more links out there as welll. these are just a few.

  • Multiple room management -- best practice -- server side http api update?

    Hi Folks, 
    Some of the forum postings on multiple room management are over year old now.  I have student/tutor chat application which has been in the wild for 5 months now and appears to be working well.  There is a single tutor per room, multiple chats and soon to be a whiteboard per student, which is shared with the tutor in a tabbed UI. 
    It is now time to fill out the multiple tutor functionality, which I considered and researched when building, but did not come to any conclusions.   I'm leaning towards a server side implementation.  Is there an impending update to the http api?
    Here is what I understand to be the flow:
    1) server side management of who is accessing the room
    2) load balance and manage the room access 1 time user and owner session from the server side
    3) for my implementation, a tutor will need to login to the room, in order for it to be available
    4) Any reconnection would in turn need to be managed by the server side, and is really a special case of room load balancing.
    My fear is that at some point I'm going to need access to the number of students in the room or similar and this is not available, so that I'll need client functionality, which will need update the server side manager.
    As well, I'm concerned about delays on the server side access to which might create race conditions in a re-connect situation.  User attempts to reconnect, but server side manager thinks that the user is already connected.
    Surely this simple room management has been built, does anyone have any wisdom they can impart?  Is there any best practice guidance or any samples?
    Thanks,
    Doug

    Hi Raff, Thanks a ton for the response.
    I wasn't clear on what I was calling load balancing.  What I mean by this is room assignment for student clients.  We have one tutor per room.  There are multiple students per room, but each is in their own one-on-one chat with the tutor.
    I'm very much struggling with where to do the room assignment / room managemnt, on the server side or on the client side (if that is even possible).  In my testing it is taking upwards of 10 seconds minimum to get a list of rooms (4 virtually empty rooms) and to query the users in a single room (also a minimum of users/nodes in the queried room).   If after this point, I 'redirect' the student to the least full room, then the student incurs the cost of creating a new session and logging into the room.  As well I intend to do a bit of xml parsing, and other processing, so that 10 seconds is likely to grow.
    Would I see better performance trying to do this in the client?
    As far as the server side, at what point does a room go to 'not-active'?
    When I'm querying the roomList, I am considered one of the 'OWNER' users in the UserLists.  At what point can it be safe to assume that I have left the room? 
    Is there documentation on the meaning and lifecycle of the different status codes?  not-active,  not-running, and ok?  Are there others?
    How much staleness can I expect from the server-side queries?
    As far as feature set, the only thing that comes to mind is xpath and or wild card support for getNode() but i think this was mentioned in other posts.
    Regarding the reconnection issues, I am timing out the student after inactivity, and this is probably by and large the bulk of my reconnect use cases.  This and any logout interaction from the student presents a use case where I  may want reassign the student return to the same room as before.  I can envision scenarios of a preferred tutor if available etc.  In this case, I'll need to know list of rooms.  In terms of reconnection failover, this is not not a LCCS / FMS issue.
    Thanks again for responding.

  • Single Template support multiple formats of data - Best practice

    I have a requirement to create Invoices in a single PDF file.
    The invoices would belong to different categories - DebitNotes, CreditNotes, Invoices with single product,
    invoices with multiple product etc.. each will have a different format.
    I initially thought the right way to create a single pdf is to use a
    single Template, with different formats of invoice seperated by conditional formatting.
    The see from reading the blogs that the other way is to create sub-template
    (one each for credit, invoice, Debits etc) and plug it into the
    main template.
    I would like to know what is the best practice that is followed in the above case.
    If I were to use sub-templates how would I make it possible to view the invoice stub only on the first page.
    Since the data from the sub-template would go to multiple pages.
    Is adding the stub data to the footer the only option. Please can someone share with me an example
    template.
    Thanks
    Shandrila

    Shandrila
    If the various document types are of a single XML format ie the same structure with just document type differences and the layout format is the same just the data different or very minimal changes that can be handled with conditional formatting then I think it would be OK to have a single report for all document types.
    If the data structures are very different and the layout requirements are different then I would create separate reports for each document type. If the data structure is teh same but the document type layouts are different then go for separate layout formats.
    Going down the sub template path can be a little difficult, you might end up with a very complex set of templates that are almost as much of a pain to manage as the original report you are trying to replace.
    Here's the best scenario IMHO ...
    1 data extract, parameterized to pull invoice, CM, etc data based on the user request
    Multiple layout templates, 1 for each document type. If you have common layout sections across the layouts e.g address blocks then break them out as sub template components that all of the layouts can access and share.
    Multiple report definitions, sharing the data extract with a single layout template associated with them
    cheers
    Tim

  • Trade offs for spreading oraganizatons across suffixes - best practices?

    Hey Everyone, I am trying to figure out some best practices here. I'v looked through the docs but have not found anything that quite touches on this.
    In the past, here is how I created my directory (basically using dsconf create-suffix for each branch I needed)
    dsconf list-suffixes
    dc=example,dc=com
    ou=People,dc=example,dc=com
    ou=Groups,dc=example,dc=com
    o=Services,dc=example,dc=com
    ou=Groups,o=Services,dc=example,dc=com
    ou=People,o=Services,dc=example,dc=com
    o=listserv,dc=example,dc=com
    ou=lists,o=listserv,dc=example,dc=com
    A few years later, learning more, and setting up replication, it seems I may have made my life a bit more complicated that it should be. It seems i would need many more replication agreements to get every branch of the tree replicated. It also seems that different parts of the directory are stored in different backend database files.
    It seems like I should have something like this:
    dsconf list-suffixes
    dc=example,dc=com
    Instead of creating all the branches as suffixes or sub-suffixes, maybe i should have just created organization and organizational unit entries within a single suffix "dc=example,dc=com". This way I can replicate all data by replicating just one suffix. Is there a downside to having one backend db files containing all the data instead of spreading it across multiple files (were talking possibly 90K entries across the entire directory).
    Can anyone confirm the logic here or provide any insight?
    Thanks much in Advance,
    Deejam

    Well, there are a couple of dimensions to this question. The first is simply whether your DIT ought to have more or less depth. This is an old design debate that goes back to problems with changing DNs in X500 style DITs with lots of organizational information embedded in the DN. Nowadays DITs tend to be flatter even though there are more tools for renaming entries. You still can't rename entries across backends, though. The second dimension is, given a DIT, how should you distribute the containers in your DIT across the backend databases.
    As you have already determined, the principal design consideration for your backend configuration will be replication, though scalability and backup configuration might also come into it. From what you have posted, though, it does not look like you have that much data. So yes, you should configure database backends and associated suffixes with sufficient granularity to support your replication requirements. So, if a particular suffix needs to be replicated differently than another suffix, they need to be defined as distinct suffixes/backends. Usually we define the minimal number of suffixes and backends needed to satisfy the topological requirements, though I can imagine there might be cases where suffixes might be more fine grained.
    For large, extensible Directory topologies, I usually look for data that's sensibly divisible into "building blocks". So for instance you might have a top-level suffix "dc=example,dc=com" with a bunch of global ACIs, system users and groups that are going to need to be everywhere. Then you might have a large chunk of external customer data, and a small amount of internal employee data. I would consider putting the external users in a distinct suffix from the employees, because the two types of entries are likely to be quite different. If I have a need to build a public Directory somewhere, all I have to do is configure the external suffix and replicate it. The basic question I would be asking there is if I might ever need to expose a subset of the Directory, will the data already be partitioned for me or will I have to do data reorganization.
    In your case, it does not look likely you will need to chop up your data much, so it's probably simpler to stay monolithic and use only one backend.

  • Best Practice Table Creation for Multiple Customers, Weekly/Monthly Sales Data in Multiple Fields

    We have an homegrown Access database originally designed in 2000 that now has an SQL back-end.  The database has not yet been converted to a higher format such as Access 2007 since at least 2 users are still on Access 2003.  It is fine if suggestions
    will only work with Access 2007 or higher.
    I'm trying to determine if our database is the best place to do this or if we should look at another solution.  We have thousands of products each with a single identifier.  There are customers who provide us regular sales reporting for what was
    sold in a given time period -- weekly, monthly, quarterly, yearly time periods being most important.  This reporting may or may not include all of our product identifiers.  The reporting is typically based on calendar-defined timing although we have
    some customers who have their own calendars which may not align to a calendar month or calendar year so recording the time period can be helpful.
    Each customer's sales report can contain anything from 1,000-20,000 rows of products for each report.  Each customer report is different and they typically have between 4-30 columns of data for each product; headers are consistently named.  The
    product identifiers included may vary by customer and even within each report for a customer; the data in the product identifier row changes each week.  Headers include a wide variety of data such as overall on hand, overall on order, unsellable on hand,
    returns, on hand information for each location or customer grouping, sell-through units information for each location or customer grouping for that given time period, sell-through dollars information for each location or customer grouping for that given time
    period,  sell-through units information for each location or customer grouping for a cumulative time period (same thing for dollars), warehouse on hands, warehouse on orders, the customer's unique categorization of our product in their system, the customer's
    current status code for that product, and so on.
    Currently all of this data is stored in a multitude of Excel spreadsheets (by customer, division and time period).  Due to overall volume of information and number of Excel sheets, cross-referencing can take considerable time.  Is it possible to
    set-up tables for our largest customers so I can create queries and pivot tables to more quickly look at sales-related information by category, by specific product(s), by partner, by specific products or categories across partners, by specific products or
    categories across specific weeks/months/years, etc.  We do have a separate product table so only the product identifier or a junction table may be needed to pull in additional information from the product table with queries.  We do need to maintain
    the sales reporting information indefinitely.
    I welcome any suggestions, best practice or resources (books, web, etc).
    Many thanks!

    Currently all of this data is stored in a multitude of Excel spreadsheets (by customer, division and time period).  Due to overall volume of information and number of Excel sheets, cross-referencing can take considerable time.  Is it possible to
    set-up tables .....
    I assume you want to migrate to SQL Server.
    Your best course of action is to hire a professional database designer for a short period like a month.
    Once you have the database, you need to hire a professional DBA to move your current data from Access & Excel into the new SQL Server database.
    Finally you have to hire an SSRS professional to design reports for your company.
    It is also beneficial if the above professionals train your staff while building the new RDBMS.
    Certain senior SQL Server professionals may be able to do all 3 functions in one person: db design, database administration/ETL & business intelligence development (reports).
    Kalman Toth Database & OLAP Architect
    SELECT Video Tutorials 4 Hours
    New Book / Kindle: Exam 70-461 Bootcamp: Querying Microsoft SQL Server 2012

  • Best practice for multiple instances of the same BEX query

    Hi there,
    I'm wondering what's the best way to use multiple instances of the same BEX query. Let me explain what I mean:
    I have a dashboard with different queries feeding different period of time such as: week to date, month to date and so on. One query for each since it is based on a user exit.
    For each query I want to show different data in different sections of my dashboard. Per example: sales per directors or sales per customer group, sales per day, sales per week and the like.I tried to connect a simple bar chart via a direct connection but with no success due to the multiple lines generated by the addition of the sales director, customer group, week number and so on.
    My question is about the way to connect the different queries efficiently in order to show the different data while avoiding multiple useless lines.
    The image above shows the query browser where, per example, for a Month to date query there will be mutiple line for each week as well as one line for each director. If, for two different components, I want to show data per week and data per director or other representation what is the best practice:
    Add another instance of the same query and only put the week information and another one will only the director info?
    Should I bind those to the excel file and use formulas to make final calculations?
    Will there be a performance issues for adding different instances of the same query
    I have 6 different queries (read 6 user exit that filters time via user exit).
    Depending on the best practices there might be 4 instances for each for a total of 24 instances in the query browser.
    I hope my question is clear enough, if not please do not hesitate I'll clarify as much as possible.
    Regards,
    Steve

    Hi Steve,
    Might be trying for solution for a long time, If i understood your question clear let me clarify you few points.
    You are trying to access the bex query which is designed with the exit's in the background based on the logic and trying to call the entire dimensions and key-figures in a single connection. Then you are trying to map those data in the charts.
    Steve, try to make more connections based upon the logic and split them. use the same query but split them by sales per customer group, sales per day, sales per week by making three different connections and try. You can merge the prompts from all connections.
    Hope this Helps!!!
    Sorry if i misunderstood your question.
    --SumanT

Maybe you are looking for