Monday, March 4, 2013

Oracle IPM: Customizing AXF Task Details page – Add new actions: Invoke Outcome


This blog guides you to add functionality to the existing composites. There are 3 different type of actions configurable with Oracle provided AP Solution Accelerator.

  • Invoke “outcome” of human task
  • Do validations, like Transaction id is blank.
  • Allow user to pick user/ Group from list.

The below description focuses on “invoke outcome”. Remaining type of actions and its details will follow on next blogs.

For each solution namespace (can be analogous to BPEL composite, most of the times) that you create, there is an AXF Tasklist page (url has “cmd=Start<SOLN_NAMESPACE>&sol=<SOLN_NAMESPACE>” – assuming that you have already made the database entries for Start<SOLUTION_NAMESPACE>. If not, do not worry, there will soon be another article explaining how to do that) where the end user is provided with the option to take any of the actions that you have configured in your BPEL Human Task. The AXF task list page for a particular Solution Namespace and Command Namespace provides you with all the instances of invoices currently under a particular view.



View Task opens the AXF Task Details page, which has some actions in the left side bar.



In case you want more flexibility with these actions, you need to do some data manipulations in the AXF Database, using the DEV_IPM schema.

Let us first look at the tables in this story:

     1.      AXF_ACTION_MENU


In this table, the entry for Solution_Namespace is made.
Menu_ID is auto incremented using a sequence (AXF_ACTION_MENU_SEQ).
Rest all the entries are to be done as they are for other rows.

     2.       AXF_ACTIONS


This table maps the actions displayed on the UI. For each action displayed on the UI, there is a corresponding COMMAND_NAMESPACE entry here in this table.

Action_ID is again auto incremented using the sequence AXF_ACTIONS_SEQ.
Display_Text is the label you want to give your action on the UI.
Menu_Order acts as a rendering switch – 0 means visible and other values means not rendered.
Menu_ID is the same as the one in the AXF_ACTION_MENU table, for the Solution_Namespace.

     3.       AXF_COMMANDS


In this table a command class is configured for your Solution Namespace and Command Namespace. Usually, it depends upon what your action actually does. For example, oracle.imaging.axf.commands.bpel.CompleteTaskCommand is used when the action signifies completion of a flow or a sub flow. oracle.imaging.axf.commands.bpel.OpenTaskCommand is used when a new flow is initiated. Here, for a new action, you will need the following entries:

SOLUTION_NAMESPACE
COMMAND_CLASS
COMMAND_NAMESPACE
<Your_Solution_Namespace>
oracle.imaging.axf.commands.bpel.AutotaskCommand
AutoOpenTask
<Your_Solution_Namespace>
oracle.imaging.axf.commands.bpel.ReleaseTaskCommand
CancelTask
<Your_Solution_Namespace>
oracle.imaging.axf.commands.bpel.CompleteTaskCommand
<Command Namespace you entered in AXF_ACTIONS>    
<Your_Solution_Namespace>
oracle.imaging.axf.commands.bpel.OpenTaskCommand
OpenTask
<Your_Solution_Namespace>
oracle.imaging.axf.commands.bpel.ReleaseTaskCommand
SkipTask




     4.       AXF_SOLUTIONS


AXF_SOLUTIONS consists of a SOLUTION_CONTEXT entry, which is usually the same for all the Solution Namespaces, namely, ejb.AxfCommandMediator#oracle.imaging.axf.service.AxfCommandMediatorRemote.

     5.       AXF_SOLUTION_PARAMETERS




This perhaps is the most important table because is maps the outcomes of various actions for consumption by either your BPEL process or by AXF internally. Let’s have a closer look at the values that need to be entered here, and what they represent.

For each Command Namespace (i.e. the action you want to add to the UI), there will be 3 entries, which will have the following values:



On the AXF Worklist page, there is an Auto Task button, clicking which open up all tasks in the list in serial order for appropriate actions to be taken by the user. The CMD_AUTOTASK_OFF parameter key’s value will redirect AXF view to the default starting point of your AXF flow in the case when the Auto Task function is not available to the user.

