Do you want to Search Something?

Those who opened the gates

Wednesday, February 29, 2012

Reading Input and Output of Vanilla Business Service and logging them.

Hello Everyone

Have you ever guessed what are the input and output property sets and methods called while a vanilla  business is executing....


well here is the step to log them in a readable and logical way...


for eg lets take the BS: Search External Service

Enter  the following lines of code in the declaration section.....

/*----------------------------This is the Declaration Section --------------------------------------------------*/
var OutPutFileName = 'C:\\SearchExternal_Dump.txt'; //Your fav Location and name:)
var IndentAmount = 2; // Indent child prop sets listing this many spaces // to the right for each level down for readability


Now comes our 2 handy function

1.LogMe ( writes down every input provided to a text file path declared in declaration)


2.DumpPropSets(Dumps the property sets)


Code of both these functions follows

1.LogMe Function

  // Writes what is feeded.

 function LogMe(LogThis)
{
  var MyFile = Clib.fopen(OutPutFileName, 'at');
  var sTime = Clib.ctime(Clib.time());
  sTime = sTime.replace('\n',' '); // Remove trailing Newline.
  Clib.fputs(sTime + ': ' + LogThis + '\n', MyFile);
  Clib.fclose(MyFile);
}


2.DumpPropSet Function

/*------Premjit Vidyadharan:Function to collect property sets and feed to LogMe for printing-*/
/*--------------------Print out the contents of a property set--------------------------------*/
function DumpPropSet(Inputs)
{   
 PSDepth++;
 var InpValue;
 var InpType;
 var InpChildCount;
 var inprop;
 var inpropval;
 var inpropcnt;
 var BlankLine = ' '; 
 /*--------------------------Build a string to indent the Listing------------------*/ 


 var IndentSpaces = ''; // [Number of spaces to indent to]
 for (var SpaceCount = 0; SpaceCount < IndentAmount * PSDepth; SpaceCount++)
 {
  IndentSpaces = IndentSpaces + ' ';
 }
 var IndentLevel = ToString(PSDepth);
 if (PSDepth < 10)
 {
  IndentLevel = '0' + IndentLevel;
 }
 // Indent by a number of indents, then level number as nn, then two spaces
 var Indent = IndentSpaces + IndentLevel + '  ';


 LogMe(BlankLine);
 LogMe(BlankLine);
 LogMe(Indent + '---- Starting a new property set ----');
 LogMe(BlankLine);




 // Now do main value and type


 InpValue = Inputs.GetValue();
 InpType  = Inputs.GetType();


 InpChildCount = Inputs.GetChildCount();
 LogMe(Indent + 'Value is ........ : "' + InpValue + '"');
 LogMe(Indent + 'Type is  ........ : "' + InpType + '"');
 LogMe(Indent + 'Child count ..... : ' + ToString(InpChildCount));


 // Dump the properties of this property set


 var PropCounter = 0;
 inprop = Inputs.GetFirstProperty();
 while (inprop != "")
 {
  PropCounter++;
  inpropval = Inputs.GetProperty(inprop);

  LogMe(BlankLine);
  var PropCountStr = ToString(PropCounter);
  if (PropCounter < 10)
  {
   PropCountStr = '0' + PropCountStr;
  }
  LogMe(Indent + 'Property ' + PropCountStr + '  name : "' + inprop + '"');
  LogMe(Indent + 'Property ' + PropCountStr + ' value : "' + inpropval + '"');
  inprop = Inputs.GetNextProperty();
 }//while (inprop != "") ends
 /*-----------------------------------Dump the children of this PropertySet-----------------------------*/
 if (InpChildCount == 0)
 {
  LogMe(BlankLine);
  LogMe(Indent + '(No children exist below this property set.)');
 }
 else 
 {
  for (var ChildNumber = 0; ChildNumber < InpChildCount; ChildNumber++)
  {
   LogMe(BlankLine);
   LogMe(Indent + 'Child Property Set ' + ToNumber(ChildNumber + 1) + ' of ' + ToNumber(InpChildCount) + ' follows below.');
   LogMe(Indent + 'This child is on level ' + ToNumber(PSDepth));
  
   // Recursive call for children, grandchildren, etc.
   DumpPropSet(Inputs.GetChild(ChildNumber));
  }
 }


 PSDepth--; // We are about to pop up a level
}




