Best practices for cleaning up after a Bulk REST API v2 export
I want to make sure that I am cleaning up after my exports (not leaving anything staging, etc). So far I am
DELETEing $ENTITY/exports/$ID and $ENTITY/exports/$ID/data as described in the Bulk REST API documentation
Using a dataRetentionDuration when I create an export (as a safety net in case my code crashes before deleting).
Is there anything else I should do? Should I/can I DELETE the syncs I create (syncs are not listed in the "Delete an Entity" section of the documentation)? Or are those automatically deleted when I DELETE an export?
Thanks!
1086203
Hi Chris,
I met the same problem as pod
It happens when I tried to load all historical activities, and one sample is same activityId was given to 2 different types (one is EmailOpen, the other is FormSubmit) that generated in year 2013
Before full loading, I ever did testing for my job, extracting the activity records from Nov 2014, and there is not unique ID issue
Seems Eloqua fixed this problem before Nov 2014, right?
So if I start to load Activity generated since 2015, there will not be PK problem, or else, I have to use ActivityId + ActivityType as compound PK for historical data
Please confirm and advise
Waiting for your feedback
Thanks~
Similar Messages
-
Best practices for cleaning up an old CSS?
We have a legacy help system that we've put into RH 9. Our CSS has a lot of old styles in it. Is there a best practices document somewhere that we can use to learn how to clean up the CSS and remove old styles but still preserve the ones we want?
thanks...I don't know of any such document but perhaps this will help.
First archive a copy of the CSS as it is now so that you can go back and retrieve anything that you later find you shouldn't have deleted.
Next you should be safe in deleting any styles you see with kadov in them. You will see they are duplicates of another style and were used for the way RoboHelp used to work.
The rest are a bit more difficult. You need to use the multifile find and replace tool to see if they are used in any topic. Then either change them to what you want now or leave them in the CSS.
See www.grainge.org for RoboHelp and Authoring tips
@petergrainge -
Best practice for cleaning up conversations after a recieve timeout
We have a pattern where sql server sends a message through service broker and waits for a response (say 10 ten secs), if it doesn't get a response, it will assume a default response and carry on. The response may come later and also end the conversation
target side. However there is no-one to receive the response (which is no longer needed). We have clean up script on a sql agent job but we were wondering if there is a cleaner way to handle these situationsCan't you set up an activation procedure that receives the response message and ends the conversation? I would not expect the activation procedure to be fired, if there is already is someone waiting on the queue.
But it is certainly nothing I have tested.
Erland Sommarskog, SQL Server MVP, [email protected] -
Best practices for cleaning up and upgrading
Apologies in advance, as I know there is a wealth of info and ideas on this topic, but I'm looking for the best possible combination of simplicity and effectiveness and the community has done well by me in the past.
Situation: I have this old MacBook
Model Name: MacBook
Model Identifier: MacBook6,1
Processor Name: Intel Core 2 Duo
Processor Speed: 2.26 GHz
Number of Processors: 1
Total Number of Cores: 2
L2 Cache: 3 MB
Memory: 4 GB
Bus Speed: 1.07 GHz
Boot ROM Version: MB61.00C8.B00
System Version: OS X 10.9.5 (13F34)
Kernel Version: Darwin 13.4.0
HD- Available: 6.22 GB
Capacity: 249.2 GB
Literally the only paid software that I have on here and need to keep is Microsoft Office. I do not have the original install disk for this software.
This machine is running very very slowly, and not much hard disk space left. I'm not doing very well at cleaning up.
I have brand new Time Machine backup and I have some pretty old Time Machine backups, pre Mavericks.
I have a new 2TB external drive.
I'm looking for the most effective way to speed this one up and make it as lean as possible and, if advisable, upgrade to Yosemite.
Any recommendations?
I'm willing to spend a little money if it can make a substantial difference.
Thanks and apologies for length of post.
RWHi,
First thanks for this. This application has been really helpful. I've deleted a lot of the easy stuff (music, pics, videos) and am now getting down to some of the stuff I'm less comfortable whacking without some guidance. Here's an example. I don't use the Mail application at all (use Gmail). Here is what I see on OmniDisk Sweeper:
https://www.dropbox.com/s/6iedkj46u4jaxbf/Screenshot%202014-11-08%2010.26.33.png ?dl=0
I think the bulk of this is just messages from my gmail account, from a failed attempt to use Mail a bit years ago. So can you help with at which point I can delete? Hope question make sense. You've helped a lot so far and I've freed up about 45 gb so far.
Rob -
Biztalk Best practice for update message after transformation
Hi
i have a requirement in which i have to update a message .
Message have multiple receords .
all records are created by transformation .
but i have to update i element in the record from the context .
i tried Xpath but since message have multiple receords so it didn't work .
can you suggest the best ways .
Regards,
Mohit GuptaI assume you’re using orchestration (as you said you have tried with XPath), updating an element is part of constructing a message, so you have following options:
Message assignment, update a record using XPath.
Using external helper – pass the transformed message and context property value as two parameter to an external c# helper and update the element in the external C# helper
which would give more control.
Using context accessor functiod (codeplex one) – Use this codeplex functoid, update the relevant element in the map under transformation.
Which is best way among this, certainly using Message assignment, update the record using XPath. If you have any issues I would try to solve it. I can’t comment on your
issue in using XPath as I don’t know the complexity of the XML record structure. But better options in this.
Using external helper, give more control where you have complete flexibility of using C#, so you can easily debug, complete control over the XML message (which also there
in Orch, but in C# it much easier). But problem with this approach is, you will have additional assembly to manage.
Least favoured among the options is context accessor functoid, still does the job, but overhead of managing a custom functiod to do this work.
You can choose the one which suits your need best.
If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply. -
Best practice for customizing EJB property after deployment
Hi Gurus,
What is the best practice for customizing EJB property after deployment in NW7.1? I have a stateless session bean and it needs to get some environment information before acting. While the information can only be known at runtime. What should I do to achieve it? I thought I can bind the property with a JNDI context but I did not find out where to declare and change the context value. Please advise. Thanks.
B.R.Hi.
I have a similar problem. But I still can not edit the properties of the ejb-jar.xml.
I tried to stop the web service, but the properties still remain unmodifiable.
Could you advise me how to change them?
We have installed SAP Server 7.0.2 -
BI Best Practice for Chemical Industry
Hello,
I would like to know if anyone is aware of SAP BI Best Practice for Chemicals.And if so can anyone please post a link aswell.
ThanksHi Naser,
Below information will helps you in detail explanation regarding Chemical industry....
SAP Best Practices packages support best business practices that quickly turn your SAP ERP application into a valuable tool used by the entire business. You can evaluate and implement specific business processes quickly u2013 without extensive Customization of your SAP software. As a result, you realize the benefits with less Effort and at a lower cost than ever before. This helps you improve operational efficiency while providing the flexibility you need to be successful in highly demanding markets. SAP Best Practices packages can benefit companies of all sizes, including global enterprises creating a corporate template for their subsidiaries.
Extending beyond the boundaries of conventional corporate divisions and functions, the SAP Best Practices for Chemicals package is based on SAP ERP; the SAP Environment, Health & Safety (SAP EH&S) application; and the SAP Recipe Management application. The business processes supported by SAP Best Practices for Chemicals encompass a wide range of activities typically found in a chemical industry
Practice:
u2022 Sales and marketing
u2013 Sales order processing
u2013 Presales and contracts
u2013 Sales and distribution (including returns, returnables, and rebates, with quality management)
u2013 Inter- and intracompany processes
u2013 Cross-company sales
u2013 Third-party processing
u2013 Samples processing
u2013 Foreign trade
u2013 Active-ingredient processing
u2013 Totes handling
u2013 Tank-trailer processing
u2013 Vendor-managed inventory
u2013 Consignment processing
u2013 Outbound logistics
u2022 Supply chain planning and execution Supply and demand planning
u2022 Manufacturing planning and execution
u2013 Manufacturing execution (including quality management)
u2013 Subcontracting
u2013 Blending
u2013 Repackaging
u2013 Relabeling
u2013 Samples processing
u2022 Quality management and compliance
u2013 EH&S dangerous goods management
u2013 EH&S product safety
u2013 EH&S business compliance services
u2013 EH&S industrial hygiene and safety
u2013 EH&S waste management
u2022 Research and development Transformation of general recipes
u2022 Supplier collaboration
u2013 Procurement of materials and services (Including quality management)
u2013 Storage tank management
u2013 E-commerce (Chemical Industry Data Exchange)
u2022 Enterprise management and support
u2013 Plant maintenance
u2013 Investment management
u2013 Integration of the SAP NetWeaver Portal component
u2022 Profitability analysis
More Details
This section details the most common business scenarios u2013 those that benefit most from the application of best practices.
Sales and Marketing
SAP Best Practices for Chemicals supports the following sales and marketingu2013related business processes:
Sales order processing u2013 In this scenario, SAP Best Practices for Chemicals supports order entry, delivery, and billing. Chemical industry functions include the following:
u2022 Triggering an available-to-promise (ATP) inventory check on bulk orders after sales order entry and automatically creating a filling order (Note: an ATP check is triggered for packaged material.)
u2022 Selecting batches according to customer requirements:
u2022 Processing internal sales activities that involve different organizational units
Third-party and additional internal processing u2013 In this area, the SAP Best Practices for Chemicals package provides an additional batch production step that can be applied to products previously produced by either continuous or batch processing. The following example is based on further internal processing of plastic granules:
u2022 Purchase order creation, staging, execution, and completion
u2022 In-process and post process control
u2022 Batch assignment from bulk to finished materials
u2022 Repackaging of bulk material
SAP Best Practices for Chemicals features several tools that help you take advantage of chemical industry best practices. For example, it provides a fully documented and reusable prototype that you can turn into a productive solution quickly. It also provides a variety of tools, descriptions of business scenarios, and proven configuration of SAP software based on more than 35 years of working with the
Chemical industry.
SAP Functions in Detail u2013 SAP Best Practices for Chemicals
The package can also be used to support external toll processing such as that required for additional treatment or repackaging.
Tank-trailer processing u2013 In this scenario, SAP Best Practices for Chemicals helps handle the selling of bulk material, liquid or granular. It covers the process that automatically adjusts the differences between the original order quantities and the actual quantities filled in the truck. To determine the quantity actually filled, the tank trailer is weighed before and after loading. The delta weight u2013 or quantity filled u2013 is transmitted to the SAP software via an order confirmation. When the delivery for the sales order is created, the software automatically adjusts the order quantity with the confirmed filling quantity.The customer is invoiced for the precise quantity filled and delivered.
Supply Chain Planning and Execution
SAP Best Practices for Chemicals supports supply chain planning as well as supply chain execution processes:
Supply and demand planning u2013 Via the SAP Best Practices for Chemicals package, SAP enables complete support for commercial and supply-chain processes in the chemical industry, including support for integrated sales and operations planning, planning strategies for bulk material, and a variety of filling processes with corresponding packaging units. The package maps the entire supply chain u2013 from sales planning to material requirements planning to transportation procurement.
Supplier Collaboration
In the procurement arena, best practices are most important in the following
Scenario:
Procurement of materials and services:
In this scenario, SAP Best Practices for Chemicals describes a range of purchasing processes, including the following:
u2022 Selection of delivery schedules by vendor
u2022 Interplant stock transfer orders
u2022 Quality inspections for raw materials, including sampling requests triggered
by goods receipt
Manufacturing Scenarios
SAP Best Practices for Chemicals supports the following sales and
Manufacturingu2013related business processes:
Continuous production u2013 In a continuous production scenario, SAP Best Practices for Chemicals typifies the practice used by basic or commodity chemical producers. For example, in the continuous production of plastic granules, production order processing is based on run-schedule headers. This best-practice package also describes batch and quality management in continuous production. Other processes it supports include handling of byproducts,co-products, and the blending process.
Batch production u2013 For batch production,
SAP Best Practices for Chemicals typifies the best practice used by specialty
chemical producers. The following example demonstrates batch production
of paint, which includes the following business processes:
u2022 Process order creation, execution, and completion
u2022 In-process and post process control
u2022 Paperless manufacturing using XMLbased Process integration sheets
u2022 Alerts and events
u2022 Batch derivation from bulk to finished materials
Enterprise Management and Support
SAP Best Practices for Chemicals also supports a range of scenarios in this
area:
Plant maintenance u2013 SAP Best Practices for Chemicals allows for management
of your technical systems. Once the assets are set up in the system, it focuses on preventive and emergency maintenance. Tools and information support the setup of a production plant with assets and buildings.Revenue and cost controlling u2013 The package supports the functions that help you meet product-costing requirements in the industry. It describes how cost centers can be defined, attached
to activity types, and then linked to logistics. It also supports costing and settlement of production orders for batch and continuous production. And it includes information and tools that help you analyze sales and actual costs in a margin contribution report.
The SAP Best Practices for Chemicals package supports numerous integrated
business processes typical of the chemical industry, including the following:
u2022 Quality management u2013 Supports integration of quality management concepts across the entire supplychain (procurement, production, and sales), including batch recall and complaint handling
u2022 Batch management u2013 Helps generate batches based on deliveries from vendors or because of company production or filling, with information and tools for total management of batch production and associated processes including batch derivation, batch information cockpit, and a batchwhere- used list
u2022 Warehouse management u2013 Enables you to identify locations where materials
or batch lots are stored, recording details such as bin location and other storage information on dangerous goods to help capture all information needed to show compliance with legal requirements
Regards
Sudheer -
Best practices for ARM - please help!!!
Hi all,
Can you please help with any pointers / links to documents describing best practices for "who should be creating" the GRC request in below workflow of ARM in GRC 10.0??
Create GRC request -> role approver -> risk manager -> security team
options are : end user / Manager / Functional super users / security team.
End user and manager not possible- we can not train so many people. Functional team is refusing since its a lot of work. Please help me with pointers to any best practices documents.
Thanks!!!!In this case, I recommend proposing that the department managers create GRC Access Requests. In order for the managers to comprehend the new process, you should create a separate "Role Catalog" that describes what abilities each role enables. This Role Catalog needs to be taught to the department Managers, and they need to fully understand what tcodes and abilities are inside of each role. From your workflow design, it looks like Role Owners should be brought into these workshops.
You might consider a Role Catalog that the manager could filter on and make selections from. For example, an AP manager could select "Accounts Payable" roles, and then choose from a smaller list of AP-related roles. You could map business functions or tasks to specific technical roles. The design flaw here, of course, is the way your technical roles have been designed.
The point being, GRC AC 10 is not business-user friendly, so using an intuitive "Role Catalog" really helps the managers understand which technical roles they should be selecting in GRC ARs. They can use this catalog to spit out a list of technical role names that they can then search for within the GRC Access Request.
At all costs, avoid having end-users create ARs. They usually select the wrong access, and the process then becomes very long and drawn out because the role owners or security stages need to mix and match the access after the fact. You should choose a Requestor who has the highest chance of requesting the correct access. This is usually the user's Manager, but you need to propose this solution in a way that won't scare off the manager - at the end of the day, they do NOT want to take on more work.
If you are using SAP HR, then you can attempt HR Triggers for New User Access Requests, which automatically fill out and submit the GRC AR upon a specific HR action (New Hire, or Termination). I do not recommend going down this path, however. It is very confusing, time consuming, and difficult to integrate properly.
Good luck!
-Ken -
Best Practices for Using Photoshop (and Computing in General)
I've been seeing some threads that lead me to realize that not everyone knows the best practices for doing Photoshop on a computer, and in doing conscientious computing in general. I thought it might be a good idea for those of us with some exprience to contribute and discuss best practices for making the Photoshop and computing experience more reliable and enjoyable.
It'd be great if everyone would contribute their ideas, and especially their personal experience.
Here are some of my thoughts on data integrity (this shouldn't be the only subject of this thread):
Consider paying more for good hardware. Computers have almost become commodities, and price shopping abounds, but there are some areas where spending a few dollars more can be beneficial. For example, the difference in price between a top-of-the-line high performance enterprise class hard drive and the cheapest model around with, say, a 1 TB capacity is less than a hundred bucks! Disk drives do fail! They're not all created equal. What would it cost you in aggravation and time to lose your data? Imagine it happening at the worst possible time, because that's exactly when failures occur.
Use an Uninterruptable Power Supply (UPS). Unexpected power outages are TERRIBLE for both computer software and hardware. Lost files and burned out hardware are a possibility. A UPS that will power the computer and monitor can be found at the local high tech store and doesn't cost much. The modern ones will even communicate with the computer via USB to perform an orderly shutdown if the power failure goes on too long for the batteries to keep going. Again, how much is it worth to you to have a computer outage and loss of data?
Work locally, copy files elsewhere. Photoshop likes to be run on files on the local hard drive(s). If you are working in an environment where you have networking, rather than opening a file right off the network, then saving it back there, consider copying the file to your local hard drive then working on it there. This way an unexpected network outage or error won't cause you to lose work.
Never save over your original files. You may have a library of original images you have captured with your camera or created. Sometimes these are in formats that can be re-saved. If you're going to work on one of those files (e.g., to prepare it for some use, such as printing), and it's a file type that can be overwritten (e.g., JPEG), as soon as you open the file save the document in another location, e.g., in Photoshop .psd format.
Save your master files in several places. While you are working in Photoshop, especially if you've done a lot of work on one document, remember to save your work regularly, and you may want to save it in several different places (or copy the file after you have saved it to a backup folder, or save it in a version management system). Things can go wrong and it's nice to be able to go back to a prior saved version without losing too much work.
Make Backups. Back up your computer files, including your Photoshop work, ideally to external media. Windows now ships with a quite good backup system, and external USB drives with surprisingly high capacity (e.g., Western Digital MyBook) are very inexpensive. The external drives aren't that fast, but a backup you've set up to run late at night can finish by morning, and if/when you have a failure or loss of data. And if you're really concerned with backup integrity, you can unplug an external drive and take it to another location.
This stuff is kind of "motherhood and apple pie" but it's worth getting the word out I think.
Your ideas?
-NoelAPC Back-UPS XS 1300. $169.99 at Best Buy.
Our power outages here are usually only a few seconds; this should give my server about 20 or 25 minutes run-time.
I'm setting up the PowerChute software now to shut down the computer when 5 minutes of power is left. The load with the monitor sleeping is 171 watts.
This has surge protection and other nice features as well.
-Noel -
I posted a few days ago re failing HDD on mid-2007 iMac. Long story short, took it into Apple store, Genius worked on it for 45 mins before decreeing it in need of new HDD. After considering the expenses of adding memory, new drive, hardware and installation costs, I got a brand new iMac entry level (21.5" screen,
2.7 GHz Intel Core i5, 8 GB 1600 MHz DDR3 memory, 1TB HDD running Mavericks). Also got a Superdrive. I am not needing to migrate anything from the old iMac.
I was surprised that a physical disc for the OS was not included. So I am looking for any Best Practices for setting up this iMac, specifically in the area of backup and recovery. Do I need to make a boot DVD? Would that be in addition to making a Time Machine full backup (using external G-drive)? I have searched this community and the Help topics on Apple Support and have not found any "checklist" of recommended actions. I realize the value of everyone's time, so any feedback is very appreciated.OS X has not been officially issued on physical media since OS X 10.6 (arguably 10.7 was issued on some USB drives, but this was a non-standard approach for purchasing and installing it).
To reinstall the OS, your system comes with a recovery partition that can be booted to by holding the Command-R keys immediately after hearing the boot chimes sound. This partition boots to the OS X tools window, where you can select options to restore from backup or reinstall the OS. If you choose the option to reinstall, then the OS installation files will be downloaded from Apple's servers.
If for some reason your entire hard drive is damaged and even the recovery partition is not accessible, then your system supports the ability to use Internet Recovery, which is the same thing except instead of accessing the recovery boot drive from your hard drive, the system will download it as a disk image (again from Apple's servers) and then boot from that image.
Both of these options will require you have broadband internet access, as you will ultimately need to download several gigabytes of installation data to proceed with the reinstallation.
There are some options available for creating your own boot and installation DVD or external hard drive, but for most intents and purposes this is not necessary.
The only "checklist" option I would recommend for anyone with a new Mac system, is to get a 1TB external drive (or a drive that is at least as big as your internal boot drive) and set it up as a Time Machine backup. This will ensure you have a fully restorable backup of your entire system, which you can access via the recovery partition for restoring if needed, or for migrating data to a fresh OS installation. -
Could you please share your best practices for setting up a new Windows Server 2012 r2 Hyper-V Virtualized AD DC, that will be running on a new WinSrv 2012 r2 host server. (This
will be for a brand new network setup, new forest, domain, etc.)
Specifically, your best practices regarding:
the sizing of non virtual and virtual volumes/partitions/drives,
the use of sysvol, logs, & data volumes/drives on hosts & guests,
RAID levels for the host and the guest(s),
IDE vs SCSI and drivers both non virtual and virtual and the booting there of,
disk caching settings on both host and guests.
Thanks so much for any information you can share.A bit of non essential additional info:
We are small to midrange school district who, after close to 20 years on Novell networks, have decided to design and create a new Microsoft network and migrate all of our data and services
over to the new infrastructure . We are planning on rolling out 2012 r2 servers with as much Hyper-v virtualization as possible.
During the last few weeks we have been able to find most of the information we need to undergo this project, and most of the information was pretty solid with little ambiguity, except for
information regarding virtualizing the DCs, which as been a bit inconsistent.
Yes, we have read all the documents that most of these posts tend point to, but found some, if not most are still are referring to performing this under Srvr 2008 r2, and haven’t really
seen all that much on Srvr2012 r2.
We have read these and others:
Introduction to Active Directory Domain Services (AD DS) Virtualization (Level 100),
Virtualized Domain Controller Technical Reference (Level 300),
Virtualized Domain Controller Cloning Test Guidance for Application Vendors,
Support for using Hyper-V Replica for virtualized domain controllers.
Again, thanks for any information, best practices, cookie cutter or otherwise that you can share.
Chas. -
Workflow not completed, is this best practice for PR?
Hi SAP Workflow experts,
I am new in workflow and now responsible to support existing PR release workflow.
The workflow is quite simple and straightforward but the issue here is the workflow seems like will never be completed.
If the user released the PR, the next activity is Requisition released that using task TS20000162.
This will send work item to user (pr creator) sap inbox which when they double click it will complete the workflow.
The thing here is, in our organization, user does not access SAP inbox hence there are thousands of work item that has not been completed. (our procurement system started since 2009).
Our PR creator will receive notification of the PR approval to theirs outlook mail handled by a program that is scheduled every 5 minutes.
Since the documentation is not clear enough, i can't digest why the implementer used this approach.
May I know whether this is the best practice for PR workflow or not?
Now my idea is to modify the send email program to complete the workitem after the email being sent to user outlook mail.
Not sure whether it is common or not though in workflow world.
Any help is deeply appreciated.
Thank you.Hello,
"This will send work item to user (pr creator) sap inbox which when they double click it will complete the workflow."
It sounds liek they are sending a workitem where an email would be enough. By completing the workitem they are simply acknowledging that they have received notification of the completion of the PR.
"Our PR creator will receive notification of the PR approval to theirs outlook mail handled by a program that is scheduled every 5 minutes."
I hope (and assume) that they only receive the email once.
I would change the workflow to send an email (SendMail step) to the initiator instead of the workitem. That is normally what happens. Either that or there is no email at all - some businesses only send an email if something goes wrong. Of course, the business has to agree to this change.
Having that final workitem adds nothing to the process. Replace it with an email.
regards
Rick Bakker
hanabi technology -
Best practice for upgrading task definition without deleting task instances
best practice for upgrading task definition in production system without deleting or terminating task instances
If I try and update a task definition with task instances running I get the following error:
Task definition 'My Task - Add User' may not be modified while there are active task instances
Is there a best practice to handle this. I tried to force an update through the console but that didn't work. I tried editing the task from the debug page and got the same error.1) Rename the original task definition.
2) Upload the new task definition with the original name.
3) Later, after all the running tasks have timed out, delete the old definition.
E.g., if your task definition is "myWorkflow":
1) Rename "myWorkflow" to "myWorkflow-old-2009-07-28"
2) Upload the new task definition as "myWorkflow".
Existing tasks will stay linked to the original (renamed) workflow definition.
New tasks will use the new definition.
As the previous poster notes, depending on the changes you are making, letting the old task definitions stay active could have bad side-effects and might be better avoided. -
Best practice for reinstalling anti virus on reinstalling windows
Best practice for reinstalling anti virus after formatting drive and reinstalling windows No anti virus disc.
HastyHello,
I'd ask in the Windows forum on Microsoft Community.
Karl
When you see answers and helpful posts, please click Vote As Helpful, Propose As Answer, and/or Mark As Answer.
My Blog:http://unlockpowershell.wordpress.com
My Book:Windows PowerShell 2.0 Bible
My E-mail: -join ('6F6C646B61726C40686F746D61696C2E636F6D'-split'(?<=\G.{2})'|%{if($_){[char][int]"0x$_"}}) -
Best practice for mouseless ADF applications
I am developing an ADF application where the users do not want to use the mouse.
So I would like to know if there are a best practice for this?
I am already using the accessKey functionality and subforms defaultCommand
But I have had problems setting focus to objects on a page like tables. I would like a button to return the focus to the table after it has made the command like delete.
I have implemented a solution where I have found inspiration several threads and other webpages (see below).
Is this solution okay?
Are there any problems with it?
I would also like to know if there are better pathways to go like
out of the box solutions,
http://www.oracle.com/technetwork/developer-tools/adf/learnmore/79-global-template-button-strategy-360139.pdf (are there an example implementation?), or
http://one-size-doesnt-fit-all.blogspot.dk/2010/11/adf-ui-shell-supporting-global-hotkeys.html
in advance thanks
Inspiration webpages
https://blogs.oracle.com/jdevotnharvest/entry/how_to_programmatically_set_focus
http://technology.amis.nl/2008/01/04/adf-11g-rich-faces-focus-on-field-after-button-press-or-ppr-including-javascript-in-ppr-response-and-clientlisteners-client-side-programming-in-adf-faces-rich-client-components-part-2/
how to Commit table by writting Java code in Managed Bean?
Table does not refresh and getting error as UIComponent is Null
A short description of the solution:
(jdeveloper version 11.1.1.2.0)
--- Example where I use onSetFocus in jsff page
<af:commandButton text="#{hrsusuiBundle.FOCUS}" id="cb10"
partialSubmit="true" accessKey="f"
shortDesc="Alt+Shift+F"
actionListener="#{managedBean_clientUtils.onSetFocus}">
<af:clientAttribute name="focusField" value="t1"/>
</af:commandButton>
--- Examples where I use doTableActionAndSetFocus in jsff page
--- There have to be a binding in the jsff page to delete, commit and rollback
<af:commandButton text="#{hrsusuiBundle.DELETE}" id="cb4"
accessKey="x"
shortDesc="Alt+Shift+X"
partialSubmit="true"
actionListener="#{managedBean_clientUtils.doTableActionAndSetFocus}">
<af:clientAttribute name="focusField" value="t1"/>
<af:clientAttribute name="actionField" value="Delete"/>
</af:commandButton>
<af:commandButton text="#{hrsusuiBundle.COMMIT}" id="cb5"
accessKey="s" shortDesc="Alt+Shift+S"
partialSubmit="true"
actionListener="#{managedBean_clientUtils.doTableActionAndSetFocus}">
<af:clientAttribute name="focusField" value="t1"/>
<af:clientAttribute name="actionField" value="Commit"/>
</af:commandButton>
<af:commandButton text="#{hrsusuiBundle.ROLLBACK}" id="cb6"
accessKey="z" shortDesc="Alt+Shift+Z"
partialSubmit="true"
actionListener="#{managedBean_clientUtils.doTableActionAndSetFocus}"
immediate="true">
<af:resetActionListener/>
<af:clientAttribute name="focusField" value="t1"/>
<af:clientAttribute name="actionField" value="Rollback"/>
</af:commandButton>
--- This is the java class I use
--- It is published in adfc-config.xml as a request scope managedbean
public class ClientUtils {
public ClientUtils() {
public void doTableActionAndSetFocus(ActionEvent event) {
RichCommandButton rcb = (RichCommandButton)event.getSource();
String focusOn = (String)rcb.getAttributes().get("focusField");
String actionToDo = (String)rcb.getAttributes().get("actionField");
UIComponent component = null;
String clientId = null;
component = JSFUtils.findComponentInRoot(focusOn);
clientId = component.getClientId(JSFUtils.getFacesContext());
if ( "Delete".equals(actionToDo) || "Commit".equals(actionToDo) || "Rollback".equals(actionToDo) ){
BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();
OperationBinding operationBinding = bindings.getOperationBinding(actionToDo);
Object result = operationBinding.execute();
AdfFacesContext.getCurrentInstance().addPartialTarget(component);
if (clientId != null) {
makeSetFocusJavaScript(clientId);
public static String onSetFocus(ActionEvent event) {
RichCommandButton rcb = (RichCommandButton)event.getSource();
String focusOn = (String)rcb.getAttributes().get("focusField");
String clientId = null;
if (focusOn.contains(":")) {
clientId = focusOn;
} else {
clientId = findComponentsClientIdInRoot(focusOn);
if (clientId != null) {
makeSetFocusJavaScript(clientId);
return null;
private static void writeJavaScriptToClient(String script) {
FacesContext fctx = FacesContext.getCurrentInstance();
ExtendedRenderKitService erks = null;
erks = Service.getRenderKitService(fctx, ExtendedRenderKitService.class);
erks.addScript(fctx, script);
public static void makeSetFocusJavaScript(String clientId) {
if (clientId != null) {
StringBuilder script = new StringBuilder();
//use client id to ensure component is found if located in
//naming container
script.append("var textInput = ");
script.append("AdfPage.PAGE.findComponentByAbsoluteId");
script.append ("('"+clientId+"');");
script.append("if(textInput != null){");
script.append("textInput.focus();");
script.append("}");
writeJavaScriptToClient(script.toString());
public static String findComponentsClientIdInRoot(String id) {
UIComponent component = null;
String clientId = null;
component = JSFUtils.findComponentInRoot(id);
clientId = component.getClientId(JSFUtils.getFacesContext());
return clientId;
}Hi,
I am developing an ADF application where the users do not want to use the mouse. So I would like to know if there are a best practice for this?
Well HTML (and this is the user interface you see) follows a tab index navigation that you follow with "tab" and "shift+tab". Anything else is a short cut for which you use mnemonics (as you already do) or shortcuts (explained in http://one-size-doesnt-fit-all.blogspot.dk/2010/11/adf-ui-shell-supporting-global-hotkeys.html). There is a distinction to make between non-web environments (which I think you and your users have abackground in) and client desktop environments. Browsers block some keyboard functionality for their own purpose. So you may have to find a list of keys first that work across browsers. Unlike desktop clients, which allow you to "press a button" without the button to take focus, this cannot be done on the web. So you need to be clever here, avoiding buttons at all.
The following paper is about JavaScript in ADF and explains the basics for what Chris Muir explains in : http://one-size-doesnt-fit-all.blogspot.dk/2010/11/adf-ui-shell-supporting-global-hotkeys.html
http://www.oracle.com/technetwork/developer-tools/jdev/1-2011-javascript-302460.pdf
It has the outline for how to register short cut keys that perform a specific action (e.g. register ctrl+d to delete the current row you are on, or press F11 to execute a query (similar to Oracle Forms frmres files)). However, be aware that this includes some code you have to write (actually quite some code to be honest).
http://www.oracle.com/technetwork/developer-tools/adf/learnmore/79-global-template-button-strategy-360139.pdf (are there an example implementation?), or
http://one-size-doesnt-fit-all.blogspot.dk/2010/11/adf-ui-shell-supporting-global-hotkeys.html
Actually these are implementations as they come with example code for you to use and customize, do they? So what is this question asking for more ? Also note that global buttons don't quite have anything in common with the question you asked. I assume you want to see it as an implementation of the Forms toolbar that operates on the form or table the focus is in. This however does not work for the web as there is nothing that keeps track of which component has a focus and to what iterator (data block) it belongs. This would involve even more coding (though possibly doable)
Frank
Maybe you are looking for
-
How can I refer others to the search page in the iTunes bookstore that shows my books?
-
LINUX x86 32b vs Solaris 64b - 10.2.0.2 - advice
Soon I am going to have to make a recommendation to my management about whether or not we should migrate from out LINUX32b environment (Dell Poweredge) to Solaris 64b on a SUN server. We are running 10.2.0.2 on RHEL 4 - 32b hughmem kernel. The compan
-
Passing a large file through XI
Hi Experts, i have a query regarding the max size of CSV file that can be passed through my XI. 1) Can I pass a 2GB to 5 Gb file through my XI. If yes how? If no then why and what are the possible solutions?How much time it takes to pass the file on
-
About Local Calculations in query designer
Hello Gurus, please illustrate how to use following setting by example: 1. Calculate Result As. 2. Calculate Single Values As.. 3. Also Apply to Results. 4. Cumulative 5. Calculation Direction Many thanks, Frank
-
My tabs keep disappearing.
My last update was 4/21. Since then my tabs are disappearing from view when I open multiple pages. If I move my cursor to the top of the page, they reappear. I am wondering if this was part of the update? It temporarily allows you to view a bit more