RE: (forte-users) Posted Event Not Seen by EventLoop

Hi,
Event registration occurs when an event loop is activated. If your event
loop is activated before your SO is ready and registered (Init must be
finished) the event loop will be not registered for the event on your SO.
This is a typical example of race condition. A race condition may occur when
two or more processes execute simultaneously and the final result depends on
which process finishes first. Please redesign your project.
Regards,
Zenon Adamek
Purolator
-----Original Message-----
From: Denver Jobs [SMTP:fortejobsindenveryahoo.com]
Sent: Wednesday, June 14, 2000 2:48 PM
To: kamranaminyahoo.com
Subject: (forte-users) Posted Event Not Seen by Event Loop
I have two classes & an SO in a given project.
ManagerClass : object
InterfaceClass : object
ManagerSO : ManagerClass
ManagerClass has the attribute
theInterfaceClass : InterfaceClass
InterfaceClass has the attribute
theManagerClass : Manager Class
The ManagerClass Init method performs a new on
theInterfaceClass and then does a start task on a
method within theInterfaceClass which starts an
external connection listening on a port.
The method also sets theInterfaceClass.theManagerClass
to ManagerSO.
A method gets called in the ManagerClass which writes
to the external connection port within the
theInterfaceClass and then starts an event loop in the
ManagerClass to wait for notification.
When the started task for listening on the external
connection receives data, it calls a method within the
ClassManager - theClassManager.CallMethod(returndata);
The CallMethod actually posts an event within the
ClassManager which the event loop started earlier is
waiting on.
The event does get posted, however, the event loop
that was started never receives the event?!?!?
There are no lower level event loops that
should trap this event prior to this point.
The call to perform the "write" on the external
connection is done as a postregister in the event
loop, so that the event is registered before a post
for the event occurs.
Am I missing something here?
Thanks in advance for any light you might shed.
Yahoo! Photos -- now, 100 FREE prints!
http://photos.yahoo.com
For the archives, go to: http://lists.xpedior.com/forte-users and use
the login: forte and the password: archive. To unsubscribe, send in a new
email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com

Check if ManagerSO = ManagerSO.theInterfaceClass.theManagerClass
Why does InterfaceClass call a methon the the SO? Why doesn't it simply post
its own event, that the SO is registered for?
-----Original Message-----
From: Denver Jobs [SMTP:fortejobsindenveryahoo.com]
Sent: Wednesday, June 14, 2000 8:48 PM
To: kamranaminyahoo.com
Subject: (forte-users) Posted Event Not Seen by Event Loop
I have two classes & an SO in a given project.
ManagerClass : object
InterfaceClass : object
ManagerSO : ManagerClass
ManagerClass has the attribute
theInterfaceClass : InterfaceClass
InterfaceClass has the attribute
theManagerClass : Manager Class
The ManagerClass Init method performs a new on
theInterfaceClass and then does a start task on a
method within theInterfaceClass which starts an
external connection listening on a port.
The method also sets theInterfaceClass.theManagerClass
to ManagerSO.
A method gets called in the ManagerClass which writes
to the external connection port within the
theInterfaceClass and then starts an event loop in the
ManagerClass to wait for notification.
When the started task for listening on the external
connection receives data, it calls a method within the
ClassManager - theClassManager.CallMethod(returndata);
The CallMethod actually posts an event within the
ClassManager which the event loop started earlier is
waiting on.
The event does get posted, however, the event loop
that was started never receives the event?!?!?
There are no lower level event loops that
should trap this event prior to this point.
The call to perform the "write" on the external
connection is done as a postregister in the event
loop, so that the event is registered before a post
for the event occurs.
Am I missing something here?
Thanks in advance for any light you might shed.
Yahoo! Photos -- now, 100 FREE prints!
http://photos.yahoo.com
For the archives, go to: http://lists.xpedior.com/forte-users and use
the login: forte and the password: archive. To unsubscribe, send in a new
email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com

Similar Messages

  • Activex events not seen in Labview

    I have PC application which has a COM server interface included.
    I am able to connect to this successfully with labview for everything apart from events. When I try and connect to events it always comes back with error 95, event unknown. I have also tried the "list events descriptions" and that comes back empty.
    The COM server works fine when used with VB and C++ applications so I am guessing Labview is the problem.
    I am using a Automation Refnum control to access the COM server and this is working fine.
    Any suggestions why I can not see any events in Labview?
    (I am running Labview 6.0.2)

    Thanks for the reply. I just tried an evaluation copy of Labview 7.0 and managed to get it working with the new feature "Register Event Callback".
    I would still like to use Labview 6.0.2 if possible as I don't believe I will use most of the new features in Labview 7.0 and 7.1. Also we have alot of version 6 licenses that will cost alot of money to upgrade!
    Any suggestions how I can get 6.0 working with events?
    Thanks,
    Matthew

  • User decision option not seen to approver

    We have a user decision in our workflow template. We have decision option Select approver ,Sent back to AP ,Cancel . When some users execute the this task they were shown as decision decision and cancel. decision option text is not shown to them. This is happenng for few users only. not for all users. Please suggest what can be done to solve this issue

    Yaa Martin is right please check the Translations has been maintained for the Logon language in which the user is logging in. You can check the table entries of SWDSTEXT.
    Thanks
    Arghadip

  • RE: (forte-users) Forte not letting go of Oracle connections+ RE: (fort

    The bug was just reported yesterday so they might not have it available to
    the public for a while. I am guessing this bug has been around since 3.M.?
    and its very easy to verify it if its happening in your environment. Also I
    have been talking to other user that are not using Oracle (Sybase instead)
    who are also seen the same problem. I think this is a problem across all
    database because there is some fundamental event or process that is not
    taking place to close database connections. But just to be safe verify it
    in your test environment before moving to 3.5. To verify if its happening
    in your Forte version just create a small application that connects to the
    database and run it in debug mode. Log into the database and then stop the
    debug session. The connection will still be open. This will also occur
    when you use the running man or in a deployed application.
    ka
    -----Original Message-----
    From: Labeaux Schiek [mailto:DHSV017dhs.state.il.us]
    Sent: Thursday, March 01, 2001 7:21 AM
    To: kamran.aminlendware.com; Forte-userslists.xpedior.com
    Subject: RE: (forte-users) Forte not letting go of Oracle connections +
    RE: (forte-users) SQL Server Maximum DB Processes already allocated.
    Hi Kamran,
    I just looked up bug # 54610 in Cyber Support and it is not there yet, so a
    question.
    In your opinion, does this effect all databases? We are using DB2 and
    considering going to 3.5 . Are we going to see the same problems you have
    had with Oracle?
    -thanks
    -labeaux
    "Amin, Kamran" <kamran.aminlendware.com> 02/28/01 05:28PM >>>Update on my problem. Well now its everybody's problem. Forte has
    conformed the bug. Bug number 54610 for your reference.
    thanks to everybody for the help..
    ka
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com

    The bug was just reported yesterday so they might not have it available to
    the public for a while. I am guessing this bug has been around since 3.M.?
    and its very easy to verify it if its happening in your environment. Also I
    have been talking to other user that are not using Oracle (Sybase instead)
    who are also seen the same problem. I think this is a problem across all
    database because there is some fundamental event or process that is not
    taking place to close database connections. But just to be safe verify it
    in your test environment before moving to 3.5. To verify if its happening
    in your Forte version just create a small application that connects to the
    database and run it in debug mode. Log into the database and then stop the
    debug session. The connection will still be open. This will also occur
    when you use the running man or in a deployed application.
    ka
    -----Original Message-----
    From: Labeaux Schiek [mailto:DHSV017dhs.state.il.us]
    Sent: Thursday, March 01, 2001 7:21 AM
    To: kamran.aminlendware.com; Forte-userslists.xpedior.com
    Subject: RE: (forte-users) Forte not letting go of Oracle connections +
    RE: (forte-users) SQL Server Maximum DB Processes already allocated.
    Hi Kamran,
    I just looked up bug # 54610 in Cyber Support and it is not there yet, so a
    question.
    In your opinion, does this effect all databases? We are using DB2 and
    considering going to 3.5 . Are we going to see the same problems you have
    had with Oracle?
    -thanks
    -labeaux
    "Amin, Kamran" <kamran.aminlendware.com> 02/28/01 05:28PM >>>Update on my problem. Well now its everybody's problem. Forte has
    conformed the bug. Bug number 54610 for your reference.
    thanks to everybody for the help..
    ka
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com

  • RE: (forte-users) Confusion with return event

    Samer,
    The return event is delivered to the calling task, which is the window in
    your first test. It is not deliverd to the event loop of the service object
    unless the call to the processor originated in the event loop, which is the
    case in your second test. The output you get from the server is exactly as I
    would expect.
    You need the following code in you client:
    event loop
    postregister
    SomeService1.StartImmediate();
    when SomeService1.Proc.ProcessEvent_return do
    task.Part.Logmgr.Putline('ProcessEvents_return');
    when SomeService1.Proc.ProcessEvent_exception do
    task.Part.Logmgr.Putline('ProcessEvents_exception');
    end event;
    Note that this logoutput will not be written to a logfile, but will appear
    in the logwindow which is opened when you start a client application.
    Pascal Rottier
    Atos Origin Nederland (BAS/West End User Computing)
    Tel. +31 (0)10-2661223
    Fax. +31 (0)10-2661199
    E-mail: Pascal.Rottiernl.origin-it.com
    ++++++++++++++++++++++++++++
    Philip Morris (Afd. MIS)
    Tel. +31 (0)164-295149
    Fax. +31 (0)164-294444
    E-mail: Rottier.Pascalpmintl.ch
    -----Original Message-----
    From: Samer Kanjo [mailto:skanjoyahoo.com]
    Sent: Thursday, January 18, 2001 1:54 AM
    To: ForteUsers
    Subject: (forte-users) Confusion with return event
    I have observed some odd behavior when attempting to
    catch a return event for a method invoked using start
    task. I provided the primary classes I used during my
    test and some output produced by those classes at the
    bottom of this message.
    The SomeService1 class is used to create an
    environment visible service object and the Processor
    class is one of its members. The Processor class
    starts processing when one of two things happens: the
    SomeService1 timer ticks off 10 seconds or when
    SomeService1.StartImmediate is called directly by
    another entity. Either way StartImmediate is called to
    start processing.
    The provided output is the result of starting a test
    application and invoking StartImmediate from another
    object (I used a window) and then observing what
    happens when the timer ticks. As you can see the
    invocation from the window did not result in the
    return event being received. However, the return event
    was received when the timer ticked.
    According to the Forte documentation a return event
    will only be posted to the parent task's event queue.
    Since I am making a cross partition call, the window
    and service object are not really in the same task
    (Unless my assumption is wrong). That would explain
    why the window did not cause a return event to be
    generated but was an event generated but not caught
    and if so where did the event go?
    In SomeService2 class I added an event StartProcessing
    and moved the code from StartImmediate to the
    StartProcessing event case in the event loop and
    simply posted the StartProcessing event in
    StartImmediate. I performed the same test I used when
    testing SomeService1. The Traceback output is
    identical for the window invocation but the return
    event is received this time! Why?
    It seems that to guarantee the receipt of a return
    event an asynchronous task must be initiated from
    within an event loop. Is this correct?
    I do not understand this behavior does someone have
    any thoughts on this? How can you guarantee the
    receipt of a return event?
    Samer Kanjo
    OUTPUT FROM SOMESERVICE1
    StartTaskTest_cl0: processing loop listening
    StartTaskTest_cl0:
    Traceback:
    SomeService.StartImmediate at line 1
    TestWin.Display at line 4
    C++ Method(s)
    UserApp.Run at offset 105
    StartTaskTest_cl0:
    StartTaskTest_cl0: Start processing...
    StartTaskTest_cl0: Processing complete.
    StartTaskTest_cl0:
    Traceback:
    SomeService.StartImmediate at line 1
    SomeService.ProcessingLoop at line 9
    StartTaskTest_cl0:
    StartTaskTest_cl0: Start processing...
    StartTaskTest_cl0: Processing complete.
    StartTaskTest_cl0: ProcessEvents_return
    OUTPUT FROM SOMESERVICE2
    StartTaskTest_cl0: processing loop listening
    StartTaskTest_cl0:
    Traceback:
    SomeService2.StartImmediate at line 1
    TestWin.Display at line 4
    C++ Method(s)
    UserApp.Run at offset 105
    StartTaskTest_cl0:
    StartTaskTest_cl0: Start processing...
    StartTaskTest_cl0: Processing complete.
    StartTaskTest_cl0: ProcessEvents_return
    StartTaskTest_cl0:
    Traceback:
    SomeService2.StartImmediate at line 1
    SomeService2.ProcessingLoop at line 9
    StartTaskTest_cl0:
    StartTaskTest_cl0: Start processing...
    StartTaskTest_cl0: Processing complete.
    StartTaskTest_cl0: ProcessEvents_return
    SOMESERVICE1 CLASS
    begin CLASS;
    class SomeService1 inherits from Framework.Object
    has public attribute proc: StartTaskTest.Processor;
    has public attribute processing: Framework.boolean;
    has public method Init;
    has public method ProcessingLoop;
    has public method StartImmediate;
    has property
    shared=(allow=off, override=on);
    transactional=(allow=off, override=on);
    monitored=(allow=off, override=on);
    distributed=(allow=on, override=on, default=off);
    end class;
    method SomeService1.Init
    begin
    super.Init();
    processing = FALSE;
    proc = new;
    start task ProcessingLoop();
    end method;
    method SomeService1.ProcessingLoop
    begin
    timer : Timer = new;
    timer.tickInterval = 10000;
    event loop
    task.part.logmgr.putline('processing loop
    listening');
    timer.isActive = TRUE;
    when timer.tick do
    StartImmediate();
    when proc.ProcessEvents_return do
    task.part.logmgr.putline('ProcessEvents_return');
    processing = FALSE;
    when proc.ProcessEvents_exception do
    task.part.logmgr.putline('ProcessEvents_exception');
    processing = FALSE;
    when task.shutdown do
    exit;
    end event;
    end method;
    method SomeService1.StartImmediate
    begin
    task.part.logmgr.putline(task.traceBack());
    processing = TRUE;
    start task proc.ProcessEvents() where completion =
    event;
    end method;
    end CLASS;
    SOMESERVICE2 CLASS
    begin CLASS;
    class SomeService2 inherits from Framework.Object
    has public attribute proc: StartTaskTest.Processor;
    has public attribute processing: Framework.boolean;
    has public event StartProcessing;
    has public method Init;
    has public method ProcessingLoop;
    has public method StartImmediate;
    has property
    shared=(allow=off, override=on);
    transactional=(allow=off, override=on);
    monitored=(allow=off, override=on);
    distributed=(allow=on, override=on, default=off);
    end class;
    method SomeService2.Init
    begin
    super.Init();
    processing = FALSE;
    proc = new;
    start task ProcessingLoop();
    end method;
    method SomeService2.ProcessingLoop
    begin
    timer : Timer = new;
    timer.tickInterval = 10000;
    event loop
    task.part.logmgr.putline('processing loop
    listening');
    timer.isActive = TRUE;
    when timer.tick do
    StartImmediate();
    when self.StartProcessing do
    processing = TRUE;
    start task proc.ProcessEvents() where completion =
    event;
    when proc.ProcessEvents_return do
    task.part.logmgr.putline('ProcessEvents_return');
    processing = FALSE;
    when proc.ProcessEvents_exception do
    task.part.logmgr.putline('ProcessEvents_exception');
    processing = FALSE;
    when task.shutdown do
    exit;
    end event;
    end method;
    method SomeService2.StartImmediate
    begin
    task.part.logmgr.putline(task.traceBack());
    post StartProcessing;
    end method;
    end CLASS;
    PROCESSOR CLASS
    begin CLASS;
    class Processor inherits from Framework.Object
    has public method Init;
    has public method ProcessEvents where completion =
    (return = ProcessEvents_return, exception =
    ProcessEvents_exception);
    has property
    shared=(allow=off, override=on);
    transactional=(allow=off, override=on);
    monitored=(allow=off, override=on);
    distributed=(allow=off, override=on);
    end class;
    method Processor.Init
    begin
    super.Init();
    end method;
    method Processor.ProcessEvents
    begin
    task.part.logmgr.putline('Start processing...');
    task.Delay(msecs = 1500);
    task.part.logmgr.putline('Processing complete.');
    end method;
    end CLASS;
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com

    Yes, you're right. The return event is queued until the moment that you
    actually enter an eventloop. I stand corrected.
    Pascal Rottier
    Atos Origin Nederland (BAS/West End User Computing)
    Tel. +31 (0)10-2661223
    Fax. +31 (0)10-2661199
    E-mail: Pascal.Rottiernl.origin-it.com
    ++++++++++++++++++++++++++++
    Philip Morris (Afd. MIS)
    Tel. +31 (0)164-295149
    Fax. +31 (0)164-294444
    E-mail: Rottier.Pascalpmintl.ch
    -----Original Message-----
    From: Adamek, Zenon [mailto:ZAdamekpurolator.com]
    Sent: Thursday, January 18, 2001 6:13 PM
    To: Rottier, Pascal
    Cc: 'forte-userslists.xpedior.com'
    Subject: RE: (forte-users) Confusion with return event
    I think it is always safe to use start task with where complition = event
    clause before event loop. The reason is described in Forte Help in the
    Complition Clause index:
    "Requesting the return and exception events automatically registers the
    events for the calling task. When the asynchronous method completes or
    terminates, Fort&eacute; adds the appropriate event to the calling task's event
    queue.
    This registration is unlike the event registration for the event statement.
    In the event statement, the event is registered just before the event
    statement is ready to process the event. In the start task statement, the
    return and exception events are registered when the task is started, even
    though it can be much later on that your application is prepared to wait for
    those events. Therefore, only the "parent" task that executes the start task
    statement is registered for the completion event of the started task."
    and some comments from "Forte Performance and Patterns" page 18:
    "When you use the where completion = event clause in the start task
    statement, Forte automatically buffer the return event until you register
    for it. Therefore, you do not need to worry about the child task completing
    before you register for its return event".
    Regards,
    Zenon
    -----Original Message-----
    From: Rottier, Pascal [SMTP:Rottier.Pascalpmintl.ch]
    Sent: Thursday, January 18, 2001 11:16 AM
    To: 'Samer Kanjo'; ForteUsers
    Subject: RE: (forte-users) Confusion with return event
    Yes, if you want the eventloop of the service object to be informed when
    the
    method on the processor class is invoked, regardless of who invoked it,
    then
    you should simply post an event as the last statement inside the method on
    the processor class.
    The return events are only used to inform a partent task that a child-task
    has completed. So, only the calling task receives the event, only if the
    calling task is inside an event-loop at the moment the child-task
    terminates
    and only if there really is a child task (method started using "start task
    Note, that the calling task doesn't have to be inside an event loop when
    the
    asynchronous call is made. It has to be inside an eventloop when the
    asynchronous task terminates. The following piece of code works just as
    well:
    SomeService1.StartImmediate();
    self.DoSomeOtherStuff();
    event loop
    when SomeService1.Proc.ProcessEvent_return do
    task.Part.Logmgr.Putline('ProcessEvents_return');
    when SomeService1.Proc.ProcessEvent_exception do
    task.Part.Logmgr.Putline('ProcessEvents_exception');
    end event;
    However, if the asynchronous task started from within "StartImmediate"
    finishes before the client gets a chance to enter its event loop, then
    you're too late to catch the event. That's why it's safer to use the
    "postregister" function, which makes sure a certain action is not started
    untill all events from the event loop have been registered.
    Pascal Rottier
    Atos Origin Nederland (BAS/West End User Computing)
    Tel. +31 (0)10-2661223
    Fax. +31 (0)10-2661199
    E-mail: Pascal.Rottiernl.origin-it.com
    ++++++++++++++++++++++++++++
    Philip Morris (Afd. MIS)
    Tel. +31 (0)164-295149
    Fax. +31 (0)164-294444
    E-mail: Rottier.Pascalpmintl.ch
    -----Original Message-----
    From: Samer Kanjo [mailto:skanjoyahoo.com]
    Sent: Thursday, January 18, 2001 5:04 PM
    To: ForteUsers
    Subject: RE: (forte-users) Confusion with return event
    Pascal,
    So you are confirming that a return event can only be
    received in an event loop if a task is started from
    within that event loop.
    After making your proposed changes I was able to
    receive the return event in the window.
    I originally wanted the SomeService event loop to
    always receive the return event regardless of whether
    or not StartImmediate is called by some other entity
    or called when the timer ticks. It seems that the only
    way to do this is with events. Is that correct?
    Thank you for insight,
    Samer Kanjo
    --- "Rottier, Pascal" <Rottier.Pascalpmintl.ch>
    wrote:
    Samer,
    The return event is delivered to the calling task,
    which is the window in
    your first test. It is not deliverd to the event
    loop of the service object
    unless the call to the processor originated in the
    event loop, which is the
    case in your second test. The output you get from
    the server is exactly as I
    would expect.
    You need the following code in you client:
    event loop
    postregister
    SomeService1.StartImmediate();
    when SomeService1.Proc.ProcessEvent_return do
    task.Part.Logmgr.Putline('ProcessEvents_return');
    when SomeService1.Proc.ProcessEvent_exception do
    task.Part.Logmgr.Putline('ProcessEvents_exception');
    end event;
    Note that this logoutput will not be written to a
    logfile, but will appear
    in the logwindow which is opened when you start a
    client application.
    Pascal Rottier
    Atos Origin Nederland (BAS/West End User Computing)
    Tel. +31 (0)10-2661223
    Fax. +31 (0)10-2661199
    E-mail: Pascal.Rottiernl.origin-it.com
    ++++++++++++++++++++++++++++
    Philip Morris (Afd. MIS)
    Tel. +31 (0)164-295149
    Fax. +31 (0)164-294444
    E-mail: Rottier.Pascalpmintl.ch--
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com

  • RE: (forte-users) Events in Interface

    I know, I've implemented similar structures in other locations as well,
    always without problems. I've even recreated the whole interface, building
    it completely from dragging and dropping methods and events from the class
    to the interface. Then I did a force compile of the whole workspace. It
    still doesn't solve the problem. There must be some combination of things
    that were different in the other circumstances, but I don't seem to be able
    to find it. It's definately not an error in the code. There something wrong
    in Forte internally, but I don't know which combination of factors causes
    it.
    Pascal Rottier
    Atos Origin Nederland (BAS/West End User Computing)
    Tel. +31 (0)10-2661223
    Fax. +31 (0)10-2661199
    E-mail: Pascal.Rottiernl.origin-it.com
    ++++++++++++++++++++++++++++
    Philip Morris (Afd. MIS)
    Tel. +31 (0)164-295149
    Fax. +31 (0)164-294444
    E-mail: Rottier.Pascalpmintl.ch
    -----Original Message-----
    From: Moris_Mihaildis/AUST/CSCcsc.com
    [mailto:Moris_Mihaildis/AUST/CSCcsc.com]
    Sent: Tuesday, April 03, 2001 5:00 AM
    To: Rottier, Pascal
    Cc: forte-userslists.xpedior.com
    Subject: Re: (forte-users) Events in Interface
    FYI. We are using Forte 3.0.J.4 and NT4.0 SP6, and have had no problems
    implementing your pattern.
    There should be no need for a fix (cast). There is something wrong with
    your interface.
    Regards,
    Moris Mihailidis
    Consulting
    CSC
    Level 4, 570 St. Kilda Road, Melbourne VIC 3004
    Ph: 61-3-95364675 Fax: 61-3-95364633 Email: mmihailicsc.com.au
    "Rottier, Pascal" <Rottier.Pascalpmintl.ch> on 04/02/2001 09:52:46 PM
    To: "'Forte Users'" <forte-userslists.xpedior.com>
    cc:
    Subject: (forte-users) Events in Interface
    We have the following scenario:
    There is a Service Object that acts as a Facade (Facade pattern) for 3
    manager classes that implement some business functions. Each of these three
    managers are stored as private attributes on this Service Object.
    For the sake of flexibility, these three private attributes are defined by
    their Interface, not their class. When the Service Object opens an Event
    Loop and registers for the events of one of these interfaces, the whole
    partition crashes. Even when using the running man in the development
    workshop, the whole partition crashes. The only way to fix that is to cast
    the Interface to a class that implements the interface before registering
    for the event.
    I know it's possible to register for events using an Interface that
    contains
    these events, rather then a class that implements the events. Of course, at
    runtime you do need a real instance of a class that implements the
    interface, otherwise you get a NIL-exception.
    Does anyone have any experience registering for events from Interfaces? Are
    there unexpected circumstances where it should work semantically, but still
    causes Forte to crash. We're using Forte 3.j.1 on NT 4.0 SP 6.
    Any help is appreciated.
    Pascal Rottier
    Atos Origin Nederland (BAS/West End User Computing)
    Tel. +31 (0)10-2661223
    Fax. +31 (0)10-2661199
    E-mail: Pascal.Rottiernl.origin-it.com
    ++++++++++++++++++++++++++++
    Philip Morris (Afd. MIS)
    Tel. +31 (0)164-295149
    Fax. +31 (0)164-294444
    E-mail: Rottier.Pascalpmintl.ch
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com

    I know, I've implemented similar structures in other locations as well,
    always without problems. I've even recreated the whole interface, building
    it completely from dragging and dropping methods and events from the class
    to the interface. Then I did a force compile of the whole workspace. It
    still doesn't solve the problem. There must be some combination of things
    that were different in the other circumstances, but I don't seem to be able
    to find it. It's definately not an error in the code. There something wrong
    in Forte internally, but I don't know which combination of factors causes
    it.
    Pascal Rottier
    Atos Origin Nederland (BAS/West End User Computing)
    Tel. +31 (0)10-2661223
    Fax. +31 (0)10-2661199
    E-mail: Pascal.Rottiernl.origin-it.com
    ++++++++++++++++++++++++++++
    Philip Morris (Afd. MIS)
    Tel. +31 (0)164-295149
    Fax. +31 (0)164-294444
    E-mail: Rottier.Pascalpmintl.ch
    -----Original Message-----
    From: Moris_Mihaildis/AUST/CSCcsc.com
    [mailto:Moris_Mihaildis/AUST/CSCcsc.com]
    Sent: Tuesday, April 03, 2001 5:00 AM
    To: Rottier, Pascal
    Cc: forte-userslists.xpedior.com
    Subject: Re: (forte-users) Events in Interface
    FYI. We are using Forte 3.0.J.4 and NT4.0 SP6, and have had no problems
    implementing your pattern.
    There should be no need for a fix (cast). There is something wrong with
    your interface.
    Regards,
    Moris Mihailidis
    Consulting
    CSC
    Level 4, 570 St. Kilda Road, Melbourne VIC 3004
    Ph: 61-3-95364675 Fax: 61-3-95364633 Email: mmihailicsc.com.au
    "Rottier, Pascal" <Rottier.Pascalpmintl.ch> on 04/02/2001 09:52:46 PM
    To: "'Forte Users'" <forte-userslists.xpedior.com>
    cc:
    Subject: (forte-users) Events in Interface
    We have the following scenario:
    There is a Service Object that acts as a Facade (Facade pattern) for 3
    manager classes that implement some business functions. Each of these three
    managers are stored as private attributes on this Service Object.
    For the sake of flexibility, these three private attributes are defined by
    their Interface, not their class. When the Service Object opens an Event
    Loop and registers for the events of one of these interfaces, the whole
    partition crashes. Even when using the running man in the development
    workshop, the whole partition crashes. The only way to fix that is to cast
    the Interface to a class that implements the interface before registering
    for the event.
    I know it's possible to register for events using an Interface that
    contains
    these events, rather then a class that implements the events. Of course, at
    runtime you do need a real instance of a class that implements the
    interface, otherwise you get a NIL-exception.
    Does anyone have any experience registering for events from Interfaces? Are
    there unexpected circumstances where it should work semantically, but still
    causes Forte to crash. We're using Forte 3.j.1 on NT 4.0 SP 6.
    Any help is appreciated.
    Pascal Rottier
    Atos Origin Nederland (BAS/West End User Computing)
    Tel. +31 (0)10-2661223
    Fax. +31 (0)10-2661199
    E-mail: Pascal.Rottiernl.origin-it.com
    ++++++++++++++++++++++++++++
    Philip Morris (Afd. MIS)
    Tel. +31 (0)164-295149
    Fax. +31 (0)164-294444
    E-mail: Rottier.Pascalpmintl.ch
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com

  • Re: (forte-users) (UPDATE) Forte not letting go of Oracleconnections

    All,
    I have been communicating with Forte regarding this
    issue. I was informed that a fix for this bug will be
    released in SP2 tentatively due at the end of May.
    Forte also confirmed that the bug was introduced in
    3.5 and exists in 3.5.1.
    Samer Kanjo
    --- Joseph Mirwald <jomirweb.de> wrote:
    Hello all,
    some time ago we talked about the problem, that some
    DBSession-connects hang
    if the partition where the DBSessionSO is used goes
    down.
    Ok, there may be some problems with forte or the
    Database (TWO_TASK, and so
    on).
    Does anybody implement a DBSession.Disconnect() when
    partition goes down?
    I mean the partition exits by a kill or by escript
    or econsole, not by a
    Forte-Method call
    of somewhere else.
    I thought the solution must be a loop which
    registers for the
    task.Shutdown-event, but at
    the init-method I couldn't stay in a loop and wait,
    because i has to call
    the service-objects
    methods. Another solution may be a 'start task
    LoopMethod()' which are
    registers the
    event, but i don't try it now, because i don't know
    the side-effects
    because the thread calls
    a method of the 'mother-process' which goes down
    also.
    What is your solution or idea?
    Joseph Mirwald
    GERMANY
    For the archives, go to:
    http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To
    unsubscribe, send in a new
    email the word: 'Unsubscribe' to:
    forte-users-requestlists.xpedior.com

    All,
    I have been communicating with Forte regarding this
    issue. I was informed that a fix for this bug will be
    released in SP2 tentatively due at the end of May.
    Forte also confirmed that the bug was introduced in
    3.5 and exists in 3.5.1.
    Samer Kanjo
    --- Joseph Mirwald <jomirweb.de> wrote:
    Hello all,
    some time ago we talked about the problem, that some
    DBSession-connects hang
    if the partition where the DBSessionSO is used goes
    down.
    Ok, there may be some problems with forte or the
    Database (TWO_TASK, and so
    on).
    Does anybody implement a DBSession.Disconnect() when
    partition goes down?
    I mean the partition exits by a kill or by escript
    or econsole, not by a
    Forte-Method call
    of somewhere else.
    I thought the solution must be a loop which
    registers for the
    task.Shutdown-event, but at
    the init-method I couldn't stay in a loop and wait,
    because i has to call
    the service-objects
    methods. Another solution may be a 'start task
    LoopMethod()' which are
    registers the
    event, but i don't try it now, because i don't know
    the side-effects
    because the thread calls
    a method of the 'mother-process' which goes down
    also.
    What is your solution or idea?
    Joseph Mirwald
    GERMANY
    For the archives, go to:
    http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To
    unsubscribe, send in a new
    email the word: 'Unsubscribe' to:
    forte-users-requestlists.xpedior.com

  • RE: (forte-users) Forte not letting go of Oracleconnections

    Hello Amin, Samer and David,
    thank you for your fast reply.
    The technical support in Germany give at least a good idea to prevent the
    problem in future:
    Available at Forte 3.5 and above
    ER #35575 : user wants TOOL code to detect partition
    shutdown and time to do something
    Add a new interface, AtExitHandler, to Framework, with just one
    method: RunAtExit();
    Add a new method to Partition:
    AtExit(AtExitHandler);
    At shutdown time, managed partitions will call RunAtExit on all
    registered AtExitHandlers in the same sequence that they called
    AtExit on the partition.
    This activity takes place synchronously before we start tearing the
    partition apart, with the partition explicitly set by the active part
    agent to the one we are supposed to be shutting down, so it should be
    pretty safe for the user to run any code he likes.
    We will catch and display any exceptions produced by the callbacks,
    so that errors don't keep shutdown from proceeding (it is still possible
    for the user to write code that hangs and blocks shutdown that way,
    but I don't know what we could do about that besides getting into
    timeouts etc.).
    I think it is always a good idea to disconnect the DB-Session because you
    do it with
    most other tools from Database automatically, so why don't do it generally
    by use of
    a programming-language?!?
    I try this feature in any case.
    Thanks for all who answered to this message
    Joseph Mirwald
    GERMANY
    At 17:13 13.03.01 -0500, Amin, Kamran wrote:
    That was the initial problem. Forte as logged a bug on this issue and
    hopefully fix it soon.
    Look for bug# 54610.
    -----Original Message-----
    From: Joseph Mirwald [mailto:jomirweb.de]
    Sent: Tuesday, March 13, 2001 4:12 PM
    To: Forte Users
    Subject: (forte-users) Forte not letting go of Oracle connections
    Hello all,
    some time ago we talked about the problem, that some DBSession-connects hang
    if the partition where the DBSessionSO is used goes down.
    Ok, there may be some problems with forte or the Database (TWO_TASK, and so
    on).
    Does anybody implement a DBSession.Disconnect() when partition goes down?
    I mean the partition exits by a kill or by escript or econsole, not by a
    Forte-Method call
    of somewhere else.
    I thought the solution must be a loop which registers for the
    task.Shutdown-event, but at
    the init-method I couldn't stay in a loop and wait, because i has to call
    the service-objects
    methods. Another solution may be a 'start task LoopMethod()' which are
    registers the
    event, but i don't try it now, because i don't know the side-effects
    because the thread calls
    a method of the 'mother-process' which goes down also.
    What is your solution or idea?
    Joseph Mirwald
    GERMANY
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com

    Hello Amin, Samer and David,
    thank you for your fast reply.
    The technical support in Germany give at least a good idea to prevent the
    problem in future:
    Available at Forte 3.5 and above
    ER #35575 : user wants TOOL code to detect partition
    shutdown and time to do something
    Add a new interface, AtExitHandler, to Framework, with just one
    method: RunAtExit();
    Add a new method to Partition:
    AtExit(AtExitHandler);
    At shutdown time, managed partitions will call RunAtExit on all
    registered AtExitHandlers in the same sequence that they called
    AtExit on the partition.
    This activity takes place synchronously before we start tearing the
    partition apart, with the partition explicitly set by the active part
    agent to the one we are supposed to be shutting down, so it should be
    pretty safe for the user to run any code he likes.
    We will catch and display any exceptions produced by the callbacks,
    so that errors don't keep shutdown from proceeding (it is still possible
    for the user to write code that hangs and blocks shutdown that way,
    but I don't know what we could do about that besides getting into
    timeouts etc.).
    I think it is always a good idea to disconnect the DB-Session because you
    do it with
    most other tools from Database automatically, so why don't do it generally
    by use of
    a programming-language?!?
    I try this feature in any case.
    Thanks for all who answered to this message
    Joseph Mirwald
    GERMANY
    At 17:13 13.03.01 -0500, Amin, Kamran wrote:
    That was the initial problem. Forte as logged a bug on this issue and
    hopefully fix it soon.
    Look for bug# 54610.
    -----Original Message-----
    From: Joseph Mirwald [mailto:jomirweb.de]
    Sent: Tuesday, March 13, 2001 4:12 PM
    To: Forte Users
    Subject: (forte-users) Forte not letting go of Oracle connections
    Hello all,
    some time ago we talked about the problem, that some DBSession-connects hang
    if the partition where the DBSessionSO is used goes down.
    Ok, there may be some problems with forte or the Database (TWO_TASK, and so
    on).
    Does anybody implement a DBSession.Disconnect() when partition goes down?
    I mean the partition exits by a kill or by escript or econsole, not by a
    Forte-Method call
    of somewhere else.
    I thought the solution must be a loop which registers for the
    task.Shutdown-event, but at
    the init-method I couldn't stay in a loop and wait, because i has to call
    the service-objects
    methods. Another solution may be a 'start task LoopMethod()' which are
    registers the
    event, but i don't try it now, because i don't know the side-effects
    because the thread calls
    a method of the 'mother-process' which goes down also.
    What is your solution or idea?
    Joseph Mirwald
    GERMANY
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com

  • All day calendar events not being displayed in the notification centre for iphone 5 post ios 7 upgrade. Please help. Is it a bug?

    All day calendar events not being displayed in the notification centre for iphone 5 post ios 7 upgrade. Please help. Is it a bug?
    With iOS 6, the all day events showed up in the notification centre but it lacks in the upgrade iOS 7.

    Same problem here. Some people pointed out that all-day events do show up in their notification center, but that seems only to be the case for birthdays (and only as text like the weather). I've tried it myself on my iPhone and iPad and it did work for birthdays but not for any other all-day events. I already sent this to Apple as a product feedback as well, as should everyone of you. The more people mention it, the faster Apple's going to fix this issue. In its current state, notification center is not a very helpful feature in my opinion. There's absolutely no point in not showing all-day events in the 'today' calendar overview.
    Here's a link to the product feedback page: http://www.apple.com/feedback/
    I posted my message in the iPhone section since I couldn't find a page specifically dedicated to iOS 7.
    I really love the look &amp; feel of iOS 7 but it's kinda sad to see notification center not tapping its full potential.
    Cheers!

  • I have migrated a user's mysite in sharepoint 2013 from one domain to another.The issue is that old activtiy data i.e newsfeed data is not seen

    For eg :
    I had a user called domain1\user1 whose mysite was created as http://my/personal/user1.
    Now this user moves to another domain say domain2\user1.Since mysite is already present no new mysite will be created.
    Move-SPUser –Identity "domain1\user1" –NewAlias "domain2\user1"After executing the above query,user is migrated and is able to login to the mysite.But the newsfeed data is not seen.I can see it in the microfeed list but not in the newsfeed page.All other data like documents ,tags,people etc is present
    harsh damania

    it should move all the profile data alonwith, i would check the ULS logs for any clue.
    also make sure following timer jobs ran successfully
    User Profile service application name - User Profile to SharePoint Quick Synchronization
    User Profile service application name - Feed Cache Repopulation
    User Profile service application name - Activity Feed Job
    Please remember to mark your question as answered &Vote helpful,if this solves/helps your problem. ****************************************************************************************** Thanks -WS MCITP(SharePoint 2010, 2013) Blog: http://wscheema.com/blog

  • Events in USER objects type not getting triggered in PFCG

    Hi,
    We need to send some notifications to the concern person at the time of assiging roles to the user . There is an object type USER and has events like created,cloned, deleted, roles_changed. But these events not getting triggered.
    I need to trigger the workflow. How do we activate the events as the entry doesnot exits in SWE2 tooo . Is ther any other way?

    HI munish
    If the entry is not in swe2 Put the entry for the business object USER and use the receiver type as your workflow number.
    Regards
    vijay

  • I'm having problems with iPhoto and the facebook set-up.  Every time I attempt to do so it says an error has occured and try again later.  I have not seen a solution posted.  Therefore, how does one contact Apple to solve the problem?  I'm new to the worl

    I'm having problems with iPhoto and the facebook set-up.  Every time I attempt to do so it says an error has occured and try again later.  I have not seen a solution posted.  Therefore, how does one contact Apple to solve the problem?  I'm new to the world of iMac but I find it a bit frustrating trying to solve basic issues/problems:(

    For what it's worth, you posted this in 2011, and here in 2014 I am still having this same issue. Over the last two days, I have had to unlock my apple account 8 times. I didn't get any new devices. I haven't initiated a password reset. I didn't forget my password. I set up two factor authentication and have been able to do the unlocking with the key and using a code sent to one of my devices. 
    That all works.
    It's this having to unlock my account every time I go to use any of my devices. And I have many: iMac, iPad, iPad2, iPad mini, iPhone 5s, iPod touch (daughter), and my old iPhone 4 being used as an ipod touch now.  They are all synced, and all was working just fine.
    I have initiated an incident with Apple (again) but I know they are just going to suggest I change my Apple ID. It's a simple one, and one that I am sure others think is theirs. I don't want to change it. I shouldn't have to. Apple should be able to tell me who is trying to use it, or at least from where.
    Thanks for listening,
    Melissa

  • RE: (forte-users) Call to the load-balanced SO not throughrouter

    We never call an SO from within an SO. Instead we do the following :
    MySO is mapped to MySOclass.
    MySOclass is a facade which has an attribute for every Policy Manager
    related to this SO.
    Each Policy manager is instanciated in MySOclass.
    Each Policy manager has an attribute called Parent.
    Parent is defined by MySOclass to be self.
    If two Policy managers need to work together we invoke methods via the
    parent attribute :
    Example
    I have a partition for Enrolments.
    It has three Policy Managers within it
    a Students Policy Manager (with a Add, Delete, Get methods)
    a Courses Policy Manager (with a Add, Delete, Get methods).
    an Enrolments Policy Manager (with a Add, Delete, Get methods).
    To enable this partition we have defined :
    EnrolmentsSO (environment visible, message duration) with the EnrolmentsMgr
    class as its related class.
    The EnrolmentsMgr class has the following methods and attributes :
    Methods :
    AddStudent
    AddCourse
    AddEnrolment
    GetStudent
    GetCourse
    GetEnrolment
    DeleteStudent
    DeleteCourse
    DeleteEnrolment
    All of these methods do a one line return statement, simply passing the
    method invocation to
    the appropriate Policy Manager. For example AddStudent would say
    Return theStudentPM.AddStudent(pInStudentParams : pInStudentParams)
    : pOutStudentParams
    In the Init method for the EnrolmentsMgr we instanciate the following
    attributes :
    theStudentPM (which is typed to the StudentPM class)
    theCoursePM (which is typed to the CoursePM class)
    theEnrolmentsPM (which is typed to the EnrolmentsPM class)
    Also in the Init method we set an attribute (called parent) on each
    PM to the value of Self.
    Then when one PM needs to invoke a method on another PM we simply do :
    For example in the theEnrolmentPM.GetEnrolment method we need to get
    Students and Courses
    thus we code :
    Parent.GetStudent(pInStudentParams = pInStudentParams) : pOutStudentParams
    Parent.GetCourse((pInCourseParams = pOutStudentParams.CourseStuff) :
    pOutCourseParams
    Build Enrol details based on student / course stuff.
    Return EnrolmentParams.
    Hope this makes sense.
    Regards,
    Chris Will, Dept. of Educ. Training, ITB, Sydney, Australia
    -----Original Message-----
    From: Peter Sham [mailto:[email protected]]
    Sent: Friday, 8 October 1999 9:35
    To: [email protected]; [email protected]
    Subject: Re: (forte-users) Replicating the PersistenceMgrSO
    Hi,
    Whenever you make a call to your load-balanced SO, it
    would go through the router. That is what I
    understand. No matter you make the call from inside
    or outside the SO.
    Secondly, you can turn on the "fail-over" option of a
    router but not load-balanced it. On these routers,
    you can check their instruments to see which one is
    really running.
    Hope this help.
    Regards,
    Peter Sham.

    We never call an SO from within an SO. Instead we do the following :
    MySO is mapped to MySOclass.
    MySOclass is a facade which has an attribute for every Policy Manager
    related to this SO.
    Each Policy manager is instanciated in MySOclass.
    Each Policy manager has an attribute called Parent.
    Parent is defined by MySOclass to be self.
    If two Policy managers need to work together we invoke methods via the
    parent attribute :
    Example
    I have a partition for Enrolments.
    It has three Policy Managers within it
    a Students Policy Manager (with a Add, Delete, Get methods)
    a Courses Policy Manager (with a Add, Delete, Get methods).
    an Enrolments Policy Manager (with a Add, Delete, Get methods).
    To enable this partition we have defined :
    EnrolmentsSO (environment visible, message duration) with the EnrolmentsMgr
    class as its related class.
    The EnrolmentsMgr class has the following methods and attributes :
    Methods :
    AddStudent
    AddCourse
    AddEnrolment
    GetStudent
    GetCourse
    GetEnrolment
    DeleteStudent
    DeleteCourse
    DeleteEnrolment
    All of these methods do a one line return statement, simply passing the
    method invocation to
    the appropriate Policy Manager. For example AddStudent would say
    Return theStudentPM.AddStudent(pInStudentParams : pInStudentParams)
    : pOutStudentParams
    In the Init method for the EnrolmentsMgr we instanciate the following
    attributes :
    theStudentPM (which is typed to the StudentPM class)
    theCoursePM (which is typed to the CoursePM class)
    theEnrolmentsPM (which is typed to the EnrolmentsPM class)
    Also in the Init method we set an attribute (called parent) on each
    PM to the value of Self.
    Then when one PM needs to invoke a method on another PM we simply do :
    For example in the theEnrolmentPM.GetEnrolment method we need to get
    Students and Courses
    thus we code :
    Parent.GetStudent(pInStudentParams = pInStudentParams) : pOutStudentParams
    Parent.GetCourse((pInCourseParams = pOutStudentParams.CourseStuff) :
    pOutCourseParams
    Build Enrol details based on student / course stuff.
    Return EnrolmentParams.
    Hope this makes sense.
    Regards,
    Chris Will, Dept. of Educ. Training, ITB, Sydney, Australia
    -----Original Message-----
    From: Peter Sham [mailto:[email protected]]
    Sent: Friday, 8 October 1999 9:35
    To: [email protected]; [email protected]
    Subject: Re: (forte-users) Replicating the PersistenceMgrSO
    Hi,
    Whenever you make a call to your load-balanced SO, it
    would go through the router. That is what I
    understand. No matter you make the call from inside
    or outside the SO.
    Secondly, you can turn on the "fail-over" option of a
    router but not load-balanced it. On these routers,
    you can check their instruments to see which one is
    really running.
    Hope this help.
    Regards,
    Peter Sham.

  • Event not getting triggered for a few users in production

    Hi Experts!!
    We have a workflow that gets triggered on the event REQUESTCREATED of BUS2089. In production, we see that for a few users the event is getting triggered and even the workflow is. But for a few users, the workflow is not getting triggered. However, we didn't check SWEQADM yet and are waiting to get auth to check the same. But before that, I need your valuable suggestions on this.
    When I check SWEL, I cannot see any entries at all. Not even for the successfully processed ones.
    Auth objects cannot be a reason, as all the users have same auth. Please suggest me on what else can be the reasons.
    Your help is highly appreciable.

    Hello Srinivas !
                  Check in SWEQADM to know whether the event is on queue.If so, redeliver it.
                  If there is no event on queue, check the RFC queue( transaction SWU2 ) and ST22 for possible ABAP dumps.
                  Call work item list report (transaction SWI1) and check event linkages (transaction SWETYPV )of the users for whom the event is not triggered.Are you using BAdI or user- exit to trigger the workflow ? If so, check whether those are in active state.
                 Refresh the workflow buffers(transaction SWU_OBUF).Check either of the workflow versions are in active state.
    Regards,
    S.Suresh

  • Workitem not seen in inbox but event is triggered in transaction SWEL.

    Hi,
    I have created a workflow to create and display a material master using transaction MM01.
    My event (created) is getting triggerd when I am creating a material but the same is not seen in my business Workplace.
    In display event trace i am able to trace my event and the corresponding workflow.
    My business object is BUS1001006.
    I am creating a material from MM01 and the workitem is not seen in the inbox.
    Can you provide solution for this?
    Nitya

    Hi,
    In workflow log  you have option to see the agent list for the workitem.
    1.check possible agent for task of that workitem.
    2.check the resposble agent for the task of that workitem.
    Check the agent list for the workitem in workflow log, if you do not  find a agent list ,check whether agents has authorization for transaction code mm01  or not.
    if its useful reward points.
    Thanks,
    D.prabhu

Maybe you are looking for