Now Call this functon at the evnt of your choice


eg given below


function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
{
    LogMe('---- Method Called PreInvoke ----'+ MethodName);
    LogMe('---- Method Called PreInvoke-----INPUTS ----'+ MethodName);
    LogMe(Inputs);
    LogMe('---- Method Called PreInvoke----- OUTPUTS ---'+ MethodName);   
    LogMe(Outputs);
    LogMe('---- PreInvoke Ends Here---------------------'+ MethodName);   
 return (ContinueOperation);
}

Below is the result which we get....A long story to read for the debuggers ot there

Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke ----GetParams
Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke-----INPUTS ----GetParams
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke----- OUTPUTS ---GetParams
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- PreInvoke Ends Here---------------------GetParams
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke ----GetParams
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke INPUTS ----------------------GetParams
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke OUTPUTS ---------------------GetParams
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Invoke Ends Here----------------------------------GetParams
Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke ----SetSamePage
Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke-----INPUTS ----SetSamePage
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke----- OUTPUTS ---SetSamePage
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- PreInvoke Ends Here---------------------SetSamePage
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke ----SetSamePage
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke INPUTS ----------------------SetSamePage
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke OUTPUTS ---------------------SetSamePage
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Invoke Ends Here----------------------------------SetSamePage
Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke ----FindOnly
Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke-----INPUTS ----FindOnly
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke----- OUTPUTS ---FindOnly
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- PreInvoke Ends Here---------------------FindOnly
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke ----FindOnly
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke INPUTS ----------------------FindOnly
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke OUTPUTS ---------------------FindOnly
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Invoke Ends Here----------------------------------FindOnly


Be sure to remove the code when u are done with the debugging.........


Enjoy!!!!!!!!!!!!!!!!

Wednesday, February 22, 2012

A faster way to Open Support Web :)

Friends

This might be known to many but still I would recommend to use

https://supporthtml.oracle.com/

This has got a cool loading time w.r.t the flash based one https://support.oracle.com/CSP/ui/flash.html

specially if you are on Android Cupcake v 1.5....errr sorry did i mention a very outdated OS...whel i am a victim.

Happy debugging!!!!!

Friday, February 17, 2012

Allow Object Locking for Projects in Siebel.


For each project you can specify whether or not developers are allowed to check out and check in individual objects within the project. To allow developers to check out and check in objects, you set the project's Allow Object Locking property to TRUE. To modify the Allow Object Locking property, you must use the SADMIN user ID to log in, and you must be logged into a server data source. You cannot set the Allow Object Locking property in your local repository.

To set the Allow Object Locking property
In the Object Explorer, choose Project.

In the Projects window, choose the desired Project object, then right-click and choose Toggle Allow Object Locking.

NOTE: You can only change the Allow Object Locking flag on the Server database using the SADMIN login ID.

Important:If a project has the Allow Object Locking configuration file parameter set to TRUE, and the user is logged in to the server using the SADMIN user ID, the Toggle Allow Object Locking menu option is enabled. When the SADMIN user chooses this option for a project that is already set to allow object locking, a check is performed to determine whether any objects are locked on the server within the project. If there are objects locked within the project, the system administrator receives an error message. If the project is locked on the server by someone else, the menu option for Toggle Allow Object Locking does not appear.

Tuesday, February 14, 2012

Setting The JVM Classpath and JVM DLL Name in Siebel


Parameter
Value
JVM Classpath
<SIEBSRVR_ROOT>/classes/Siebel.jar;<SIEBSRVR_ROOT>/classes/SiebelXMLP.jar;<SIEBSRVR_ROOT>/classes/wlfullclient.jar
where:
SIEBSRVR_ROOT is the actual path where the Siebel Server is installed.
NOTE:  For UNIX, replace <SIEBSRVR_ROOT> with ${SIEBEL_HOME}.

