User interface threads

Ok let's say you're writing a user interface and nothing involves
special-resources like a daqcard so there's no constraints on using things
at once. These are some kind of stupid questions and ideas but I'm really
not sure how to write a quality app with user interface at the moment.
My current design is bad, it is a mainVI which checks the menu and
frontpanel buttons, decides which operation or calculation (if any) is
selected, and sends that to a case structure to perform the operation.
This is sloooow but the most common way in examples that I've seen. The
major problem is that while processing the interface isn't checked and
therefore mouseclicks might be lost. Let's say the processing takes like
500ms on average, that is kind of slow between user-interface querys so it
would feel unresponsive in the mean time.
So here's my three ideas so far, I'd love some comments on what will be FAST
and what would be worthwhile to spend my time on:
1. Leave the app as-is, latch the booleans. However you can't latch
mouse-clicks on a picture indicator that I knew of. I emailed NI before
about this and they just suggested adjusting execution priorities. Anybody
else messed around with this? Probably the worst option, but would take zero
programming.
2. Divorce the user interface and the processing. Create two parallel
while-loops in the same VI, one checks the buttons/menu on the front panel
the other processes the request or calculation. Let's say on average UI
checking takes 1.2ms and processing takes about 500ms. Also in this case is
the watch icon still really my best option (since checking buttons/menu only
takes like 1.5ms on average) for not wasting time repeatedly checking when
there's no input and dividing up cputime accordingly? Seems like there'd be
some overhead in switching back and forth repeatedly.
3. Going all-out and changing to somewhat of an object structure. That way
the UI could create a new "execution" refnum, maintain some list of created
objects, process, return values, destroy any object, so everything could be
going on in parallel. That way one slow calculation won't bog down the rest
of the things the UI requests. The idea is far too abstract to me at this
point, but on a single CPU w98 system is it even worth my thinking about
such a structure? I get the feeling I'd see zero performance change between
the two, in fact maybe worse from any labview thread overhead!
Thanks for any comments. I have seen DAQ intensive apps discussed often, but
don't usually catch much on large user interface apps.
-joey

Hi Joey
First check are you are not recalculating the values on ever iteration of the user interface loop but are you only recalculating
on any change in the user interface values.
Otherwise I would use idea No. 2 but with these changes.
1. Only check the whole user interface every 200-300ms, 1.5ms loop time will unnecessarily load the CPU.
2. Each user interaction could be given a string representation and then placed in a queue to wait for the calculation loop to
have time to process it.(So the user instructions are not lost)
3. Have separate loops for faster and slower calculations (or more) with each having their own queue.
4. The extension to the idea's of having separate loops, is to have each loop in a separate independently running VI (see
VIserver). Still use the queue's to pass the data. This method would allow the calculations and the user interface to run on
separate threads and also lets you alter the execution priority for each VI to fine tune the execution times.
Following these instructions you would produce a basic client-server architecture for your user interface, as long as the UI
doesn't require too many slow calculation results before continuing then this should work well.
If this is still not fast enough then, if you have used suggestion No.4, the calculations can be moved off the users computer to a
faster server (using VIserver) also assuming they are networked.
Hope this gives you some ideas.
Tim S
Joseph Oravec wrote:
> Ok let's say you're writing a user interface and nothing involves
> special-resources like a daqcard so there's no constraints on using things
> at once. These are some kind of stupid questions and ideas but I'm really
> not sure how to write a quality app with user interface at the moment.
>
> My current design is bad, it is a mainVI which checks the menu and
> frontpanel buttons, decides which operation or calculation (if any) is
> selected, and sends that to a case structure to perform the operation.
>
> This is sloooow but the most common way in examples that I've seen. The
> major problem is that while processing the interface isn't checked and
> therefore mouseclicks might be lost. Let's say the processing takes like
> 500ms on average, that is kind of slow between user-interface querys so it
> would feel unresponsive in the mean time.
>
> So here's my three ideas so far, I'd love some comments on what will be FAST
> and what would be worthwhile to spend my time on:
>
> 1. Leave the app as-is, latch the booleans. However you can't latch
> mouse-clicks on a picture indicator that I knew of. I emailed NI before
> about this and they just suggested adjusting execution priorities. Anybody
> else messed around with this? Probably the worst option, but would take zero
> programming.
>
> 2. Divorce the user interface and the processing. Create two parallel
> while-loops in the same VI, one checks the buttons/menu on the front panel
> the other processes the request or calculation. Let's say on average UI
> checking takes 1.2ms and processing takes about 500ms. Also in this case is
> the watch icon still really my best option (since checking buttons/menu only
> takes like 1.5ms on average) for not wasting time repeatedly checking when
> there's no input and dividing up cputime accordingly? Seems like there'd be
> some overhead in switching back and forth repeatedly.
>
> 3. Going all-out and changing to somewhat of an object structure. That way
> the UI could create a new "execution" refnum, maintain some list of created
> objects, process, return values, destroy any object, so everything could be
> going on in parallel. That way one slow calculation won't bog down the rest
> of the things the UI requests. The idea is far too abstract to me at this
> point, but on a single CPU w98 system is it even worth my thinking about
> such a structure? I get the feeling I'd see zero performance change between
> the two, in fact maybe worse from any labview thread overhead!
>
> Thanks for any comments. I have seen DAQ intensive apps discussed often, but
> don't usually catch much on large user interface apps.
>
> -joey

