Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!
-
Recent Posts
Recent Comments
Archives
Categories
Meta
Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!
World is changing, technology is changing which I grew up. World is getting smaller with Facebook , Twitter , FriendFeed and with others. Now people are following people that they want to know , making friends via facebook and twitting their opinions about everything. People are using these technologies.A quote from Social network ,It is like fashion and it will never die.
With the change of relationship of people with internet, world of e-commerce is changing too. Brands want to see what their customers want from them or to follow their customer problems, like Dell does.
After this introduction I want to explain How To Lose A Customer;
Yesterday my brother wanted to buy a couple of slippers, from Trendyol a private e-commerce from turkey, and he want me to send an invitation to him. I send an invitation to him via site.He waited to get his invitation for a half an hour. But there was nothing. When we bored to wait the invitation, I bought the slippers and send it to him. And interesting part is , invitation mails are came 3 hours later after we made our shop. 3 hours is a big time for me.During this 3 hours period I have gone to cinema and watched a movie.
The interesting part is after 12 hours later I have twitted about the situation there was nothing that company responded.I think they are in the weekend holiday and they will respond me tomorrow. But it is funny to waiting their twit or mail because I will never buy anything from them where anybody cares about the customer.
World is changing people are online 7/24 and they want to see the companies online too.I know that analyzing of social newtork is a new workaround for companies but it is not a monster to be afraid of.
And innovative companies are afraid of this new platforms, they are waiting someone to make something.A big part of them want to see the results of others but smart ones getting the big part of the pie. But smart ones know how to use it like Ramon De Leon does it.
Ps: This entry is not related the concept of my web site but I want to write about it, thanks for reading.
As we started to talk about BO SDK ,at here, today we will continue with writing simple code about administration on users and groups.
Today we will try to create user and groups. First of all we will login our an administrators group accout to BO platform with coding.After we will create a user and a group.
I want to start with coding on users and groups because generally in projects I allways encounter user synchronization problem.
That is,customers have a portal and user structure based on portal and they don’t want to control BO users one by one
for every operation done on portal side.They want an automatically working program that do synchronization
for them when an update occurs on portal users information.
Not: All this samples will be given in Java and Business Objects 3.1 version. You can imagine sub-titles as methods of Java class.
2.1 Login to BO
Doing all of these work we need a valid IEnterpriseSession. I recommend you to use Administrator account for
working on Users and Groups.
// General Attributes Of Class
private IEnterpriseSession enterpriseSession = null;
private IInfoStore infoStore = null;
/*
to get IEnterpriseSession this method is general process
this process will not be repeated next samples
*/
private void login() throws Exception
{
try{
System.out.println("BOProxy.java::login() started");
ISessionMgr sessionMgr = CrystalEnterprise.getSessionMgr();
/*Parameters
logon (
First Parameter : BO User Account ,
Second Parameter : Account Password,
Third Parameter : CMS Name,
Fourth Parameter : Login Type as you can use secEnterprise, secLDAP, secWinAD, secSAPR3
);
*/
enterpriseSession = sessionMgr.logon("Administrator", "", "CMSNAME", "secEnterprise");
infoStore = (IInfoStore) enterpriseSession.getService("InfoStore");
}catch(Exception e){
System.out.println("Exception "+e.getLocalizedMessage());
}
}
2.2 Creating Users
As you realized all of the process in Business Objects starts with a user which has rights.Today we
will try to create a user with simple properties.We will use IEnterpriseSession object from 2.1 .
/*
Creating User Process
*/
public void createUserProcess(){
try{
//This 4 line is standart procedure, this will give us an empty IInfoObject
IPluginMgr pluginMgr = infoStore.getPluginMgr();
IPluginInfo userPlugin = pluginMgr.getPluginInfo("CrystalEnterprise.User"); //$NON-NLS-1$
IInfoObjects newInfoObjects = infoStore.newInfoObjectCollection();
newInfoObjects.add (userPlugin);
//IInfoObject is basic object of the all BO objects
IInfoObject iObject = (IInfoObject) newInfoObjects.get(0);
//IUser extends IInfoObject. And below lines are special for IUser
IUser boUser = (IUser) iObject;
//Title means user account name as ID
boUser.setTitle ("demoUser");
boUser.setFullName("Demo User Account");
boUser.setEmailAddress("demo@sabrieker.com");
//Connection type with related your licence it can be IUser.NAMED or IUser.CONCURRENT
boUser.setConnection(IUser.NAMED);
//Password Properties
boUser.setNewPassword("Password");
boUser.setPasswordChangeAllowed(true);
boUser.setPasswordExpiryAllowed(true);
boUser.setPasswordToChangeAtNextLogon(true);
/*
For disabling user account you can use below lines
IUserAliases aliases = boUser.getAliases();
IUserAlias alias = (IUserAlias) aliases.toArray()[0];
alias.setDisabled(true);
*/
/*
After you have done your job with IUser object , you must commit IInfoObjects with IInfoStore.
You can't commit IInfoObject or IUser , you have to do it with IInfoObjects.
*/
infoStore.commit (newInfoObjects);
}catch(Exception e){
e.prinstacktrace();
}
}
2.3 Creating Groups
You will need groups to organize huge number of users or organize your rights with similar groups.It will give
you power of managing all right attending with a few clicks done on groups.
You can do right assignment based on users but it will probably confuse your works.
User Groups has two properties.First one is its ID ,its title, and second one is its description.
public void createGroup (){
IPluginMgr pluginMgr = infoStore.getPluginMgr();
IPluginInfo userGroupPlugin = pluginMgr.getPluginInfo("CrystalEnterprise.UserGroup");
IInfoObjects groupInfoObjects = infoStore.newInfoObjectCollection();
groupInfoObjects.add(userGroupPlugin);
IInfoObject iObject = (IInfoObject) groupInfoObjects.get(0);
IUserGroup group = (IUserGroup) iObject;
group.setTitle("demoGroup");
group.setDescription("Description About Group");
infoStore.commit (groupInfoObjects);
}
Next case we will be working on “demo” user and “demoGroup” group objects. We will get these objects from repository with using
IInfoStore object and a query. After we will make our user member of this group. See you
SAP Business Objects offers us a way to play with its repositories through Java or .Net. It is awesome when we need something that can not be done with InfoViewApp or other applications that BO presents.
With this feed I will try to give some samples about BO SDK. ( This samples and explanations are based on BO 3.1 version and Java)
1.1 IEnterpriseSession
First of all , if you are developing an application with BO SDK you need to know IEnterpriseSession object as a start point. This object lets you to ;
During login process you give a username from Business Objects Platform, like Administrator, and with this user’s rights you can do what you want. It means if you are using a user who has no right for opening Web Intelligence Document you can’t do it with your application. IEnterpriseSession object is also restricted as in InfoViewApp.
With these IEnterpriseSession object has a default token String object with this object you can login with other applications that are written with .Net . It is a application , programming language and application server free token.
If you can’t a get a valid IEnterpriseSession object you can’t do anything on BO Repository.
Sample Code :
ISessionMgr sessionMgr = CrystalEnterprise.getSessionMgr();
IEntepriseSession entSession = sessionMgr.logon(“USERNAME”,”PASSWORD”,”CMSNAME”,”secEnterprise”);
1.2 IInfoStore
In your application you will want to modify Folders, Web Intelligence or Desktop Intelligence Documents,Users ,Groups or Servers. For doing this you need to get The Object which is stored in the repository. For this you need to create a query which is executed by IInfoStore service. This service is taken from IEnterpriseSession object.
When you execute a query with IInfoStore it returns you a list of results as an instance of IInfoObjects. And you can use this IInfoObjects to get your object which leads IInfoObject.
IInfoObject is the basic class of all objects which are stored in repository.And with a query, like SELECT * FROM CI_INFOOBJECT , you can get objects from repository. And each object,like users,groups,documents , have basic properties like its name, parent folder id etc.
I will mention how to create queries for getting objects from BO Repository.
And here is the sample code that lets you to get IInfoStore object:
IInfoStore infoStore = (IInfoStore)entSession.getService(“InfoStore”);
1.3 ReportEngines
ReportEngines object gives you a DocumentInstance object which is saved to repository and filestore. This DocumentInstance object leads to your Desktop Intelligence and Web Intelligence Documents. You can work with this DocumentInstance object for your documents but you have to get this object from ReportEngines services.
Here is the sample code :
ReportEngines reportEngines = (ReportEngines) entSession.getService(“ReportEngines”);
This entry and following ones will be explain Rebean and Administation Libraries of Business Objects platform. These libraries lets you to work on ;
1.4 AdminTools
Business Objects default installation presents you web applications deployed on Tomcat.( It does not matter which application server, applications matter in this paragraph) In these web applications you can use InfoView and Central Management Console. And you can reach these with a link placed under the Start button. With these applications Business Objects deploy an extra application which is AdminTools that gives you an ability which can execute queries. You can reach this application with :
http://SERVERNAME:SERVERPORT/AdminTools link . Servername leads your tomcat servername and server port leads to your Tomcat server port.
With this application you can able to execute queries from your repository.
Some sample queries ;
SELECT * FROM CI_INFOOBJECTS ( with this query you can get all of your objects which can be seen under InfoView : Folders, Categories,Report Documents, Uploaded Documents)
SELECT * FROM CI_SYSTEMOBJECTS ( with this query you can get all of your system objects like users, groups,servers)
SELECT * FROM CI_APPOBJECTS ( with this query you can get universe object but not its metadata, for this you need to work with COM Sdk)
For general information of Business Objects SDK Libraries you can get from this link Business Objects SDK Libraries Overview
After a long delay, because of my laziness, i will be continuing to writing about Business Objects SDK and also I will try to share my Business Objects Web Intelligence lecture notes on R2 and XI 3.1 . It is new and good news for me to combine my SDK knowledge with WI reporting.
I will try to mention key points of reporting with my experiences during lectures and projects that I achieved.
I hope these notes, which will be written , will gives you hints about reporting .
PS: Also I will try to add new SDK feeds.
Keep connected
Hello everyone,
This Friday and Saturday I will give a lecture about Business Objects SDK for XI 3.1 . I prepared something but I have some concerns about talking about technical and teorical information. Code part is easy for me at least I think so. But teorical part , that is talking about IInfoObject , what it is and why we need it. Or what the inheritence is used and why. This part is a bit complicated to talk about. Because when you are coding, you are understanding the map from IInfoObject to IUser or IUserGroup object and you use it. But talking about it like lecturer in a class is a bit hard staff. Because everyone does not think like you so I need a simple way to explaing this objects.
I will see.
I will try to share documents with you.
Thanks.
sabri
In here for different view mode we have made some work . But in that case we had a simple problem when we try to get print-out.
Everything is awesome on the screen , we have all pages with page breaks. But when we want to print it out we saw that some piece of the report is missed. And it is not good .
But we have find a solution for it and it is very simple; setting media dpi for DocumentInstance. Really simple
For A4 we added
documentInstance.setMediaDPI(72);
this piece of code to the project and got the solution.
But I didn’t understand why this method is deprecated, it is interesting. If somebody knows anything let me know too.
Have a nice days fellows.
One of our customers wants to view reports same as they view in BO 6.5 version. In that version you can view all pages of one report in one page with page breaks. In BO 3.1 version you can not able to see that kind of view. You able to see in Draft mode, which do not put page breaks, Page mode , which you are not able to see whole report in one page, etc.
At starting we didn’t want to give a solution for this kind of problem because InfoView application is not producing any solution for this problem but when money talks we have to produce a solution.
In this entry I try to explain what we are doing and you can able to get code sample here
Hello everybody,
Nowadays I was facing resource problem of ReportEngines objects during the openDocument method of the ReportEngine object. It hangs tomcat.
In my project I was opening report in my context (In tomcat ) and getting prompt values from user after that I was submitting the report to AnalyticalReporting context to view report with Business Objects InfoView application.
During the context to context submitting I was not closing the ReportEngines object in my context. And after a while it consumes BO resources and it kept waiting during the openDocument method . For this problem I added
reportEngine.close()
method before submitting report to another context . It makes very big difference for Web Intelligence reports.
At the second context side you should get ReportEngines object from EnterpriseSession object not from session ,for AnalyticalReporting context. Because if you get ReportEngines object from session it may be show you wrong report startup view.
Keep in your mind ;
Allways close your ReportEngine object when your job finished
And always use your EnterpriseSession services , don’t take from session , if you are not sure.
Thanks.
I wish you Health…
So you may enjoy each day in comfort.
I wish you the Love of friends and family…
And Peace within your heart.
I wish you the Beauty of nature…
That you may enjoy the work of Allah.
I wish you Wisdom to choose priorities…
For those things that really matter in life.
I wish you Generousity so you may share…
All good things that come to you.
I wish you Happiness and Joy…
And Blessings for the New Year.
I wish you the best of everything…
That you so well deserve.
Finally ,I wish you less coding, getting more works
HAPPY NEW YEAR FELLOWS! (: