Forte Estimating Metrics

In his book Object-Oriented Software Metrics (Prentice Hall, 1994), Mark
Lorenz in proposes an approach for estimating OO projects. Lorenz recommends
the average amount of effort spent on a single class is the best indictor of
the amount of work required on a new project. He suggests Smalltalk developers
average 5-10 person-days per class, and C++ developers average 25-35
person-days per class.
Has anyone a view on average effort to build Forte classes?
Note, the metrics quoted above relate to Design and Implementation. They
assume Analysis has been completed, and do not include the time for project
management, systems testing, and other support personnel. They assume a ratio
of 1:6 OO experts to novices. Higher ratios should result in greater
productivity (lower average efforts per class). The guidelines also assume no
library of reusable components.
Lorenz is an ex-head of IBM's Object Technology Center and a respected OO
consultant and author. His method is based on the results of 8-16 Smalltalk and
C++ projects (not all statistics are available from all projects). Projects
ranged in size from 60 to 700+ project-specific classes. Project durations
ranged from 6 months to 2.5 years, with teams of 2 to 35 developers.
Thanks for any help
gjb.

Ron,
Many thanks for your input, and I agree with your comments.
In this case, I do have a function point count which I am using for my primary
estimate. However, a prudent estimator will use multiple techniques for
comparison and reconciliation. The Class based approach, despite it's
weaknesses, appears to be a quick and simple technique to get a rough number.
As it's turned out, the function point estimate and the class based estimate
have come within 10% of each other.
Regards
gjb
ronald.ten-hove @ acm.org
07/06/97 03:32 am
To: Greg Barber
cc: forte-users @ Sagesoln.com @ Internet
Subject: Re: Forte Estimating Metrics
Greg,
In my experience, the class-count metric is a poor one for time estimation,
for four reasons:
1. The actual time/class is very domain- and implementation-
sensitive. Industry averages are fairly unhelpful, unless
you happen to employ average practices and work in domains
of "average" complexity (whatever that means!)
2. It does not account for the overall size of the project; the
larger the project, the lower overall productivity is.
3. It requires that a fairly detailed design be done already, which
represents a fair amount of the total effort; as an estimation
tool, it is only useful in the latter stages of a project.
4. Lorenz's research is based on a very small sample; 18 projects are
hardly enough to have statistical validity.
(I almost included a fifth point, but it is hardly worthy: class-counting
can be spoofed. Awareness of the use of class-count as a metric can give
developers a motive to either artificially increase or decrease the class
count, depending on other motivating factors.)
I would recommend function point analysis as a more general purpose tool
for project management. Using a good statement of the requirements, FPA
generates a measure of the size of the application in terms of function
points. This is independent of the implementation; it measures the
behaviours of the application, rather than the particulars of design
or implementation, such as class count or lines-of-code. Note that
expected productivity varies as a function of the overall size of a project.
FPA has been used as part of the study of literally thousands of
software projects, so the conclusions drawn from FPA studies done
by Capers Jones at Software Productivity Research have some
statistical credibility.
Looking at the general productivity numbers gathered by SPR
(http://www.spr.com), there are some productivity measures that
cover many languages, including Forte. In terms of lines-of-code
per function point, Forte is 3 times more productive than C++.
In terms of overall productivity (function points / man month), there
are too many variable factors to make a simple statement of relative
productivity levels between C++ and Forte meaningful. This has a lot
to do with the Forte object model and run-time system, which, in certain
problem domains, provides a lot of function points (or equivalent)
"for free." In other words, if you can use Forte's plumbing package,
you're automatically more productive. Providing the equivalent in
C++ would be a daunting task (I should know -- I've done it!)
The best method of determining your productivity is to measure it. There
are many factors that affect the overall productivity of your software
organisation; the programming language choice is just one. Using metrics
drawn on industry averages concerning just ONE variable in the product
development process is not terribly useful in project management.
If you are looking for an extremely rough number that is more defensible
that the good old "gut feel" technique, then class counting is probably
the least intrusive on the development process.
-Ron
At 08:02 AM 6/5/97 +1000, you wrote:
In his book Object-Oriented Software Metrics (Prentice Hall, 1994), Mark
Lorenz in proposes an approach for estimating OO projects. Lorenzrecommends
the average amount of effort spent on a single class is the best indictor of
the amount of work required on a new project. He suggests Smalltalkdevelopers
average 5-10 person-days per class, and C++ developers average 25-35
person-days per class.
Has anyone a view on average effort to build Forte classes?
Note, the metrics quoted above relate to Design and Implementation. They
assume Analysis has been completed, and do not include the time for project
management, systems testing, and other support personnel. They assume aratio
of 1:6 OO experts to novices. Higher ratios should result in greater
productivity (lower average efforts per class). The guidelines also assumeno
library of reusable components.
Lorenz is an ex-head of IBM's Object Technology Center and a respected OO
consultant and author. His method is based on the results of 8-16Smalltalk and
C++ projects (not all statistics are available from all projects). Projects
ranged in size from 60 to 700+ project-specific classes. Project durations
ranged from 6 months to 2.5 years, with teams of 2 to 35 developers.
Thanks for any help
gjb.

Similar Messages

  • Re: Forte Estimating Metrics

    Greg,
    In my experience, the class-count metric is a poor one for time estimation,
    for four reasons:
    1. The actual time/class is very domain- and implementation-
    sensitive. Industry averages are fairly unhelpful, unless
    you happen to employ average practices and work in domains
    of "average" complexity (whatever that means!)
    2. It does not account for the overall size of the project; the
    larger the project, the lower overall productivity is.
    3. It requires that a fairly detailed design be done already, which
    represents a fair amount of the total effort; as an estimation
    tool, it is only useful in the latter stages of a project.
    4. Lorenz's research is based on a very small sample; 18 projects are
    hardly enough to have statistical validity.
    (I almost included a fifth point, but it is hardly worthy: class-counting
    can be spoofed. Awareness of the use of class-count as a metric can give
    developers a motive to either artificially increase or decrease the class
    count, depending on other motivating factors.)
    I would recommend function point analysis as a more general purpose tool
    for project management. Using a good statement of the requirements, FPA
    generates a measure of the size of the application in terms of function
    points. This is independent of the implementation; it measures the
    behaviours of the application, rather than the particulars of design
    or implementation, such as class count or lines-of-code. Note that
    expected productivity varies as a function of the overall size of a project.
    FPA has been used as part of the study of literally thousands of
    software projects, so the conclusions drawn from FPA studies done
    by Capers Jones at Software Productivity Research have some
    statistical credibility.
    Looking at the general productivity numbers gathered by SPR
    (http://www.spr.com), there are some productivity measures that
    cover many languages, including Forte. In terms of lines-of-code
    per function point, Forte is 3 times more productive than C++.
    In terms of overall productivity (function points / man month), there
    are too many variable factors to make a simple statement of relative
    productivity levels between C++ and Forte meaningful. This has a lot
    to do with the Forte object model and run-time system, which, in certain
    problem domains, provides a lot of function points (or equivalent)
    "for free." In other words, if you can use Forte's plumbing package,
    you're automatically more productive. Providing the equivalent in
    C++ would be a daunting task (I should know -- I've done it!)
    The best method of determining your productivity is to measure it. There
    are many factors that affect the overall productivity of your software
    organisation; the programming language choice is just one. Using metrics
    drawn on industry averages concerning just ONE variable in the product
    development process is not terribly useful in project management.
    If you are looking for an extremely rough number that is more defensible
    that the good old "gut feel" technique, then class counting is probably
    the least intrusive on the development process.
    -Ron
    At 08:02 AM 6/5/97 +1000, you wrote:
    In his book Object-Oriented Software Metrics (Prentice Hall, 1994), Mark
    Lorenz in proposes an approach for estimating OO projects. Lorenzrecommends
    the average amount of effort spent on a single class is the best indictor of
    the amount of work required on a new project. He suggests Smalltalkdevelopers
    average 5-10 person-days per class, and C++ developers average 25-35
    person-days per class.
    Has anyone a view on average effort to build Forte classes?
    Note, the metrics quoted above relate to Design and Implementation. They
    assume Analysis has been completed, and do not include the time for project
    management, systems testing, and other support personnel. They assume aratio
    of 1:6 OO experts to novices. Higher ratios should result in greater
    productivity (lower average efforts per class). The guidelines also assumeno
    library of reusable components.
    Lorenz is an ex-head of IBM's Object Technology Center and a respected OO
    consultant and author. His method is based on the results of 8-16Smalltalk and
    C++ projects (not all statistics are available from all projects). Projects
    ranged in size from 60 to 700+ project-specific classes. Project durations
    ranged from 6 months to 2.5 years, with teams of 2 to 35 developers.
    Thanks for any help
    gjb.

    Greg,
    In my experience, the class-count metric is a poor one for time estimation,
    for four reasons:
    1. The actual time/class is very domain- and implementation-
    sensitive. Industry averages are fairly unhelpful, unless
    you happen to employ average practices and work in domains
    of "average" complexity (whatever that means!)
    2. It does not account for the overall size of the project; the
    larger the project, the lower overall productivity is.
    3. It requires that a fairly detailed design be done already, which
    represents a fair amount of the total effort; as an estimation
    tool, it is only useful in the latter stages of a project.
    4. Lorenz's research is based on a very small sample; 18 projects are
    hardly enough to have statistical validity.
    (I almost included a fifth point, but it is hardly worthy: class-counting
    can be spoofed. Awareness of the use of class-count as a metric can give
    developers a motive to either artificially increase or decrease the class
    count, depending on other motivating factors.)
    I would recommend function point analysis as a more general purpose tool
    for project management. Using a good statement of the requirements, FPA
    generates a measure of the size of the application in terms of function
    points. This is independent of the implementation; it measures the
    behaviours of the application, rather than the particulars of design
    or implementation, such as class count or lines-of-code. Note that
    expected productivity varies as a function of the overall size of a project.
    FPA has been used as part of the study of literally thousands of
    software projects, so the conclusions drawn from FPA studies done
    by Capers Jones at Software Productivity Research have some
    statistical credibility.
    Looking at the general productivity numbers gathered by SPR
    (http://www.spr.com), there are some productivity measures that
    cover many languages, including Forte. In terms of lines-of-code
    per function point, Forte is 3 times more productive than C++.
    In terms of overall productivity (function points / man month), there
    are too many variable factors to make a simple statement of relative
    productivity levels between C++ and Forte meaningful. This has a lot
    to do with the Forte object model and run-time system, which, in certain
    problem domains, provides a lot of function points (or equivalent)
    "for free." In other words, if you can use Forte's plumbing package,
    you're automatically more productive. Providing the equivalent in
    C++ would be a daunting task (I should know -- I've done it!)
    The best method of determining your productivity is to measure it. There
    are many factors that affect the overall productivity of your software
    organisation; the programming language choice is just one. Using metrics
    drawn on industry averages concerning just ONE variable in the product
    development process is not terribly useful in project management.
    If you are looking for an extremely rough number that is more defensible
    that the good old "gut feel" technique, then class counting is probably
    the least intrusive on the development process.
    -Ron
    At 08:02 AM 6/5/97 +1000, you wrote:
    In his book Object-Oriented Software Metrics (Prentice Hall, 1994), Mark
    Lorenz in proposes an approach for estimating OO projects. Lorenzrecommends
    the average amount of effort spent on a single class is the best indictor of
    the amount of work required on a new project. He suggests Smalltalkdevelopers
    average 5-10 person-days per class, and C++ developers average 25-35
    person-days per class.
    Has anyone a view on average effort to build Forte classes?
    Note, the metrics quoted above relate to Design and Implementation. They
    assume Analysis has been completed, and do not include the time for project
    management, systems testing, and other support personnel. They assume aratio
    of 1:6 OO experts to novices. Higher ratios should result in greater
    productivity (lower average efforts per class). The guidelines also assumeno
    library of reusable components.
    Lorenz is an ex-head of IBM's Object Technology Center and a respected OO
    consultant and author. His method is based on the results of 8-16Smalltalk and
    C++ projects (not all statistics are available from all projects). Projects
    ranged in size from 60 to 700+ project-specific classes. Project durations
    ranged from 6 months to 2.5 years, with teams of 2 to 35 developers.
    Thanks for any help
    gjb.

  • RCPT: Re: Forte productivity metrics

    Confirmation of reading: your message -
    Date: 13 Dec 96 9:07
    To: [email protected]
    Subject: Re: Forte productivity metrics
    Was read at 20:10, 22 Mar 96.

    Confirmation of reading: your message -
    Date: 13 Dec 96 9:07
    To: [email protected]
    Subject: Re: Forte productivity metrics
    Was read at 20:10, 22 Mar 96.

  • OAF Estimating Metrics

    Do you have suggestions for estimating the effort required to:
    1. Design and develop complex custom pages using OAF in a R11.5.10 eBusiness Suite environment
    2. Design and develop modifications to existing Customer Online pages
    Thanks

    Do you have suggestions for estimating the effort required to:
    1. Design and develop complex custom pages using OAF in a R11.5.10 eBusiness Suite environment
    2. Design and develop modifications to existing Customer Online pages
    Thanks

  • Message Read Confirmation

    Your message with subject, Re: Forte productivity metrics, and dated 13 Dec 96 9:07 was read by Len Leber at Fri, 13 Dec 1996 18:35:01 PST.
    ==============================================
    Len Leber
    ATG Solutions, Incorporated
    [email protected]

    Hi Souvlaki
    If you are using Panther Mail you can use a plugin called MailPriority, which sadly doesn't work in Mail 2.0.
    There are some work-arounds that get close to offering what Outlook has, including an all-or-nothing terminal hack.
    You can read about them here.

  • Re: Metrics !

    Bala Krishnan wrote:
    >
    I am planning to evaluate a Framework for Forte applications. I would be
    glad if someone can let me know what are the finer points I should look
    for. I am evaluating it more from performance point of view, so would
    appreciate if you can throw some lights on the different types of
    metrics that need to be collected.
    Thanks in advance.
    Balu.
    Get Your Private, Free Email at http://www.hotmail.com
    Hello Bala,
    I think you should ask Forte Consulting : they have some bench available
    with metrics in several environments.
    I have done some performance testing, but it is too specific on hardware
    and software architecture. Anyway the conclusion is always the same :
    Forte isn't the limit, the infrastructure used with Forte is the limit.
    So you can consider the framework as software infrastructure. The best I
    think to evaluate a framework is to build the same application with and
    without the framework and make mesures on the two versions.
    What I would look after on a framework aboput performance :
    1°) 3 Tier Architecture implementation
    2°) Instanciation
    3°) Partitionning
    4°) Reference/Copy mechanism when you pass from a partition to an other
    5°) Flexibility of use and evolutivity (modularity)
    6°) Compatibility with external components and framework (like Express)
    7°) Performance on each node of the architecture with and without
    compilation (Forte has a Technote about Performance instrumentation on a
    Forte Application)
    8°) Packaging in Developement environment and in Production environment
    9°) Tools given with the Framework (code generation, documentation
    generation, delivery tools, version management tools, etc...)
    10°) Full Tolerant system : Fail-over (process and network)
    11°) Optimization of the hardware part (using multi-processing and
    multi-threading)
    Daniel.

    You need to post this question in HTTP Server/Apache Forum

  • Estimation for ABAP project

    Dear all,
    We have an ABAP project, how can you estimate total of effort we spend to complete them. Please guide me some ways to estimate the ABAP development project ?
    By the way, I want to know how to measure the productivity of a ABAP developer ?. What metric should we base on ?
    For example: in VB or C++ projects, we measure productivity of developers base on number of code lines per day.
    Please help me or guide me some measurement method.
    Thank you.
    VuPN

    Hi Pham,
    In some development projects I had worked, we used to follow this many metrics but I remember only few:)).
    i) To know the total work estimate: You can take all the objects that you have developed and first make a complexity review. There you have to determine if the object is Simple, Medium, Hard or Complex, Very complex. This is a very relative term to establish. Hence use a standard approach in looking at the complexities may be by carrying a Complexity review template/ guideline, jotting all the points and take a weighted average as per their relevance and significance of them to the total delivery.
    Now you have a total complexity review done. Just find out if a same kind of project had been done anywhere else and find out what was the number of hours/days spent for each of this degrees of complexities. Say low is 24 hours, medium takes 40 hours, blah blah. Break it down to the level of Technical design, coding, reviews, etc. Now you have a total estimate done. However you should never get biased with actuals as you already have while caluclating the estimates.
    ii) Now it is easier to find the productivity as you can find out what was the estimated time to complete and how much did each developer take to complete the job.
    Generally the estimates must be done in the initial phase of the project. Also these are very minimal number of metrics which I am trying to tell you. But there is a huge number of them and you could find it out from any quality expert may be auditing software projects for CMM, etc.
    Regards,
    Srikanth

  • Estimation Techniques

    Hi there,
    We are currently looking at ways of estimating the time and money
    required to complete a Forte project. We are looking at using one or more
    of Forte, Web Enterprise Designer, and Conductor.
    Has anybody found/developed a technique that seems to work well in one or
    more of these areas?
    Thanks in advance for your reply.
    Vanessa Rumball
    Analyst Programmer
    University of Otago
    Dunedin
    NEW ZEALAND

    Hi!
    Have you tried taking a look at the ODE solver.vi in LabVIEW? You can find more information on this VI here:
    http://zone.ni.com/reference/en-XX/help/371361G-01/lvanlsconcepts/ode_solvers_in_labview/
    Daniel G.
    Applications Engineer
    National Instruments

  • Metrics to estimate (or measure) IOPs cost of types of VM

    Hi,
    I am involved in a project to reorganise storage for our VMs so that virtual disks are stored on the most appropriate RAID groups as we are seeing latency on some LUNs at present.
    I would like to be able to estimate what the IOPs cost of a particular type of VM would be for future planning purposes. For example if we need to deploy a new Exchange server it would good to know the rough IOPs cost of that type of server before actually comissioning it so that we can start create its virtuals disks on the most suitable RAID groups. Obviously this would vary according to how much the server is being used but it would be good to know how an email server compares to a database server or compares to a file server. Does anyone know of any practical metric by which this can be measured.
    Is there any information availble through vCenter? Does vCenter give you information on real time IOPs per VM?

    I assume you are Anuj since this question is identical to the e-mail we got :-)
    General answer for everybody:
    Yes, we have an estimation tool that is used as part of the Forms2ADF assessment. While the tool is integrated with JHeadstart design-time clases, there is currently no option to run it through a JDeveloper wizard, or through the command line.
    The estimation tool counts various types of forms elements, and applies estimating weighting factors to each form element. These estimating factors are different for each customer, and for each application!
    We always migrate a set of selected forms (simple, average, complex) and based on the time spent on these forms and the characteristics of these forms, we set the estimating factors and extrapolate to a total migration effort by generating a spreadsheet using this estimating tool.
    Steven Davelaar,
    JHeadstart team.

  • RE: Forte Start up Delay

    Sean,
    It may be because of the fact that your launch server is pulling down the
    latest version of your installed partitions. I think we have the same
    problem, and there are 2 ways of dealing with this. 1. Run the development
    workshop using ftexec and not use launch server. 2. Put all the developers
    into a model node that does not have any applicaitons installed into this.
    Venkat Kodumudi
    Price Waterhouse LLP
    Internet: [email protected]
    Internet2: [email protected]
    -----Original Message-----
    From: [email protected] [SMTP:[email protected]]
    Sent: Monday, June 29, 1998 11:41 PM
    To: Venkat Kodumudi
    Subject: Forte Start up Delay
    To: [email protected] @ Internet
    cc:
    From: [email protected] @ Internet
    Date: 06/29/98 08:27:27 PM PDT
    Subject: Forte Start up Delay
    Hi all:
    We've been experiencing something interesting
    lately.
    On a HP K9000 system and a DEC AlphaServer 800
    system, the Forte Workshop window startup takes
    estimated 75 seconds of delay.
    It means, after forte printed out the usual
    "Attemping to connect to Launch Server.....
    Running release cl0 of applet Forte....... "
    messages, it will wait about 75 seconds for
    the Workshop window to show up.
    If one workshop window is up and running, any subsequence
    Forte Workshop window will show up immediately.
    After closed all the Forte Windows, the delay will happen
    again.
    We figured it might have something to do with the network
    setup, but we couldn't solve this problem.
    Anybody have experienced the same problem?
    Thanks in advance for any clues.
    Sean
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>-
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

    Hi Greg,
    Thanks for the suggestion. It's really cool. I hope that I have your
    suggestion earlier because we have all our client using the launcher to
    start our application now. In fact, we divided up our application functions
    into applets and have our own customized "launcher distributed" as a sort-of
    menu ( which provides the access control ). Changing back to use ftexec -fi
    .. would be a major modification. I just hope that Forte has some way to
    cheat the "b-tree" so that we can download the applet ourselves ( using some
    other media such as FTP, compression, floppy etc ) and update the "b-tree"
    later.
    Regards,
    Peter Sham.
    Hutchison Telecom. (Hong Kong).
    -----Original Message-----
    From: Greg Nyberg [SMTP:[email protected]]
    Sent: 1998 07 02 13:12
    To: 'Peter Sham (HTHK - Assistant Manager - Software
    Development, IITB)'
    Subject: RE: Forte Start up Delay
    We dont use the launcher to upgrade applications.. We use a c
    program
    which is actually the program run when they doubleclick on the icon.
    This program checks on an FTP server (sortof) to see if there is a
    more
    recent version, downloads the new version (which is really a
    self-extracting self-installing InstallShield program) and installs
    it.
    The c program then starts Forte using ftexec -fi ... technique.
    We have users all over the world, including a number of hotels in
    the
    Far East using a dial-up TCP/IP connection. With compression, etc,
    we
    get the size of the file down to about 2MB which takes like 30
    minutes
    for them to download when we need to upgrade.
    Write me if you want more info.
    -Greg
    > -----Original Message-----
    > From: Peter Sham (HTHK - Assistant Manager - Software Development,
    > IITB) [SMTP:[email protected]]
    > Sent: Wednesday, July 01, 1998 11:16 PM
    > To: Venkat Kodumudi
    > Cc: '[email protected]'; '[email protected]'
    > Subject: RE: Forte Start up Delay
    >
    > Hi Guys,
    >
    > Isn't it frustrating! We have the same problem on this "pulling
    down
    > the
    > latest version" feature on our production environment. We have
    now
    > about
    > 100M of applets and some PC is connected back to our computer
    center
    > through
    > some license line. Downloading all the applets means
    out-of-business
    > for
    > the whole morning. Up-grading the license line means increasing
    > operating
    > cost due to IT department inefficiency. So we can just prey that
    no
    > PC
    > crash on her hard disk, no btree will be corrupted or our user
    > wouldn't do
    > any funny things on his/her files, otherwise, reloading the whole
    > application means nightmare. Worst of all, we can't put our
    > application on
    > the file server. Is there any way out? Does anyone has a
    solution?
    >
    > Regards,
    > Peter Sham.
    > Hutchison Telecom. (Hong Kong)
    >
    > -----Original Message-----
    > From: Venkat Kodumudi [SMTP:[email protected]]
    > Sent: 1998 06 30 21:09
    > To: '[email protected]'
    > Cc: '[email protected]'
    > Subject: RE: Forte Start up Delay
    >
    > Sean,
    >
    > It may be because of the fact that your launch server is
    pulling
    > down the
    > latest version of your installed partitions. I think we have
    the
    > same
    > problem, and there are 2 ways of dealing with this. 1. Run
    the
    > development
    > workshop using ftexec and not use launch server. 2. Put all
    the
    > developers
    > into a model node that does not have any applicaitons
    installed
    > into
    > this.
    >
    > Venkat Kodumudi
    > Price Waterhouse LLP
    > Internet: [email protected]
    > Internet2: [email protected]
    >
    > > -----Original Message-----
    > > From: [email protected]
    > [SMTP:[email protected].
    > com]
    > > Sent: Monday, June 29, 1998 11:41 PM
    > > To: Venkat Kodumudi
    > > Subject: Forte Start up Delay
    > >
    > > To: [email protected] @ Internet
    > > cc:
    > > From: [email protected] @ Internet
    > > Date: 06/29/98 08:27:27 PM PDT
    > > Subject: Forte Start up Delay
    > >
    > > Hi all:
    > >
    > > We've been experiencing something interesting
    > > lately.
    > >
    > > On a HP K9000 system and a DEC AlphaServer 800
    > > system, the Forte Workshop window startup takes
    > > estimated 75 seconds of delay.
    > >
    > > It means, after forte printed out the usual
    > >
    > > "Attemping to connect to Launch Server.....
    > > Running release cl0 of applet Forte....... "
    > >
    > > messages, it will wait about 75 seconds for
    > > the Workshop window to show up.
    > >
    > > If one workshop window is up and running, any subsequence
    > > Forte Workshop window will show up immediately.
    > >
    > > After closed all the Forte Windows, the delay will happen
    > > again.
    > >
    > > We figured it might have something to do with the network
    > > setup, but we couldn't solve this problem.
    > >
    > > Anybody have experienced the same problem?
    > >
    > > Thanks in advance for any clues.
    > >
    > > Sean
    > >
    > >
    > >
    > >
    > > -
    > > To unsubscribe, email '[email protected]' with
    > > 'unsubscribe forte-users' as the body of the message.
    > > Searchable thread archive
    > <URL:http://pinehurst.sageit.com/listarchive/>
    > -
    > To unsubscribe, email '[email protected]' with
    > 'unsubscribe forte-users' as the body of the message.
    > Searchable thread archive
    > <URL:http://pinehurst.sageit.com/listarchive/>
    > -
    > To unsubscribe, email '[email protected]' with
    > 'unsubscribe forte-users' as the body of the message.
    > Searchable thread archive
    > <URL:http://pinehurst.sageit.com/listarchive/>
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

  • Metrics for Captivatedevelopment

    The company I work for would like me to convert some of our training material from PowerPoint slides to Captivate computer-based training.
    Are there any metrics out there for estimating how long  Captivate projects will take?
    What kind of hourly rates are being charged for developing Captivate training?
    Thanks for any light you can shed on these questions.

    Your two questions are pretty difficult to answer actually.
    Development time varies greatly based on the output that you require. For example:
    - Is it a Captivate screen recording
    - Is it soft skills training
    - Do you require a quiz
    - Do you require the finished course to be published to an LMS
    - Do you need any interactive components in the course
    - Do you have all assets already (storyboard, images etc.)
    - What is the lenght of the course
    - Will there be voice-over
    - Whats the developers experience level with Captivate
    and many many other factors.
    A 20 minute course might take 10 hours to create if it's a simple screen recording without any fancy stuff (menus, custom graphics, custom templates etc.) and it might take 200+ hours if it's a soft skills course with custom templates, interactivity, video, audio etc.
    The same goes for the hourly rates. What do you require the vendor to do for you?
    Should they create the entire package for you including templates, graphics, integration with LMS, quizzes, etc. or will you be supplying all the assets to the vendor for them to work with?
    I doubt that you will be able to find a "standard" hourly rate for developing E-learning content since it varies based on the tasks that needs to be performed. Also - in my experience - I find that most E-learning development contracts are based on an agreed price and not on an hourly basis.
    /Michael
    Visit my Captivate blog with tips & tricks, tutorials and Widgets.

  • Can not refresh the metrics in schedular

    Post Author: sachinddalal
    CA Forum: Performance Management and Dashboards
    Hi,
    When I refresh the metric using schedular, the metric is not refreshed , nor schedular return any error. But when checked in metrics proparties, the last refresh date is not changed, niether the values are updated.
    Whe I try to refresh the metric manual, the values are refresh.
    Please help me to troubleshoot the problem of refreshing metric through schedular.
    Thanks,
    Regards
    Sachin Dalal

    Post Author: jezbraker
    CA Forum: Performance Management and Dashboards
    Scheduler is pretty horrid for refreshing metrics.Better of to use the Rules engine and create a rule thats based on a schedule that based on condition (1=1 works well ) then refreshes metircs.troubleshooting is best done with the trace options in setup/parameters.there are a few other ways or seeing what the schedulers up to - but id stick to rules if i were you.

  • Campaign Metrics - # Bounces Switched?

    Hi -
    We have sent out several campaigns and are now reporting on them.
    The metrics seem to be mixed up on the subject area.
    The campaign was sent out 2/3/2011
    The receipent data on the campaign object shows delivery status of 8 hard bounces and 1 soft bounce as of 2/7/2011
    The dates are important since the report is 24 hours delayed......
    When we run our report using metrics from the Campaign Response History subject area - no formulas, just pulling Metrics."# of Soft Bounces and Metrics."# of Hard Bounces"
    the results are SWITCHED. I have tried to change teh aggregation rule from default to sum, just to check. No pivot tables are being used...just straight values.
    Does anyone know if this is really a bug or what else might be happening??
    Thanks,
    Ann

    Hi Ann,
    If you are sure you are seeing an error in the data, please enter an SR with Oracle Support.
    Thanks!

  • RE: (forte-users) 3J= 3M new to me error

    Hi Thomas,
    Thanks for your email but I think it will be interesting for Brenda not me.
    It is exactly what I have expected from Forte Support: detailed information
    about bugs and workarounds. But what I cannot understand is that #53398 was
    released without any information about possible reasons for this problem or
    suggested workarounds. My first reaction after reading this bugreport was to
    open a new case at CallCenter to get more information about it. Please
    release more information with your bug reports !
    Regards
    Zenon Adamek
    Information Services
    Senior Programmer Analyst
    Tel: 905 712-1084 ext. 3628
    Fax: 905 712-6709
    E-mail: zadamekpurolator.com
    -----Original Message-----
    From: Thomas Degen - Sun Germany Forte Tools - Bonn
    [SMTP:thomas.degensun.com]
    Sent: Wednesday, September 27, 2000 9:49 AM
    To: Adamek, Zenon
    Cc: 'Brenda Cumming'; Forte-userslists.xpedior.com
    Subject: RE: (forte-users) 3J=>3M new to me error
    Hi Zenon,
    bug #53398 is not a bug which will likely get fixed, it's an informational
    bugreport.
    You might see an errorstack like Brenda has reported (and described in
    informational
    bugreport #53398) probably when you are doing something illegal that is
    possible
    via Forte Tool but Forte is not trapping it for performance reasons. Hence
    you will see
    the error coming from your illegal operation only at runtime, probably
    only
    while
    running interpreted in the Forte IDE, but in worst case it might be even a
    segmentation
    violation.
    Technotes 12448 'Sudden client partition crashes at runtime' and 11225
    'Don't reparent
    mapped Widgets between UserWindows at runtime' explain this matter . See
    attached.
    But maybe Brenda is much more experiencing a problem as described by Forte
    Technote 11398 'Read Only Workspace Errors using ListViews or ActiveX
    control'
    that might get easily resolved via setting of FORTE_YIELD_THROTTLE=0.
    Good Luck and Best Regards !
    BTW: I've logged bug #53398, so I've felt responsible to explain its real
    background.
    Thomas
    Thomas Degen
    Sun Microsystems - Forte Tools
    Forte CTE & Sustaining Group
    Technical Support Germany
    tel.:+49.228/91499-50
    MailTo:thomas.degensun.com
    Technote 11398 Read Only Workspace Errors using ListViews or ActiveX
    control
    SCENARIO:
    Getting some unusual interpreter errors that result in an error stating
    that
    the workspace has been set to read only. Please see Enclosures for the
    two
    most common error stacks that have been encountered. The abbreviated
    versions of the errors are:
    - Can't read record (record size = -1)
    - Id in index does not match id in record header in data file
    - Recursive deserialization attempted.
    - Unknown Mark type in deserialization
    - Could not read record (64,74615) from repository data file.
    Header
    is corrupt.
    These errors can be happening in either the development environment when
    running from one of the development workshops, or with the deployed
    application.
    The bug outlined in this Technote may be the culprit if the errors above
    are
    seen when running a client on Windows NT or Motif and the user interface
    incorporates ActiveX controls or ListView/TreeView widgets.
    CAUSE:
    Basically what is happening is that in rare circumstances Forte may invoke
    a
    nested copy of the interpreter while the first interpreter has yielded.
    This
    is not a problem in and of itself, but in the case where the original
    interpreter was in the middle of a repository fetch when it yielded, and
    the second interpreter needs to fetch code as well, we will get one of the
    errors listed above, depending on the exact timing. The reason for the
    errors is that the repository code at this level is thread-safe but not
    re-entrant. It is protected by a mutex that is already owned by the
    current task. Which, given the scenario outlined here, where the two
    interpreters are running inside of the same task, results in the nested
    interpreter being allowed to change data out from under the first.
    While for every fetch one or more calls to WindowSystem.Yield will be made
    (this is there to prevent the semblance of system lock-up on Win 3.1,
    where
    Yield is the only way other applications can be allowed to run), there is
    a parameter which controls how often to actually yield, which by default
    is
    set to one out of every 100 calls. This is the reason the problem is
    intermittent--you need a yield to occur during a repository fetch
    which starts another interpreter which also needs to fetch code from
    disk.
    The reason this has only surfaced recently is that the nested interpreter
    scenario can only happen in 2 cases that we know of:
    - ActiveX controls which respond to events/Windows messages
    - Outline fields/ListViews with column(s) mapped to virtual
    attributes
    In all other normal cases, the yield can process the message (typically a
    paint message) without starting another interpreter, so regardless of
    whether
    the first interpreter yielded during a repository operation or not, there
    is
    no conflict.
    SOLUTION:
    The workaround is to prevent yields altogether by setting the
    FORTE_YIELD_THROTTLE environment variable equal to 0 in the client's
    environment. This should have no detrimental effects since the yield code
    is in place solely for Windows 3.1x clients.
    ERROR STACK 1
    SYSTEM ERROR: Because of a prior error, your workspace was set to
    read-only to
    prevent the application from attempting to write to the repository. The
    repository and work you have saved to the repository are safe. If your
    workspace
    contains unsaved work, you may use the following procedure to save this
    work.
    First, export the changed components. Then, shut down and restart this
    application and reopen this workspace in read-write mode. Finally, import
    the
    changed components and save your workspace.
    Class: qqrp_RepResourceException
    Error #: [1101, 695]
    Detected at: qqrp_Session::GetObjectById
    Last TOOL statement: method EFWindowController.EFEventLoop
    Error Time: Tue Nov 18 15:58:47
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1,
    taskId =
    [7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1.23]) in application
    "ConPlus_GUI_cl0", pid 147 on node ISD060 in environment EdgeTest.
    The remainder of the Error Manager stack is:
    SYSTEM ERROR: Internal Error attempting to deserialize element (64,67470)
    (fetch
    bitmask is 0x20). Your workspace is now read-only to prevent the
    application
    from attempting to write to the repository. The repository and work you
    have
    saved to the repository are safe. If your workspace contains unsaved work,
    you
    may use the following procedure to save this work. First, export the
    changed
    components. Then, shut down and restart this application and reopen this
    workspace in read-write mode. Finally, import the changed components and
    save
    your workspace.
    Class: qqrp_RepResourceException
    Error #: [1101, 61]
    Detected at: qqrp_LogicalSession::MaterializeObject
    Last TOOL statement: method EFTabManagerNew.EFNoteBookHandler
    Error Time: Tue Nov 18 15:58:47
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1,
    taskId =
    [7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1.23]) in application
    "ConPlus_GUI_cl0", pid 147 on node ISD060 in environment EdgeTest.
    SYSTEM ERROR: Unknown Mark type in deserialization.
    Class: qqsp_ImplementationException
    Error #: [1101, 34]
    Detected at: qqrp_DeSerializeObject::ProcessHdr
    Error Time: Tue Nov 18 15:58:47
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1,
    taskId =
    [7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1.23]) in application
    "ConPlus_GUI_cl0", pid 147 on node ISD060 in environment EdgeTest.
    ERROR STACK 2
    SYSTEM ERROR: A serious error has occurred in Repository
    (c:\PROGRA~1\CSSPTEST\conplu0). Corrective action may be necessary.
    Notify
    your repository administrator.
    Class: qqsp_ImplementationException
    Error #: [1101, 198]
    Detected at: qqrp_Repository::Fetch
    Last TOOL statement: method
    SalesDevelopment_NWC.DEVNotifyofTabSetCurrent
    Error Time: Wed Dec 03 10:27:22
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 769D4310-6B88-11D1-84FD-65BF87C8AA77:0x121:0x1,
    taskId =
    [769D4310-6B88-11D1-84FD-65BF87C8AA77:0x121:0x1.22]) in application
    "ConPlus_GUI_cl0", pid 172 on node ISD42 in environment Edge.
    SYSTEM ERROR: Could not read record (64,74615) from repository data file.
    Header is corrupt.
    Class: qqsp_ImplementationException
    Error #: [1106, 612]
    Detected at: qqbt_BtreeAccess::FetchDataFileRecord
    Error Time: Wed Dec 03 10:27:22
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 769D4310-6B88-11D1-84FD-65BF87C8AA77:0x121:0x1,
    taskId =
    [769D4310-6B88-11D1-84FD-65BF87C8AA77:0x121:0x1.22]) in application
    "ConPlus_GUI_cl0", pid 172 on node ISD42 in environment Edge.
    Technote 11225 Don't reparent mapped Widgets between UserWindows at
    runtime
    It is sometimes tempting to unparent a widget from one UserWindow and
    reparent
    it into another at runtime. However, this can cause crashes if the widget
    (or
    its decendants) are "mapped" to data. Here's why...
    Suppose you have two UserWindows, UW1 and UW2. UW1 contains a DataField
    (DF1)
    which is mapped to a TextData. UW2 contains a RadioList (RL2) which is
    mapped to
    a scalar Integer. At compile time, every mapped attribute is internally
    assigned
    a "Map ID" (a small integer) which is used to tie the Widget to its
    corresponding attribute. These Map IDs are used by the Widget to look up a
    pointer to their data in a "Map" which is maintained by the UserWindow.
    Each
    UserWindow is assumed be to independent of the others, so there is nothing
    wrong
    with Widgets in different UserWindows being assigned the same Map IDs.
    In
    this
    case, let's assume that DF1 and RL2 both got assigned the same Map ID of
    3. No
    problem so far, since each lives in a separate UserWindow with a separate
    map.
    Now suppose at runtime the application "detaches" or unparents DF1 from
    its
    UserWindow and reparents it somewhere into UW2. When it comes time for DF1
    to
    paint itself the Display System it must ask the Runtime System for the
    value of
    DF1's mapped attribute. To do that it says "give me the value of the
    TextData
    for DF1. You'll find it in the Map for this UserWindow (UW1), and its Map
    ID is
    3". When the runtime system goes to do this it expects to find a TextData
    in
    this "slot" of the map, but instead it picks up the integer which is
    mapped to
    RL2. At best this leads to bad data being returned; more likely you get a
    segfault and a crash.
    If DF1 was not a mapped attribute (say, a Rectangle) there would be no
    problem
    because there is no data mapped to a Rectangle. If instead of moving DF1
    you
    created a brand new DataField on the fly there would be no problem,
    because the
    dynamic DataField would not have any Map ID and so couldn't conflict with
    any
    IDs in UW2.
    So how do you solve this problem? This is exactly what Nested Windows are
    all
    about. While you can't move DF1 into the middle of UW2, you can nest
    UW1.
    This
    works because UW1 brings its map with it, and when you access DF1 it knows
    to
    look up its value in UW1's map.
    UserWindows are intended to be the "unit of compilabilty" that can be
    nested
    inside other UserWindows. It is dangerous to "transplant" anything from
    inside
    one UserWindow into another at runtime.
    (Note that you can't avoid this problem by cloning DF1 because the MapID
    gets
    copied along with it, and the clone will fail in the same way.)
    Further details explained in related technote 12448 'Sudden client
    partition
    crashes at runtime.'
    Technote 12448 Sudden client partition crashes at runtime
    Scenario : You have two UserWindows, A and B. When Window A starts up, it
    instantiates an instance of B and reparents some component of B into A's
    window
    hierarchy.
    This is not allowed and almost always leads to an error at best or at
    worse a
    segmentation fault.
    Here's why :
    When you compile a UserWindow in Forte, each "mapped attribute" (whether a
    form
    element or menu element) is assigned an internal ID which represents an
    offset into
    that UserWindow's table of mapped attributes. This offset is only valid
    in the
    context of the UserWindow in which it was compiled. If you detach a
    FieldWidget or
    MenuWidget from one compiled Window ("tmpMenu" for example) and then
    parent
    into another compiled window ("tmpWindow") the internal ID comes with it.
    When Forte tries to make use of that copied widget it uses the ID as an
    offset
    into tmpWindow's table of mapped attributes. But that copied offset is
    meaningless in the context of tmpWindow's table, so you get some kind off
    error.
    In this case it found that the data type of the variable in the slot
    wasn't
    what
    was expected. But you might even index off the end of the table and get a
    segmentation fault.
    There is nothing to prevent you from dynamically creating menu items and
    adding
    them to a window at runtime; that will work fine. Although of course you
    can't
    access them via mapped attributes, since those can only be created at
    compile time.
    But you are not allowed to reparent a widget from one compiled UserWindow
    into
    the hierarchy of another.
    More information may be found in technote 11225 'Don't reparent mapped
    Widgets
    between UserWindows at runtime'.
    Possible errorstacks seen at runtime instead of a complete crash or
    segmentation
    violation while you are illegally reparenting a widget or menuitem between
    windows
    at runtime:
    Map::SetSubjectData: Invalid conversion from map type 0 to subject type 22
    SYSTEM ERROR: Bad parameter at location 3 in method
    qqrt_MapClassAccess::ProcessSubjectData.
    Class: qqsp_Exception
    Error #: [1001, 381]
    Detected at: qqrt_MapClassAccess::ProcessSubjectData at 3
    Error Time: Wed Aug 09 13:03:57
    Exception occurred (locally) on partition "testproject_CL0_Client",
    (partitionId = D4914A10-36C1-11D4-91B3-419AA33BAA77:0x208:0xd,
    taskId =
    [D4914A10-36C1-11D4-91B3-419AA33BAA77:0x208:0xd.68]) in application
    "FTLaunch_cl0", pid 672 on node ONEWAY in environment Audi3M2Env.
    At 13:14 26.09.00 -0400, Adamek, Zenon wrote:
    Hi,
    It is the unfixed defect 53398. Please contact Forte support.
    Zenon
    -----Original Message-----
    From: Brenda Cumming [SMTP:brenda_cummingtranscanada.com]
    Sent: Tuesday, September 26, 2000 1:15 PM
    To: Forte User group
    Subject: (forte-users) 3J=>3M new to me error
    Hi,
    We are in the process of going from 3J1 to 3.0.M.2, and I am getting
    this error that I am unfamiliar with on a GUI that works fine in 3J.
    It
    does not happen all the time, and I have been unable to establish the
    pattern that kicks it off. Has anyone seen this before?
    PS- this error is not occurring in the deployed (non-compiled) app,but
    when I am running locally from my workspace.
    SYSTEM ERROR: Bad parameter at location 6 in method
    qqrt_MapClassAccess::ProcessSubjectData.
    Class: qqsp_Exception
    Error #: [1001, 381]
    Detected at: qqrt_MapClassAccess::ProcessSubjectData at 6
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition
    "ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2,
    taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    SYSTEM ERROR: Can't find scope 20070 for a class.
    Class: qqsp_Exception
    Error #: [201, 11]
    Detected at: qqlo_ClassTableLoadScope at 1
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition"ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2, taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    SYSTEM ERROR: Because of a prior error, your workspace was set to
    read-only to prevent the application from attempting to write to the repository.
    The repository and work you have saved to the repository are safe. If
    your
    workspace contains unsaved work, you may use the following procedure
    to save this work. First, export the changed components. Then, shut down and
    restart this application and reopen this workspace in read-write mode.
    Finally, import the changed components and save your workspace.
    Class: qqrp_RepResourceException
    Error #: [1101, 695]
    Detected at: qqrp_Session::IsDistributed
    Last TOOL statement: method PPMeasWin.
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition
    "ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2, taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    SYSTEM ERROR: Internal Error attempting to deserialize element
    (64,120684) (fetch bitmask is 0x20). Your workspace is now read-onlyto
    prevent
    the application from attempting to write to the repository. The
    repository
    and work you have saved to the repository are safe. If your workspace
    contains unsaved work, you may use the following procedure to savethis
    work.
    First, export the changed components. Then, shut down and restart this
    application and reopen this workspace in read-write mode. Finally, import the
    changed components and save your workspace.
    Class: qqrp_RepResourceException
    Error #: [1101, 61]
    Detected at: qqrp_LogicalSession::MaterializeObject
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition
    "ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2, taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    SYSTEM ERROR: Recursive Deserialization attempted, Internal Error!
    Class: qqsp_UsageException with ReasonCode: SP_ER_INVALIDSTATE
    Error #: [301, 231]
    Detected at: qqsp_DeSerializeDriver::Run at 1
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition"ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2, taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in anew
    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

    Hi Thomas,
    Thanks for your email but I think it will be interesting for Brenda not me.
    It is exactly what I have expected from Forte Support: detailed information
    about bugs and workarounds. But what I cannot understand is that #53398 was
    released without any information about possible reasons for this problem or
    suggested workarounds. My first reaction after reading this bugreport was to
    open a new case at CallCenter to get more information about it. Please
    release more information with your bug reports !
    Regards
    Zenon Adamek
    Information Services
    Senior Programmer Analyst
    Tel: 905 712-1084 ext. 3628
    Fax: 905 712-6709
    E-mail: zadamekpurolator.com
    -----Original Message-----
    From: Thomas Degen - Sun Germany Forte Tools - Bonn
    [SMTP:thomas.degensun.com]
    Sent: Wednesday, September 27, 2000 9:49 AM
    To: Adamek, Zenon
    Cc: 'Brenda Cumming'; Forte-userslists.xpedior.com
    Subject: RE: (forte-users) 3J=>3M new to me error
    Hi Zenon,
    bug #53398 is not a bug which will likely get fixed, it's an informational
    bugreport.
    You might see an errorstack like Brenda has reported (and described in
    informational
    bugreport #53398) probably when you are doing something illegal that is
    possible
    via Forte Tool but Forte is not trapping it for performance reasons. Hence
    you will see
    the error coming from your illegal operation only at runtime, probably
    only
    while
    running interpreted in the Forte IDE, but in worst case it might be even a
    segmentation
    violation.
    Technotes 12448 'Sudden client partition crashes at runtime' and 11225
    'Don't reparent
    mapped Widgets between UserWindows at runtime' explain this matter . See
    attached.
    But maybe Brenda is much more experiencing a problem as described by Forte
    Technote 11398 'Read Only Workspace Errors using ListViews or ActiveX
    control'
    that might get easily resolved via setting of FORTE_YIELD_THROTTLE=0.
    Good Luck and Best Regards !
    BTW: I've logged bug #53398, so I've felt responsible to explain its real
    background.
    Thomas
    Thomas Degen
    Sun Microsystems - Forte Tools
    Forte CTE & Sustaining Group
    Technical Support Germany
    tel.:+49.228/91499-50
    MailTo:thomas.degensun.com
    Technote 11398 Read Only Workspace Errors using ListViews or ActiveX
    control
    SCENARIO:
    Getting some unusual interpreter errors that result in an error stating
    that
    the workspace has been set to read only. Please see Enclosures for the
    two
    most common error stacks that have been encountered. The abbreviated
    versions of the errors are:
    - Can't read record (record size = -1)
    - Id in index does not match id in record header in data file
    - Recursive deserialization attempted.
    - Unknown Mark type in deserialization
    - Could not read record (64,74615) from repository data file.
    Header
    is corrupt.
    These errors can be happening in either the development environment when
    running from one of the development workshops, or with the deployed
    application.
    The bug outlined in this Technote may be the culprit if the errors above
    are
    seen when running a client on Windows NT or Motif and the user interface
    incorporates ActiveX controls or ListView/TreeView widgets.
    CAUSE:
    Basically what is happening is that in rare circumstances Forte may invoke
    a
    nested copy of the interpreter while the first interpreter has yielded.
    This
    is not a problem in and of itself, but in the case where the original
    interpreter was in the middle of a repository fetch when it yielded, and
    the second interpreter needs to fetch code as well, we will get one of the
    errors listed above, depending on the exact timing. The reason for the
    errors is that the repository code at this level is thread-safe but not
    re-entrant. It is protected by a mutex that is already owned by the
    current task. Which, given the scenario outlined here, where the two
    interpreters are running inside of the same task, results in the nested
    interpreter being allowed to change data out from under the first.
    While for every fetch one or more calls to WindowSystem.Yield will be made
    (this is there to prevent the semblance of system lock-up on Win 3.1,
    where
    Yield is the only way other applications can be allowed to run), there is
    a parameter which controls how often to actually yield, which by default
    is
    set to one out of every 100 calls. This is the reason the problem is
    intermittent--you need a yield to occur during a repository fetch
    which starts another interpreter which also needs to fetch code from
    disk.
    The reason this has only surfaced recently is that the nested interpreter
    scenario can only happen in 2 cases that we know of:
    - ActiveX controls which respond to events/Windows messages
    - Outline fields/ListViews with column(s) mapped to virtual
    attributes
    In all other normal cases, the yield can process the message (typically a
    paint message) without starting another interpreter, so regardless of
    whether
    the first interpreter yielded during a repository operation or not, there
    is
    no conflict.
    SOLUTION:
    The workaround is to prevent yields altogether by setting the
    FORTE_YIELD_THROTTLE environment variable equal to 0 in the client's
    environment. This should have no detrimental effects since the yield code
    is in place solely for Windows 3.1x clients.
    ERROR STACK 1
    SYSTEM ERROR: Because of a prior error, your workspace was set to
    read-only to
    prevent the application from attempting to write to the repository. The
    repository and work you have saved to the repository are safe. If your
    workspace
    contains unsaved work, you may use the following procedure to save this
    work.
    First, export the changed components. Then, shut down and restart this
    application and reopen this workspace in read-write mode. Finally, import
    the
    changed components and save your workspace.
    Class: qqrp_RepResourceException
    Error #: [1101, 695]
    Detected at: qqrp_Session::GetObjectById
    Last TOOL statement: method EFWindowController.EFEventLoop
    Error Time: Tue Nov 18 15:58:47
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1,
    taskId =
    [7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1.23]) in application
    "ConPlus_GUI_cl0", pid 147 on node ISD060 in environment EdgeTest.
    The remainder of the Error Manager stack is:
    SYSTEM ERROR: Internal Error attempting to deserialize element (64,67470)
    (fetch
    bitmask is 0x20). Your workspace is now read-only to prevent the
    application
    from attempting to write to the repository. The repository and work you
    have
    saved to the repository are safe. If your workspace contains unsaved work,
    you
    may use the following procedure to save this work. First, export the
    changed
    components. Then, shut down and restart this application and reopen this
    workspace in read-write mode. Finally, import the changed components and
    save
    your workspace.
    Class: qqrp_RepResourceException
    Error #: [1101, 61]
    Detected at: qqrp_LogicalSession::MaterializeObject
    Last TOOL statement: method EFTabManagerNew.EFNoteBookHandler
    Error Time: Tue Nov 18 15:58:47
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1,
    taskId =
    [7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1.23]) in application
    "ConPlus_GUI_cl0", pid 147 on node ISD060 in environment EdgeTest.
    SYSTEM ERROR: Unknown Mark type in deserialization.
    Class: qqsp_ImplementationException
    Error #: [1101, 34]
    Detected at: qqrp_DeSerializeObject::ProcessHdr
    Error Time: Tue Nov 18 15:58:47
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1,
    taskId =
    [7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1.23]) in application
    "ConPlus_GUI_cl0", pid 147 on node ISD060 in environment EdgeTest.
    ERROR STACK 2
    SYSTEM ERROR: A serious error has occurred in Repository
    (c:\PROGRA~1\CSSPTEST\conplu0). Corrective action may be necessary.
    Notify
    your repository administrator.
    Class: qqsp_ImplementationException
    Error #: [1101, 198]
    Detected at: qqrp_Repository::Fetch
    Last TOOL statement: method
    SalesDevelopment_NWC.DEVNotifyofTabSetCurrent
    Error Time: Wed Dec 03 10:27:22
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 769D4310-6B88-11D1-84FD-65BF87C8AA77:0x121:0x1,
    taskId =
    [769D4310-6B88-11D1-84FD-65BF87C8AA77:0x121:0x1.22]) in application
    "ConPlus_GUI_cl0", pid 172 on node ISD42 in environment Edge.
    SYSTEM ERROR: Could not read record (64,74615) from repository data file.
    Header is corrupt.
    Class: qqsp_ImplementationException
    Error #: [1106, 612]
    Detected at: qqbt_BtreeAccess::FetchDataFileRecord
    Error Time: Wed Dec 03 10:27:22
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 769D4310-6B88-11D1-84FD-65BF87C8AA77:0x121:0x1,
    taskId =
    [769D4310-6B88-11D1-84FD-65BF87C8AA77:0x121:0x1.22]) in application
    "ConPlus_GUI_cl0", pid 172 on node ISD42 in environment Edge.
    Technote 11225 Don't reparent mapped Widgets between UserWindows at
    runtime
    It is sometimes tempting to unparent a widget from one UserWindow and
    reparent
    it into another at runtime. However, this can cause crashes if the widget
    (or
    its decendants) are "mapped" to data. Here's why...
    Suppose you have two UserWindows, UW1 and UW2. UW1 contains a DataField
    (DF1)
    which is mapped to a TextData. UW2 contains a RadioList (RL2) which is
    mapped to
    a scalar Integer. At compile time, every mapped attribute is internally
    assigned
    a "Map ID" (a small integer) which is used to tie the Widget to its
    corresponding attribute. These Map IDs are used by the Widget to look up a
    pointer to their data in a "Map" which is maintained by the UserWindow.
    Each
    UserWindow is assumed be to independent of the others, so there is nothing
    wrong
    with Widgets in different UserWindows being assigned the same Map IDs.
    In
    this
    case, let's assume that DF1 and RL2 both got assigned the same Map ID of
    3. No
    problem so far, since each lives in a separate UserWindow with a separate
    map.
    Now suppose at runtime the application "detaches" or unparents DF1 from
    its
    UserWindow and reparents it somewhere into UW2. When it comes time for DF1
    to
    paint itself the Display System it must ask the Runtime System for the
    value of
    DF1's mapped attribute. To do that it says "give me the value of the
    TextData
    for DF1. You'll find it in the Map for this UserWindow (UW1), and its Map
    ID is
    3". When the runtime system goes to do this it expects to find a TextData
    in
    this "slot" of the map, but instead it picks up the integer which is
    mapped to
    RL2. At best this leads to bad data being returned; more likely you get a
    segfault and a crash.
    If DF1 was not a mapped attribute (say, a Rectangle) there would be no
    problem
    because there is no data mapped to a Rectangle. If instead of moving DF1
    you
    created a brand new DataField on the fly there would be no problem,
    because the
    dynamic DataField would not have any Map ID and so couldn't conflict with
    any
    IDs in UW2.
    So how do you solve this problem? This is exactly what Nested Windows are
    all
    about. While you can't move DF1 into the middle of UW2, you can nest
    UW1.
    This
    works because UW1 brings its map with it, and when you access DF1 it knows
    to
    look up its value in UW1's map.
    UserWindows are intended to be the "unit of compilabilty" that can be
    nested
    inside other UserWindows. It is dangerous to "transplant" anything from
    inside
    one UserWindow into another at runtime.
    (Note that you can't avoid this problem by cloning DF1 because the MapID
    gets
    copied along with it, and the clone will fail in the same way.)
    Further details explained in related technote 12448 'Sudden client
    partition
    crashes at runtime.'
    Technote 12448 Sudden client partition crashes at runtime
    Scenario : You have two UserWindows, A and B. When Window A starts up, it
    instantiates an instance of B and reparents some component of B into A's
    window
    hierarchy.
    This is not allowed and almost always leads to an error at best or at
    worse a
    segmentation fault.
    Here's why :
    When you compile a UserWindow in Forte, each "mapped attribute" (whether a
    form
    element or menu element) is assigned an internal ID which represents an
    offset into
    that UserWindow's table of mapped attributes. This offset is only valid
    in the
    context of the UserWindow in which it was compiled. If you detach a
    FieldWidget or
    MenuWidget from one compiled Window ("tmpMenu" for example) and then
    parent
    into another compiled window ("tmpWindow") the internal ID comes with it.
    When Forte tries to make use of that copied widget it uses the ID as an
    offset
    into tmpWindow's table of mapped attributes. But that copied offset is
    meaningless in the context of tmpWindow's table, so you get some kind off
    error.
    In this case it found that the data type of the variable in the slot
    wasn't
    what
    was expected. But you might even index off the end of the table and get a
    segmentation fault.
    There is nothing to prevent you from dynamically creating menu items and
    adding
    them to a window at runtime; that will work fine. Although of course you
    can't
    access them via mapped attributes, since those can only be created at
    compile time.
    But you are not allowed to reparent a widget from one compiled UserWindow
    into
    the hierarchy of another.
    More information may be found in technote 11225 'Don't reparent mapped
    Widgets
    between UserWindows at runtime'.
    Possible errorstacks seen at runtime instead of a complete crash or
    segmentation
    violation while you are illegally reparenting a widget or menuitem between
    windows
    at runtime:
    Map::SetSubjectData: Invalid conversion from map type 0 to subject type 22
    SYSTEM ERROR: Bad parameter at location 3 in method
    qqrt_MapClassAccess::ProcessSubjectData.
    Class: qqsp_Exception
    Error #: [1001, 381]
    Detected at: qqrt_MapClassAccess::ProcessSubjectData at 3
    Error Time: Wed Aug 09 13:03:57
    Exception occurred (locally) on partition "testproject_CL0_Client",
    (partitionId = D4914A10-36C1-11D4-91B3-419AA33BAA77:0x208:0xd,
    taskId =
    [D4914A10-36C1-11D4-91B3-419AA33BAA77:0x208:0xd.68]) in application
    "FTLaunch_cl0", pid 672 on node ONEWAY in environment Audi3M2Env.
    At 13:14 26.09.00 -0400, Adamek, Zenon wrote:
    Hi,
    It is the unfixed defect 53398. Please contact Forte support.
    Zenon
    -----Original Message-----
    From: Brenda Cumming [SMTP:brenda_cummingtranscanada.com]
    Sent: Tuesday, September 26, 2000 1:15 PM
    To: Forte User group
    Subject: (forte-users) 3J=>3M new to me error
    Hi,
    We are in the process of going from 3J1 to 3.0.M.2, and I am getting
    this error that I am unfamiliar with on a GUI that works fine in 3J.
    It
    does not happen all the time, and I have been unable to establish the
    pattern that kicks it off. Has anyone seen this before?
    PS- this error is not occurring in the deployed (non-compiled) app,but
    when I am running locally from my workspace.
    SYSTEM ERROR: Bad parameter at location 6 in method
    qqrt_MapClassAccess::ProcessSubjectData.
    Class: qqsp_Exception
    Error #: [1001, 381]
    Detected at: qqrt_MapClassAccess::ProcessSubjectData at 6
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition
    "ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2,
    taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    SYSTEM ERROR: Can't find scope 20070 for a class.
    Class: qqsp_Exception
    Error #: [201, 11]
    Detected at: qqlo_ClassTableLoadScope at 1
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition"ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2, taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    SYSTEM ERROR: Because of a prior error, your workspace was set to
    read-only to prevent the application from attempting to write to the repository.
    The repository and work you have saved to the repository are safe. If
    your
    workspace contains unsaved work, you may use the following procedure
    to save this work. First, export the changed components. Then, shut down and
    restart this application and reopen this workspace in read-write mode.
    Finally, import the changed components and save your workspace.
    Class: qqrp_RepResourceException
    Error #: [1101, 695]
    Detected at: qqrp_Session::IsDistributed
    Last TOOL statement: method PPMeasWin.
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition
    "ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2, taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    SYSTEM ERROR: Internal Error attempting to deserialize element
    (64,120684) (fetch bitmask is 0x20). Your workspace is now read-onlyto
    prevent
    the application from attempting to write to the repository. The
    repository
    and work you have saved to the repository are safe. If your workspace
    contains unsaved work, you may use the following procedure to savethis
    work.
    First, export the changed components. Then, shut down and restart this
    application and reopen this workspace in read-write mode. Finally, import the
    changed components and save your workspace.
    Class: qqrp_RepResourceException
    Error #: [1101, 61]
    Detected at: qqrp_LogicalSession::MaterializeObject
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition
    "ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2, taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    SYSTEM ERROR: Recursive Deserialization attempted, Internal Error!
    Class: qqsp_UsageException with ReasonCode: SP_ER_INVALIDSTATE
    Error #: [301, 231]
    Detected at: qqsp_DeSerializeDriver::Run at 1
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition"ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2, taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in anew
    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

  • Cardinality estimator 2014 is off with OR in where clause

    Here is my test setup on SQL Server 2014.
    -- Create big table
    CREATE TABLE [dbo].[Store](
    Id int IDENTITY(1,1) NOT NULL,
    City int NOT NULL,
    Size int NOT NULL,
    Name varchar(max) NULL,
    CONSTRAINT [PK_Store] PRIMARY KEY CLUSTERED ([Id] ASC)
    GO
    CREATE NONCLUSTERED INDEX [IX_Store] ON [dbo].[Store] (City ASC, Size ASC)
    GO
    -- Fill with 100k rows
    INSERT Store
    SELECT i % 101, i % 11, 'Store ' + CAST(i AS VARCHAR)
    FROM
    (SELECT TOP 100000 ROW_NUMBER() OVER (ORDER BY s1.[object_id]) AS i
    FROM sys.all_objects s1, sys.all_objects s2) numbers
    GO
    -- Create small table
    CREATE TABLE #StoreRequest (City int NOT NULL, Size int NOT NULL)
    GO
    INSERT #StoreRequest values (55, 1)
    INSERT #StoreRequest values (66, 2)
    Now I execute the following query (I force the index to show statistics estimates)
    SELECT s.City
    FROM #StoreRequest AS r
    INNER JOIN Store AS s WITH(INDEX(IX_Store), FORCESEEK)
    ON s.City = r.City AND s.Size = r.Size
    WHERE s.Size <> 1 OR r.City <> 55
    Here are the estimates that I get (I'm not allowed to upload pictures):
    Index Seek IX_Store
    Actual Number of Rows: 90
    Estimated Number of Rows: 50000
    Fixing WHERE clause to use one table not two makes the estimate perfect:
    SELECT s.City
    FROM #StoreRequest AS r
    INNER JOIN Store AS s WITH(INDEX(IX_Store), FORCESEEK)
    ON s.City = r.City AND s.Size = r.Size
    WHERE s.Size <> 1 OR s.City <> 55
    Index Seek IX_Store
    Actual Number of Rows: 90
    Estimated Number of Rows: 89.74
    Switching to 2012 compatibility mode gives estimate of 1 in both cases:
    Index Seek IX_Store
    Actual Number of Rows: 90
    Estimated Number of Rows: 1
    Could anyone explain the first result? I'm a bit worried about it. The fix in this case is trivial, but this problem gave us quite some headache in more complex real life queries with multiple joins.
    Thank you!

    But not full statistics on a field basis, just sometimes some default stats like total row count that some plans will build.  Even your StoreRequest table only has one two-field index that will have a full histogram.
    But I've seen SQL Server make massively bad plans on two-field indexes.
    I've seen SQL Server go wrong one-column indexes, so that is not a very relevant point.
    Temp tables or not, the estimate here is clearly incorrect. SQL Server knows the density of Size and City. It knows the cardinality of the temp table. The density information gives how many rows the the join will produce. The WHERE clause will then remove
    a certain number of rows. With no statistics for the temp table, it does not now how many, but it will apply some standard guess.
    50000 is a completely bogus number, because the join cannot produce that many rows, and SQL Server is able to compute the join with out the WHERE clause decently. (Well, it estimates 90, when the number is 180.) No, this is obviously a case of the cardinality
    estimator giving up completely.
    It is worth noting that both these WHERE clauses gives reasonable estimates:
     WHERE r.Size <> 11 OR r.City <> 550
     WHERE s.Size <> 11 OR s.City <> 550
    Whereas these two gives the spooky 50000:
     WHERE s.Size <> 11 OR r.City <> 550
     WHERE r.Size <> 11 OR s.City <> 550
    Erland Sommarskog, SQL Server MVP, [email protected]

Maybe you are looking for

  • SCCM 2007 and 2012 coexistence and Cross Forest support

    Hi All I have a question My company has recently acquired another company That company exist of 2 forests (forest A has one domain namely domain A : and forest B has one domain namely domain B) with a two way forest trusts between them Domain A has a

  • HT201320 i am unable to switch my mail from home screen

    Dear All, I am unable to connect my mail. Also email section in home scteen is not supporting

  • Background problems

    Hi guys!!! I need some help. First i want to place a background picture in a jframe but it covers all the components. What can i do? And also i can't change the background color of jframe it stays always grey. What can i do in this case? Please Help!

  • Black and white colour profiles LR4 to CS6

    Yesterday when I opened a black and white image from LR4 to Photoshop CS6 they opened as RGB-sRGB, today after doing an update to both photoshop and camera raw they now open up with an embedded profile mismatch of gray gamma with the option to change

  • HT202274 how do i reset my system password

    I upgraded my imac to yosemite and now my kodak printer won't work. I have figured out how to fix this problem by reading through the community post but now need my system password to proceed. However I have forgotten it and not sure how to reset it.