Similar Messages

  • How can I give the "user interface thread" higher priority?

    We do alot of activex calls to front panels. We need to increase/decrease the priority of the user interface thread to resolve our thread problem. Anyone know how to do this?
    Chuck

    Hello,
    As P.M. was saying, you can adjust the thread priorities
    through the VI Properties dialogue. 
    Another place to modify the multithreading system in LabVIEW is a VI
    located at: [LabVIEW Directory]\vi.lib\Utility\sysinfo.llb\threadconfig.vi.  However I do not think this will remedy any
    problems you are having.
    From a Multithreading in LabVIEW tutorial (http://zone.ni.com/devzone/conceptd.nsf/webmain/d2e196c7416f373a862568690074c759)
    Priorities in the User Interface and
    Single-Threaded Applications
    Within the User Interface execution
    system, priority levels are handled in the same way for single-threaded and
    multithreaded applications.
    In single-threaded applications and
    in the User Interface execution system of multithreaded applications, the
    execution system queue has multiple entry points. The execution system places
    higher priority VIs on the queue in front of lower priority VIs.
    If a high-priority task is running and the queue contains only lower priority
    tasks, the high-priority VI continues to run. For example, if the execution
    queue contains two VIs of each priority level, the time-critical VIs share execution time exclusively until both finish.
    Then, the high priority VIs share execution
    time exclusively until both finish, and so on. However, if the higher priority
    VIs call a function that waits, the execution system removes higher priority
    VIs from the queue until the wait or I/O completes, assigning other tasks
    (possibly with lower priority) to run. When the wait or I/O completes, the
    execution system reinserts the pending task on the queue in front of lower
    priority tasks. Refer to the Synchronous/Blocking Nodes section for a list of
    asynchronous functions that wait.
    Also, if a high priority VI calls a lower priority subVI,
    that subVI is raised to the same priority level as the caller for the duration
    of that call. Consequently, you do not need to modify the priority levels of
    the subVIs that a VI calls to raise the priority level of the subVI.
    Thus changing the priority of your VI will change the
    priority of UI calls for that particular VI. 
    Again, I caution you because I suspect that if you are having problems
    with your application not running correctly, I do not believe that manipulating
    the thread priorities will resolve these issues.
    Hope this helps,
    Travis M
    LabVIEW R&D
    National Instruments

  • Open Serial Driver VI runs in user interface thread - why?

    I know the serial port compatibility functions are "phased out" and you should use the newer VISA functions - but why on earth is the open serial driver VI set to run in the user interface thread?  If you happen to use these compatibility VIs your serial communication will be blocked by e.g. a user that opens the calendar view of a date and time control...- and the only reason for that is that that particular VI is running in the user interface.
    Change the thread of that VI - and the serial communication runs as it should, so why is it that that particular VI, unlike all the other VIs in that library, is configured that way?
    MTO

    The S/N dialog is part of the process model.
    For the Sequential Model (SequentialModel.seq), the default S/N dialog in found in the 'PreUUT' sub-sequence and implemented as a DLL call.
    The PreUUT sub-sequence of the SequentialModel is a callback, so you can override it in your own test sequence.
    Now is the right time to use %^<%Y-%m-%dT%H:%M:%S%3uZ>T
    If you don't hate time zones, you're not a real programmer.
    "You are what you don't automate"
    Inplaceness is synonymous with insidiousness

  • How can I display step info in User Interface with Tracing Disabled?

    I'm trying to modify the CVI Operator Interface application to update the execute panel with some step information during the execution of the program. i.e. I want to display the measurement, high & low limits during the run WHEN TRACING IS DISABLED. (Doing this, when tracing is enabled is easy, all you do is access the step record that's been constructed (I can cope with that!))
    I've successfully implemented a User defined execution event to signal the User Interface application when the current step is a result (using TS_UIMsg_UserMessageBase etc. I'm posting a UI Message in the Process Model under the ProcessModelPostStep so that I will only display if its a result step.) I've added a user defined
    entry in the execute.c module execution event switch statement which will call a function in the exedisp.c module to update the display. However, I don't have a context to the step that I can use. (I can't use e.g. the exeRec record since this is only completed with the context if tracing is enabled.) I've got a handle to the correct panel to write the information to, but how do I get the context to the current step when tracing is disabled?
    Regards,
    Brian

    Hi,
    no problem - btw, if you wanted to acheive this in TS 1.x, you could always write to a local variable with the ActiveX reference for the step concerned, and then use the msg reference that you have in the OI within the UI Message handler, to dig through to the Execution ->Sequence File->Sequence->Locals, or Execution->Thread->SequenceContext (and you can get almost anywhere from that).
    Hope that helps
    S.
    // it takes almost no time to rate an answer

  • Error while creating a callable object - User Interface

    Hello,
    When i'm trying to create a callable object - User Interface in the guided procedure design time. i'm getting an error. An internal server error. This is happening while i'm trying to create a guided procedure with webdynpro's.
    Is there any body who allready had somthing like this.
    Greetings
    Kurt

    Hi Raja Akella,
    I allready had the roles and my portal version is upgraded until SP8 and all the possible patches.
    I get an internal server error when i want to create a callable object. specially when i want to create a webdynpro ( ABAP / JAVA).
    In the visual administrator i get the following  errors.
    <b>Error 1</b>
    Exception occured during processing of a Web Dynpro application: "com.sap.tc.webdynpro.repository.RepositoryRuntimeException: Failed to get Related Model Object for the object com.sap.caf.eu.gp.dt.comp.semanticbrowser.SemanticBrowserApp, relation Component.".
    [EXCEPTION]
    com.sap.tc.webdynpro.repository.RepositoryRuntimeException: Failed to get Related Model Object for the object com.sap.caf.eu.gp.dt.comp.semanticbrowser.SemanticBrowserApp, relation Component.
         at com.sap.tc.webdynpro.repository.model.DelegatorRepositoryModelClass.getRelatedModelObject(DelegatorRepositoryModelClass.java:640)
         at com.sap.tc.webdynpro.progmodel.repository.IWDApplicationInfo$Implementation.getComponentInternal(IWDApplicationInfo.java:286)
         at com.sap.tc.webdynpro.progmodel.repository.IWDApplicationInfo$Implementation.getComponent(IWDApplicationInfo.java:270)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.addWdappsElement(COConfigWDApp.java:646)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.readWebDynproApps(COConfigWDApp.java:631)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.readApplications(COConfigWDApp.java:308)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.wdp.InternalCOConfigWDApp.readApplications(InternalCOConfigWDApp.java:190)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.VSelect.initCreate(VSelect.java:306)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.VSelect.onPlugFromDispatch(VSelect.java:174)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.wdp.InternalVSelect.wdInvokeEventHandler(InternalVSelect.java:168)
         at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)
         at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.navigate(ClientApplication.java:826)
         at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.navigate(ClientComponent.java:873)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doNavigation(WindowPhaseModel.java:498)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:144)
         at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:330)
         at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
         at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:299)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:711)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:665)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:232)
         at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:152)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Caused by: com.sap.tc.webdynpro.repository.RepositoryRuntimeException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >: (:main:, row:1, col:491)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLConfigurationParserWriter.startParsing(XMLConfigurationParserWriter.java:178)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLPersistence.doReadVMO(XMLPersistence.java:126)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.readVMO(RepositoryPersistence.java:356)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.doFindRepositoryObject(RepositoryPersistence.java:598)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.findRepositoryObject(RepositoryPersistence.java:170)
         at com.sap.tc.webdynpro.repository.model.Repository.findRepositoryObjectInternal(Repository.java:590)
         at com.sap.tc.webdynpro.repository.model.RepositoryObjectRelation$XMLGuidWrapper.getModelObject(RepositoryObjectRelation.java:462)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.getCurrentLayerObject(RepositoryPersistence.java:702)
         at com.sap.tc.webdynpro.repository.model.Repository.getCurrentLayerObject(Repository.java:1483)
         at com.sap.tc.webdynpro.repository.model.NonSharedRelationToOne.doMergeInheritedTarget(NonSharedRelationToOne.java:85)
         at com.sap.tc.webdynpro.repository.model.NonSharedRelationToOne.mergeInheritedTargets(NonSharedRelationToOne.java:49)
         at com.sap.tc.webdynpro.repository.model.RelationToOne.getTarget(RelationToOne.java:93)
         at com.sap.tc.webdynpro.repository.model.AbstractRepositoryModelClass.getRelatedModelObject(AbstractRepositoryModelClass.java:234)
         at com.sap.tc.webdynpro.repository.model.DelegatorRepositoryModelClass.getRelatedModelObject(DelegatorRepositoryModelClass.java:636)
         ... 39 more
    Caused by: com.sap.engine.lib.xml.parser.NestedSAXParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >: (:main:, row:1, col:491)(:main:, row=1, col=491) -> com.sap.engine.lib.xml.parser.ParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >:(:main:, row:1, col:491)
         at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:148)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLConfigurationParserWriter.startParsing(XMLConfigurationParserWriter.java:166)
         ... 52 more
    Caused by: com.sap.engine.lib.xml.parser.ParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >:(:main:, row:1, col:491)
         at com.sap.engine.lib.xml.parser.XMLParser.scanAttList(XMLParser.java:1566)
         at com.sap.engine.lib.xml.parser.XMLParser.scanElement(XMLParser.java:1687)
         at com.sap.engine.lib.xml.parser.XMLParser.scanDocument(XMLParser.java:2792)
         at com.sap.engine.lib.xml.parser.XMLParser.parse0(XMLParser.java:227)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parseAndCatchException(AbstractXMLParser.java:141)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:156)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:259)
         at com.sap.engine.lib.xml.parser.Parser.parseWithoutSchemaValidationProcessing(Parser.java:278)
         at com.sap.engine.lib.xml.parser.Parser.parse(Parser.java:340)
         at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:125)
         ... 53 more
    <b>error 2</b>
    Processing HTTP request to servlet [dispatcher] finished with error. The error is: com.sap.tc.webdynpro.repository.RepositoryRuntimeException: Failed to get Related Model Object for the object com.sap.caf.eu.gp.dt.comp.semanticbrowser.SemanticBrowserApp, relation Component.
         at com.sap.tc.webdynpro.repository.model.DelegatorRepositoryModelClass.getRelatedModelObject(DelegatorRepositoryModelClass.java:640)
         at com.sap.tc.webdynpro.progmodel.repository.IWDApplicationInfo$Implementation.getComponentInternal(IWDApplicationInfo.java:286)
         at com.sap.tc.webdynpro.progmodel.repository.IWDApplicationInfo$Implementation.getComponent(IWDApplicationInfo.java:270)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.addWdappsElement(COConfigWDApp.java:646)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.readWebDynproApps(COConfigWDApp.java:631)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.readApplications(COConfigWDApp.java:308)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.wdp.InternalCOConfigWDApp.readApplications(InternalCOConfigWDApp.java:190)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.VSelect.initCreate(VSelect.java:306)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.VSelect.onPlugFromDispatch(VSelect.java:174)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.wdp.InternalVSelect.wdInvokeEventHandler(InternalVSelect.java:168)
         at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)
         at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.navigate(ClientApplication.java:826)
         at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.navigate(ClientComponent.java:873)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doNavigation(WindowPhaseModel.java:498)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:144)
         at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:330)
         at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
         at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:299)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:711)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:665)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:232)
         at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:152)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Caused by: com.sap.tc.webdynpro.repository.RepositoryRuntimeException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >: (:main:, row:1, col:491)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLConfigurationParserWriter.startParsing(XMLConfigurationParserWriter.java:178)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLPersistence.doReadVMO(XMLPersistence.java:126)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.readVMO(RepositoryPersistence.java:356)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.doFindRepositoryObject(RepositoryPersistence.java:598)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.findRepositoryObject(RepositoryPersistence.java:170)
         at com.sap.tc.webdynpro.repository.model.Repository.findRepositoryObjectInternal(Repository.java:590)
         at com.sap.tc.webdynpro.repository.model.RepositoryObjectRelation$XMLGuidWrapper.getModelObject(RepositoryObjectRelation.java:462)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.getCurrentLayerObject(RepositoryPersistence.java:702)
         at com.sap.tc.webdynpro.repository.model.Repository.getCurrentLayerObject(Repository.java:1483)
         at com.sap.tc.webdynpro.repository.model.NonSharedRelationToOne.doMergeInheritedTarget(NonSharedRelationToOne.java:85)
         at com.sap.tc.webdynpro.repository.model.NonSharedRelationToOne.mergeInheritedTargets(NonSharedRelationToOne.java:49)
         at com.sap.tc.webdynpro.repository.model.RelationToOne.getTarget(RelationToOne.java:93)
         at com.sap.tc.webdynpro.repository.model.AbstractRepositoryModelClass.getRelatedModelObject(AbstractRepositoryModelClass.java:234)
         at com.sap.tc.webdynpro.repository.model.DelegatorRepositoryModelClass.getRelatedModelObject(DelegatorRepositoryModelClass.java:636)
         ... 39 more
    Caused by: com.sap.engine.lib.xml.parser.NestedSAXParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >: (:main:, row:1, col:491)(:main:, row=1, col=491) -> com.sap.engine.lib.xml.parser.ParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >:(:main:, row:1, col:491)
         at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:148)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLConfigurationParserWriter.startParsing(XMLConfigurationParserWriter.java:166)
         ... 52 more
    Caused by: com.sap.engine.lib.xml.parser.ParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >:(:main:, row:1, col:491)
         at com.sap.engine.lib.xml.parser.XMLParser.scanAttList(XMLParser.java:1566)
         at com.sap.engine.lib.xml.parser.XMLParser.scanElement(XMLParser.java:1687)
         at com.sap.engine.lib.xml.parser.XMLParser.scanDocument(XMLParser.java:2792)
         at com.sap.engine.lib.xml.parser.XMLParser.parse0(XMLParser.java:227)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parseAndCatchException(AbstractXMLParser.java:141)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:156)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:259)
         at com.sap.engine.lib.xml.parser.Parser.parseWithoutSchemaValidationProcessing(Parser.java:278)
         at com.sap.engine.lib.xml.parser.Parser.parse(Parser.java:340)
         at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:125)
         ... 53 more
    <b>error 3</b>
    Processing HTTP request to servlet [dispatcher] finished with error.
    The error is: com.sap.tc.webdynpro.repository.RepositoryRuntimeException: Failed to get Related Model Object for the object com.sap.caf.eu.gp.dt.comp.semanticbrowser.SemanticBrowserApp, relation Component.
    Exception id: [00505691431B006F0000003E00000FE800041B45B87F7617]
    thanks in advance
    Kurt

  • UI (User Interface) text size and colors

    Recent versions of Elements (7, 8, 9) have changed to a user interface which is predominantly shades of gray and black with few if any user options for color or font. The font size cannot be altered because Adobe use their own pixel-based font which is not compatible with Windows Desktop settings. So on many flat screens with high resolutions the font becomes almost unreadable. The upper case 'E' in the menu bar Edit for example, is a mere 2.03mm high on a 22" display at 1920x1080 resolution.
    This has been mentioned a number of times over these releases to no avail, but at last there may be a change on the way for PSE 10 (later later this year?).
    So if you feel the gray/black UI needs attention I suggest you visit
    http://feedback.photoshop.com/photoshop_family/topics/my_eyes_need_help_with_photoshop
    where there are a number of comments. This is monitored by Adobe so may influence the next release. The more request there are I suspect the more likely some action. Adobe have already commented: "The amount of conversation that this thread has generated among Elements customers was unanticipated." on the thread.
    If you wish to place a comment you will need a Photoshop Account and to be logged in. If you didn't create an account when you installed the product then just click Create Account at the top of the link above.

    Font sizes are hard-coded in teh apps and there is no way to change that. The new CC versiosn support high-DPI displays and resolve those issues (mostly).
    Mylenium

  • User Interface Template for Interactive Report Region

    In 3.2, where do we set the user interface template for Interactive Reports region?
    No matter what out of the box theme I switch to, the Interactive Reports region shows the same. What and where do I change the template so that alternating rows use two different colors?

    There is no template for Interactive Reports like for a "normal" report. You need to modify the CSS and supply your own for this to happen.
    I believe most things are tagged with #apexir - firebug with Firebox is invaluable. This thread may help:
    Re: changing the look and feel of interactive report.

  • User Interface (UI) Too Small on InDesign and CC Suite

    I have a 27″ IMac running Yosemite 10.10.2. Its native screen resolution is 2560×1440.
    When I opened CC Indesign 2014 for the first time I was shocked to see that the tools and rest of the user interface were SO SMALL that I was having tremendous difficulty seeing them clearly. I'm talking 5 and 6 point type!!!  And the icons... minuscule!
    I lowered the resolution of the display, but type then becomes fuzzy. I searched the web and found that there were others who were having the same problem.
    I find it hard to believe that a company specializing in software for the design/creative community would overlook something as CRITICAL as size of the graphical user interface and its customization to work optimally on different platforms and with different display sizes and to satisfy the particular needs of each user.
    The UI obviously greatly impacts our working speed and facility.
    I called Adobe and their tech support could not help. I called Apple and got the same. 
    I've been a graphic designer for over 20 years.  Frankly, at this point, I find the suite UNusable (I took a quick look at Photoshop and Illustrator and the same issue applies).
    This is just unbelievable!  Anyone out there have an answer?
    Someone suggested we should repeat our complaints INDEPENDENTLY in the general forum instead of them being buried on one thread.  GREAT IDEA!!

    CC 2014 has a Expermental Preference you can use to increace the UI size 200% for High resolution displays

  • ADF error-"Row currency has changed since the user interface was rendered"

    Hi,
    I have created a ADf page and then created entity and view object for a table.
    I have created fields which are binded to the the view object .
    when i open the page after deploying it i get the following error
    "Row currency has changed since the user interface was rendered. The expected row key was oracle.jbo.Key[]"
    Please help me
    Edited by: 798554 on Sep 28, 2010 10:45 PM

    That's a common exception in ADF. If you click the browser back button, you can get this message. You could search for a solution in other posts, perhaps like that:
    JBO-35007: Row currency has changed.. when Rollback fom a Dialog page
    http://cn.forums.oracle.com/forums/thread.jspa?messageID=3913201
    http://programming.itags.org/development-tools/68191/
    You should also mention your JDev version!
    NA
    http://nickaiva.blogspot.com/

  • This advertised application will not be installed because it might be unsafe. Contact your administrator to change the installation user interface option of the package to basic.

    Hi there,
    I was wondering whether anyone could tell me which feature in Windows 7 produces this message "This advertised application will not be installed because it might be unsafe. Contact your administrator to change the installation user interface option of
    the package to basic." and whether it can be turned off in Windows to prevent this message from appearing when installing certain programs that aren't WHQL certified. At first I thought it was the UAC control that generated this message but found out
    that it wasn't and then thought it was the DEP control and found out that it wasn't this either. I'm only seem to be getting this message when installing FileDirector Component Service Version 3 on a few of our workstations which is an add-on that allows file
    integration with Office and is part of FileDirector WinClient Version 3.
    Your help would be much appreciated.
    Many thanks,
    RocknRollTim
    P.S. I know of a way to bypass this message but would ideally not like to have the feature turned on and for the message not to be appear for non WHQL certified program installations in order to make non WHQL certified program installations in the future much
    easier, more simpler and straightforward to carry out. I was redirected by a moderator off the Microsoft Community Forum.

    Hi,
    You can try following options to disable this prompt, but we don't recommend you to do so since this feature helps you to protect your computer.
    Option 1: Run command as admin:
    bcdedit -set loadoptions DDISABLE_INTEGRITY_CHECKS
    bcdedit -set TESTSIGNING ON
    Restart your computer to apply changes.
    Option 2: Disable in GPO:
    1.Type gpedit.msc in the Run dialog and press Enter.
    2.In the Group Policy Editor, navigate to User Configuration → Administrative Templates → System → Driver Installation.
    3.Double-click on Code signing for device drivers in the right-side pane as shown above.
    4.In the windows that opens, choose Enabled. In the Options, choose Ignore as shown. Then click on the OK button to save the settings.
    Restart your computer to apply changes.
    Kate Li
    TechNet Community Support
    Unmarked as Answer based on OP's request. 
    https://social.technet.microsoft.com/Forums/en-US/35ab1279-c3a1-46be-9f7d-45e8606c1410/this-advertised-application-will-not-be-installed-because-it-might-be-unsafe-contact-your?forum=w7itproappcompat
    Arnav Sharma | http://arnavsharma.net/ Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading
    the thread.

  • Calendar User Interface (X7)

    I'm a new X7 owner, fighting my way through a confusing user interface.  On my second call to my telco, I got sent the PDF of the user manual for my phone.  It answered some questions, but nothing for the calendar.
    It tells me to fill in the fields.  Not a single word on what the fields mean!  So what DO these fields mean?  When I click through into the data entry for an icon, it should add a title for that field.  
    I'm in edit mode for a single-shot appointment.  I have an icon of a calendar page with a right-pointing arrow in the lower right.  I have an icon of a calendar page with a right-pointing arrow in the lower left.  I assume that these are controlling the repeat characteristics of the appointment.  But this is a no-repeat appointment as indicated further down the page as "circle-arrow Not repeated".  If that's what these fields are, why are they shown before selecting repeat?
    What does private or public syncronization mean?
    Is there any way to link the phone book to my appointments?  I already have my doctor's address in the phone book -- why should I re-enter it here?  If I want to phone him to modify my appointment, can I click through from the calendar?  Why not in the twenty-teens?  My doctor has a nice dozen-character Polish name -- shouldn't I be able to right-click (oops -- long-press) his name in my phone book and choose "schedule meeting" from there, rather than typing in a name and address all over again?
    I discovered 1-for-AM, 2-for-PM by experimentation.  Shouldn't this be in the user manual?

    In calendar interface, standard is 30, but if you need 15 etc you need to a modification etc, use the normal interface with clock times or in details screen you can enter clock times enable fore the cats profile using CAC1 http://scn.sap.com/thread/3678682

  • Problem in Configuring the Object Editor User Interface

    Hi,
         I m using NetWeaver 7.0.11 & facing the problem in Configuring the Object Editor User Interface.In the Configuration Browser ,when i click on Object Editor & choose New Configuration & try to select service,it shows the flollowing error:
    com.sap.caf.rt.exception.CAFBaseRuntimeException: Service manager initialization failed Illegal argument exception: Unable to create javax.ejb.EJBObject.
         at com.sap.caf.rt.ui.cool.generic.ServiceFacade.init(ServiceFacade.java:121)
         at com.sap.caf.rt.ui.cool.generic.ServiceFacade.<init>(ServiceFacade.java:50)
         at com.sap.caf.rt.ui.cool.generic.ServiceFacadeFactory.getFacadeInstance(ServiceFacadeFactory.java:51)
         at com.sap.caf.ui.utils.cool.CoolUtils.getServiceFacade(CoolUtils.java:123)
         at com.sap.caf.ui.ptn.objecteditor.ObjectEditorCC.getServiceFacade(ObjectEditorCC.java:505)
         at com.sap.caf.ui.ptn.objecteditor.wdp.InternalObjectEditorCC.getServiceFacade(InternalObjectEditorCC.java:245)
         at com.sap.caf.ui.ptn.objecteditor.config.OEconfiguratorLayout.onActionSelectModule(OEconfiguratorLayout.java:322)
         at com.sap.caf.ui.ptn.objecteditor.config.wdp.InternalOEconfiguratorLayout.wdInvokeEventHandler(InternalOEconfiguratorLayout.java:300)
         at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)
         at com.sap.tc.webdynpro.progmodel.controller.Action.fire(Action.java:67)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doHandleActionEvent(WindowPhaseModel.java:420)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:132)
         at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:335)
         at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
         at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:299)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:759)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:712)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:261)
         at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:149)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:160)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Can anybody please tell,what can be the problem?
    regards
    Sumit

    Hello Sumit
    This is most probably the result of metadata corruption on runtime.
    A possible workaround for this situation is:
    Undeploy all the metadata DCs of all the CAF applications you have
    deployed (these are the components which names end on "/metadata", excl.
    caf/core/metadata and caf/tc/metadata (which are part of CAF itself)).
    And then deploy the CAF applications again.
    Regards,
    Désiré

  • How to avoid long user interface response time in long measurements ?

    Hi
    I tried to find more information regarding techniques how to avoid long user interface response times in case of extremely long measurement times with an external instrument communicating over GPIB, so I post this hoping to get some hint or a link to a guideline. I guess this is quite normal problem.
    Problem is that when I want to measure long time in order to get an average result from the instrument, I have to wait until the result is returned from the instrument. Obviously that makes the user interface response very slow in traditional technique. 
    My restriction is the old GPIB 488 instrument driver that I would not want to modify, but I have source code to it.
    What would be the best way to improve the response time for user interface ? I have looked into the few things:
    * multithreading
    * callback in main program for GPIB events
    * modifying instrument driver e.g. to support VISA and creating a VISA callback
    regards,
    Petri

    Several ways to do this:
    If you're getting several measurements, you could have the instrument generate an asynchronous interrupt (an "SRQ" in GPIB terms), then collect the data in response to the SRQ callback.  While you're waiting for the SRQ's, you can have your main thread running the interface so responsive GUI.  You don't have to spinlock on the GPIB read waiting for instrument data.
    Or, as you mentioned, you could spawn a thread to manage the measurements, and use a timer in the main thread to periodically allow you to check the status of the measurement thread.  Again, the main thread mostly just runs the user interface.
    Either way, the idea is to keep the main thread freed up most of the time to run the GUI, and have it periodically check for completion of your measurement sequence.  While you're waiting in the main thread, you may want to make sure the user can't inadvertently re-trigger another measurement sequence until the active one is complete.
    If you do find yourself doing a dead wait, you'd want to break this up into a series of shorter waits, and in between each wait, do a ProcessSystemEvents from the main thread to keep the GUI active.
    Menchar

  • In simple user Interface modify the sequence view to show only executing step

    I want to see only the Single executing step  in sequence view of the user interface
    are there any egs for the same!!

    This is relatively trivial to implement yourself. Handle the UIMessageEvent of the ApplicationMgr and when you get a trace UIMessage do something like the following:
    if (uiMsg.Event == UIMsg_Trace)
        int notUsed;
        String currentStepName = "";
        SequenceContext context = uiMsg.Thread.GetSequenceContext(0, out notUsed);
        if (context.NextStepIndex >= 0)
            currentStepName = context.NextStep.Name;
        /// Do something with currentStepName like update an indicator control.
    Hope this helps,
    -Doug

  • How to create a time event without having user interface freeze

    Hi,
    I am new to labwindows and i am trying to create a time event where every hour for 24 hours i want my program to write somethign in excel. 
    I tried using function Delay and SyncWait and those functions freezes up the user interface.
    Any tips/help will be appreciated.
    Thank You
    Solved!
    Go to Solution.

    Many, if not most, CVI developers wind up implementing a delay function for themselves that periodically, during the delay, wakes up and processes events so that the GUI isn't frozen.
    The idea is to break the wait or delay up into pieces, and process system events in between each piece.
    A timer works too, you can try the async timer that Wolfgang mentioned, it runs a bit better and on a separate thread, so it lets you do what you normally would with the main thread and the GUI, yet still get timer function.   If you use a smart delay, you still wind up doing nothing a great deal of the time, and events are only processed periodically.

Maybe you are looking for