CMD_AUTOTASK_ON points to AutoOpenTask, which is nothing but another Command Namespace created as a part of the Start<Solution_Namespace> entries. The details for AutoOpenTask are as follows:



If you are creating a new composite and don’t have the Start<SolutionNamespace> entries in place, then you will have to do that first.

OUTCOME maps to the value which your BPEL flow is expecting as a return value from the Human Task in this case.

PS: Please note that you are not supposed to create the entries for AutoOpenTask as a part of this exercise. It is a separate topic, and will be addressed in another post.

    6.       AXF_SOLUTION_ATTRIBUTES


In this table, there are 3 entries that are required. There is a snapshot of the actual data below:

SOLUTION_NAMESPACE
PARAMETER_KEY
PARAMETER_VALUE
< SolutionNamespace>
BPEL_CONNECTION
SOA Server
< SolutionNamespace>
CONNECTION_PROVIDER
oracle.imaging.axf.servicemodules.bpel.workflow.AxfWorkflowServiceModule
< SolutionNamespace>
USE_AUTOTASK_LOCKING
FALSE

The keys CONNECTION_PROVIDER and USE_AUTOTASK_LOCKING are given the standard values, as in the snapshot. BPEL_CONNECTION is the name of the connection that is created for the SOA Server in IPM UI.

Once the entries are made using values that we are supposed to enter in various tables as described above, there is one final step that remains to be done for the changes to reflect on the AXF Task details page.