Alternatively, you can set the CLASSPATH using the Siebel Server Manager (srvrmgr program). For information about using the srvrmgr program to set the CLASSPATH, see Troubleshooting the CLASSPATH Settings Using Siebel Server Manager.

CAUTION:  An error might occur if the value of the CLASSPATH parameter is too long (must be less than 1024 characters). To avoid this, copy the CLASSPATH folder to the root directory, and then point CLASSPATH to this path.
JVM DLL Name
For AIX, Linux, and Oracle Solaris:
<path to libjvm.so_file>
For HP-UX:
<path to libjvm.sl_file>
For Windows:
<path to jvm.dll >
For example, c:\Program Files\Java\jdk1.6.0_xx\jre\client\bin\jvm.dll
NOTE:  For Windows, the path to the JVM DLL file is automatically read from the Windows registry setting of the JRE installed on the Siebel Server.
For more information on setting the values of the JVM DLL Name and JVM Options parameters, see Transports and Interfaces: Siebel Enterprise Application Integration.

Tuesday, February 7, 2012

Siebel CRM version 8.2.2

Siebel CRM version 8.2.2 Industry Target Guidance

Siebel CRM version 8.2.2 (SIA 8.2.2) delivers enhanced functionality in the areas of Public Sector; Loyalty for Travel, Transportation, Retail and Coalitions; and Financial Services for integration to Oracle FLEXCUBE Universal Banking.

SIA 8.2.2 is intended specifically for Public Sector; Loyalty for Travel, Transportation, Retail and Coalitions; and Financial Services for FLEXCUBE Universal Banking customers who want to integrate with Siebel.
Siebel CRM version 8.1.x (currently SIA 8.1.1.6) remains the primary code line for all other Siebel products. Innovations, enhancements and patches will be delivered on a priority basis to the base code line for the affected products. Customers should work with their account team to review any questions on appropriate code lines for their implementation.

The software packages released with Siebel CRM version 8.2.2 are the following:

  • Siebel Business Applications for Public Sector Media Pack for Microsoft Windows x64 (64-bit) - Oracle Software Delivery cloud part number B65190-01, software translations available as B65244-01.
  • Siebel Business Applications for Travel, Transportation, Retail and Coalitions Media Pack for Microsoft Windows x64 (64-bit) - Oracle Software Delivery cloud part number B65192-01, software translations available as B65247-01.
  • Siebel Business Applications for Financial Services Integration with FLEXCUBE Media Pack for Microsoft Windows x64 (64-bit) - Oracle Software Delivery cloud part number B65194-01, software translations available as B65241-01.

These software packages are only applicable to the specified industry groups. All other Siebel products will continue primary development on the SIA 8.1.x code line.

The Siebel code line was split to deliver significant enhancements to specific industries without disrupting other product areas. In the near future, the Siebel code lines will be merged allowing both 8.1.x and 8.2.x customers to continue with their implementations without significant migration costs.

Example Scenarios:

I am a Loyalty customer from Telco or Financial Services looking for the 'latest' Siebel Loyalty release, what should I do?
You should target Siebel Loyalty version SIA 8.1.x.

I am a Siebel Financial Services customer not implementing the Oracle FLEXCUBE Universal Banking integration, wanting to migrate to the latest Siebel CRM products, what should I do?
You should target Siebel Financial Services version SIA 8.1.x.

I am a Siebel 7.8x / 8.0x Public Sector customer looking for the 'latest' Siebel Public Sector release, what should I do?
You should target Siebel Public Sector version SIA 8.2.2.

All industries not specifically listed above can continue on the SIA 8.1.x code line with no need for upgrade to obtain innovations. More information is available in the 'Readme' files in the above listed SIA 8.2.2 media packages on the Oracle Software Delivery cloud and from your account representative.