Open the IPM Drivers UI (http://<your_server_ip>:16000/imaging/faces/Driver.jspx). The page that looks like this:


Enter the Solution Namespace, Command Namespace (Remember, the Start<SolutionNamespace> command namespace. And yes, it is a Command Namespace, though it is never shown as an action on the Task details page!!!) and the user name.

Click on Execute Request.
Click on Clear Configuration Cache.
Click on Reset DMS Metrics.
Click on Execute Response. This shall open your AXF Tasklist page in a new tab, and you should be able to see the newly added action on the details page.

Thanks all for reading!

Wednesday, February 27, 2013

How To: Send a custom static value from Oracle Document Capture through Oracle Forms Recognition


Disclaimer: This article assumes some knowledge of Oracle Document Capture (ODC) and Oracle Forms Recognition (OFR). Also, dependency on the Oracle AP Solution Accelerator is expected as well.

This blog will provide an example of how to use the provided scan macro to set static values without any customizations to the macro.

This sample will use an ODC variable named 'Organization' to map to the OFR existing 'CompanyCode' header. Finally it will be exported in the OFR export .xml as the 'orgID' element.

Let's take a look at the process:

1.     Start by opening ODC as an admin user

2.     Open the macro management window by clicking System --> ManageMacros
a.      We'll assume the use of an ISIS-driver based scanner for this scenario
b.     Select the category of "Scan for ISIS"

3.     Using the AP Accelerator, there will be an existing macro named "OFR-Scan-ISIS-Macro"
a.      Select this macro, but do not open it
b.     Click on the 'Setup' button



4.     The setup configuration window will appear at this time



5.     Notice the "Default Values" field
a.      This is where we will place our static value
b.     NOTE: The 'Organization' variable must be an existing variable for the related file cabinet
                                                             i.      The file cabinet is associated with the scan profile, which leverages the macro opposed to the macro itself
6.     Enter the following into the Default Values: Organization=204
a.      Note that multiple values may be entered by comma separating the entries

7.     Now, the custom variable must be added to the output; this is done via filename naming syntax
a.      Open the File Cabinets
                                                             i.      The default accelerator file cabinet is "Invoices - OFR"
b.     Select the commit profile for your file cabinet
                                                             i.      The default accelerator commit profile is "OFR Commit"
                                                           ii.      It is a "Commit Text File" driver, which allows for the following configuration options
c.      Click the "Config..." button next to the commit driver
d.     In addition to the default configurations, add the following on the "Document File Naming" tab



e.      Make sure that the Organization is set in the "Selected Fields"
                                                             i.      For our example, we're using the third position
1.     This is needed for OFR input configuration
2.     Also make sure your field delimiter is changed from <space> to '_' as this is what OFR will be expecting by default
8.     At this point, an item run through the scan profile attached to the macro & file cabinet will output with the expected format
a.      e.g., 649_D6F37E2C17AE494D8DA87B991A25186F_204_04122012.tif

9.     Now the OFR configurations will take place
a.      This will consist of updating the .ini file to ensure the input and output options are mapped as expected

10. Configure the Import variable mapping
a.      Open OFR's project .ini file
b.     Locate the block of keys starting with: IMP_VL_
                                                             i.      Note that these are the values that are exposed by default
                                                           ii.      Tokenized values can be assigned to each of the IMP_VL_ keys
                                                        iii.      Again, the delimiter is the '_' field.
1.     Gotcha: You must make sure that no '_' are existing in the values or that could affect the tokenizing and parsing process
c.      Locate the IMP_VL_CompanyCode key
                                                             i.      This is the exposed key for the OFR Company Code variable
                                                           ii.      Update this entry to the following: IMP_VL_CompanyCode=COMPONENT3
1.     Recall that we used position #3 for the ODC Organization
d.     This completes the import mapping

11. Configure the Export variable mapping (.XML)
a.      Again, open the OFR's project .ini file (if not already open)
b.     Locate the block of keys starting with: EXP_VL
                                                             i.      These are the default exposed output variables
                                                           ii.      Values mapped to these keys are exported as xml elements
c.      Locate the EXP_VL_XMLHCCompanyCode key
                                                             i.      This is the exposed key for exporting the Header Company Code
                                                           ii.      Update this entry to the following:
EXP_VL_XMLHCCompanyCode=orgID
                                                        iii.      This will map the OFR Header Company Code to the output XML <orgID> value
12. Configure the Export variable mapping (.txt)
a.      And, again, open the OFR's project .ini file (if not already open)
b.     Locate the block of keys starting with: CSV_VL
                                                             i.      These are the default exposed configurations for create supplemental output files
                                                           ii.      There is a specific line format syntax that is configured to output the values
c.      Locate the CSV_VL_01_FormatLine1 key
                                                             i.      This is the exposed key to set the output syntax for this specific 'CSV' configuration
1.     Tip: CSV configurations do not require the output to be in csv format
                                                           ii.      Using the exposed variable, <%CCO>, will allow for the addition of the Header Company Code into the output.
d.     An example:
CSV_VL_01_FormatLine1=/oracle/<%TNM>|OFR|ManualEntry|<%CCO>|||<%INO>|<%TOT>


This wraps up the walkthrough. Thanks for reading!

Wednesday, February 13, 2013

Tip of the Day: Metadata-only Content Without Configuration

Just a quick tip pulled directly out of the product docs:


Tip:

You can check in a metadata placeholder without specifying a primary file by entering an invalid path in the Primary File field. For example, entering the word placeholder into the Primary File field creates a content item within Content Server with the specified metadata, but no indexed primary file. Placeholders are useful for initiating workflows or making metadata available for searching and discussion.


Note:

 If you are checking in a placeholder using Internet Explorer version 6.0 on the Windows XP operating system with Service Pack 2 installed, the path used in the Primary File field must be valid, but end with an invalid file. In the following example, c:/ is a valid drive, but placeholder is not a valid file:


c:/placeholder

If you do not specify a valid drive, an error message is displayed. Pretty clever way of forcing a meta-only content item without the configurations in place!

It's always worth reading the docs!

 -ryan

Friday, February 1, 2013

While You Were Sleeping -- New Oracle WebCenter-Imaging Patches

In the middle of the night, while you were sleeping, Oracle has released a couple of new patch sets for the WebCenter-Imaging product, version 11.1.1.6.0.  They are as follows with some details as to what they fix:

  • 16244026: IPM/AXF Patchset 10
    • Bug 16243790 - AXF EBS R12 adapter doesn't differentiate between balance segments and other types of segments.  This change also requires 16245122.
    • Bug 16051792 -The GetDocumentPermissions service is being called too many times (part 3 of a multi-part fix).
    • Bug 14822845 - When using the URL Tool, ExecuteSearch, the link generated by the eMail button on the search results screen givs the wrong results when executed.  This also affects Image Searching from PeopleSoft as this utilizies this URL tool.
    • Bug 14137629 - When creating a text annotation, the font is too small.  The default font will now be Arial, point size 12.
  • 16245122: EBS Patchset 3
    • Bug 16243790 - AXF EBS R12 adapter doesn't differentiate between balance segments and other types of segments.

Also, they have released the following patch for version 11.1.1.5.0:

  • 16262772: IPM/AXF Patchset 15
    • Bug 10271381 - Error on import application where it fails to import.
    • Bug 10644977 - An issue in AXF where the Auto Task mode fails when using the Enumeration Picker.
    • Bug 11663155 - Basic viewer can fail when attempting to render an image via URL without the size of the image in the URL.
    • Bug 11780032 - A SQL Syntax Error Exception is being recored sometimes when attempting to search by a Date field.
    • Bug 11893266 - The Goto Page Number box is empty when attempting to view 2 pdfs both of which are over 10 pages long and you are on the last page of the second one.
    • Bug 11934578 - Remove warning when attempting to work on a AXF project in JDeveloper.
    • Bug 11934646 - Remove the requirement of an Account Code when using EBS12 for Account Distribution
    • Bug 11934679 - Change the Segment Editor to initilize segments with default values.
    • Bug 11934687 - Chagne the Segment lookup to respect Segment Dependency models.

Have a good day!

Wednesday, January 16, 2013

Scanner Cleaning

Have you heard or said some of the following about your Images?
  • Why is there a streak in my document?
  • Why are there so many spots on my documents?
  • I keep getting double feeds for no apparent reason?
  • I’m missing pages from my scanning?
  • Why does this alarm keep going off on my scanner?
  • Unusual noises from the scanner?
Well, maybe you need to clean your scanner.  All scanners require cleaning whether they be high-speed production scanners or your Multi-Functional device on your desk.  Depending on the scan volume determines how often you should be cleaning it. Paper is atrocity dirty!  From the oils on your fingers to the fluff that comes off the paper to who knows what else gets on the paper.  All this gunk gets transferred to your scanner rollers, glass and guts.

Here are some general guidelines for performing scanner cleaning:
  • High-Volume scanning should be cleaned on a at least a daily basis
  • Medium-Volume scanning should be cleaned on a at least a weekly basis
  • Low-Volume (Desktop) should be cleaned on a at least a monthly basis
Every scanner should have major maintenance performed on a yearly basis.

You can get cleaning sheets (for rollers only), cleaning wipes, or cloth and cleaner fluid.  Either works, but the cleaning sheets are convenient but more expensive.   Before you clean, be sure of the following:
  • Do not clean a scanner that is hot!  Always clean a scanner before you start scanning for a day or after it’s cooled off. 
  • Unplug the scanner from the electrical socket.
The following areas should be cleaned:
  • All Rollers (top and bottom) (feed and exit)
  • All Glass surfaces (be sure to get the top and bottom glass surfaces for two-sided scanners)
  • Sheet Guides
  • Document Sensors
If you use cleaning sheets for the rollers, you will need to use two for cleaning the top and bottom rollers.         

And of course, this shows how not to clean a scanner: http://www.youtube.com/watch?v=D4HqI1s8Xgs
Be sure to consult your scanner’s user’s manuals for proper procedure for your scanner.  If you have misplaced your manual, you can get them from the scanner manufacture site on the web.  The following are the URL’s for some of the major scanner manufactures US support sites:

Friday, January 4, 2013

If a Tree Fell in the Woods, Would It Lose Its Metadata?


An under-emphasized feature in Content Server metadata is the use of a path analogy to hold meaningful data. 

Most implementations use Contribution Folders to provide a file system-like path to an item, when a path is needed.  What happens if a document really needs to exist on multiple paths?  Yes, you could create multiple copies of the document, and put a copy in in each folder, but that makes maintaining the content difficult.

To address this shortcoming, many implementations add additional metadata fields to hold data to emulate other paths.  Dependent choice lists (“DCLs”) are a popular way to sort and categorize this extra data, but even DCLs have a problem when a document needs multiple sets of data applied to it.  Eventually, a lot of extra metadata elements get introduced in the metadata model, often nearly identical to existing fields, resulting in confusion (“Which set of DCLs do I need to fill out to get the new HR policy to show up for both Minneapolis and San Francisco?”)
Content Server metadata fields can be configured to use “trees” to store various different path analogies.  This makes storing multiple paths very easy, with fewer overall fields than traditional DCLs. 
Let’s take a walk through the forest.
In this example, I’m using states and cities, although I can easily use other DCL/relational data.


·         Create a schema table called “tblStates” with two columns, “stateID” and “stateName”.  “stateID” will hold the two character state abbreviation, and “stateName” will hold the full name of the state (shown later).   Create a view in Configuration Manager that exposes all columns in the table as shown.  On the “Options” tab in the view, select the “Is Sorted on Database” option, and sort the view on the stateName column. 









·         Create a schema table called “tblCities” with three columns, “cityID”, “stateID” and “cityName”. “cityID” in this case holds the airport code for the city, “stateID” will hold the two character state abbreviation where the city is located, and “cityName” will hold the full name of the city.  Create a view in Configuration Manager that exposes all columns in the table as shown.  On the “Options” tab in the view, select the “Is Sorted on Database” option, and sort the view on the “cityName” column.







·         Create a relationship in Configuration Manager that ties the states table and the cities table on the “stateID” column in each table.



·         Now create a new “memo” metadata field in Configuration Manager, called “xStateCity”.  Make this field an option list.  When configuring the source of the option list, select “Use Tree”, then select the view of the state table,




then the relationship connecting the state and city views,





and finally, select the view with the city data, if it’s not already filled in by selecting the relationship.


·         
Check the two options at the bottom of the dialog that says “Show complete selection path” and “Store complete selection path”.  Use “/” as the path separator.


·        Now when viewing the checkin page, a “Select” button is displayed instead of a typical input field for the field xCityState.


·         Clicking the select button shows a popup as shown.


·         
Expanding each state shows the cities underneath.  Clicking the city adds the city as the selected option as shown.


·         Clicking OK populates the checkin page with the selected value.


·         If the field is configured as a multi-select option list, multiple cities can be selected as shown below.




·         The actual values are stored in a path analogy, i.e. “San Francisco” is stored as “CA/SFO”, so the entire value is actually stored as “CA/SFO, MN/MSP”, but San Francisco and Minneapolis are displayed. 
·         Any option displayed in the tree is a valid choice.  For example, to add a STATE, simply click on the state name, instead of the city.  This is very powerful in being able create flexible path analogies.
Hopefully, this example will let you see the forest of possibilities BECAUSE of the trees.

Thursday, January 3, 2013

How to Clean up Old RTS Instance and machine Name in OFR Runtime Service


Problem Statement:
OFR Runtime Service always saves the previously configured settings like Machine Name and RTS Instance Name
Sometimes the Batches cannot pick by Runtime Service and if we delete the previously configured Machine Name and RTS instance, though it is deleted, same machine name and RTS Instance appeared.
Solution:
 Use Following steps to delete the previously configured data-
Many times we want to create the RTS Instance and Machine Name but OFR Runtime Services fail to create that-(Example Image-Runtime Services fails to add RTS Instance and Machine Name)
        Go to Oracle Form Recognition (OFR) Installation file
For Windows 7- C:\Program Files (x86)\Oracle\Forms Recognition
For Windows XP- C:\Program Files \Oracle\Forms Recognition





Go to Bin Folder

   Go to Log Folder
     All Configured settings getting save in this folder

      Delete All Files so that previously configured settings are removed
Now we can configure new required RTS Instance and Machine Name






Currently Log Folder is empty as we removed all the configured files
Start Oracle Form Recognition (OFR) Monitor Service before creation of RTS Instance and Machine Name When we create Machine and RTS instance each time this Log file is populated



Log file is populated again
      Now we can capture Batches using Oracle Form Recognition (OFR) Runtime Service without any conflicts
Click Save Settings button when we want to save all the configured settings while closing OFR Runtime Service