- From: Steven Pemberton <steven.pemberton@cwi.nl>
- Date: Wed, 15 Feb 2017 11:44:00 +0100
- To: "Erik Bruchez" <ebruchez@orbeon.com>, "Nick Van den Bleeken" <Nick.Van.den.Bleeken@inventivegroup.com>
- Cc: XForms <public-xformsusers@w3.org>
- Message-ID: <op.yvo6rmwosmjzpq@steven-xps>
On Wed, 15 Feb 2017 08:43:39 +0100, Nick Van den Bleeken
<Nick.Van.den.Bleeken@inventivegroup.com> wrote:
>
> Erik, Steven,
>
>
> It might indeed be time to ‘improve’ the dependency algorithm.
> Nevertheless, we should be careful that loosening the requirements of
> RRR doesn’t further makes it more difficult for form authors >to create
> forms that work across implementation. The wording in the spec is
> carefully tweaked by John to ensure interoperability. Loosening the
> requirements must be done with great care, >otherwise we might for
> example make the order of specifying the binds have an impact of the
> result, form authors relying on the events be dispatched might need to
> change their forms, …
>
> (as a side note, I’m not sure how interoperable those ‘edge’ cases are
> today).
I like this bit of the specification:
* At the start of a recalculate, there is a, possibly empty, list L of
instance nodes whose values may have been changed, e.g., by user input or
by a setvalue action.
* All nodes in L, if any, and nodes that are computationally dependent on
nodes in L must be recalculated.
* Only a single recalculation of each compute that is computationally
dependent on elements in L may be performed.
* A compute must be recalculated before any computes that are
computationally dependent on the instance node associated with it.
* If a compute is computationally dependent on an element in L and part of
a circular dependency, then an xforms-compute-error event must be
dispatched to the model element.
and if we could express the whole RRR sequence in these sort of terms, I
think we would cover it.
By the way, the order of events being fired is already undefined.
Steven
>
>
> Met vriendelijke groeten,
> With kind regards,
>
> Nick Van den Bleeken
> Product Evangelist
>> Reach.
>> www.scripturaengage.com • www.inventivedesigners.com
>> Connect.
>> +32 3 425 41 02 • (M) +32 499 51 85 02
>> Engage.
>> Facebook • Twitter • LinkedIn • Google+ • YouTube • SlideShare
>
>
> Scriptura Engage is an Inventive Designers solution. The following
> disclaimer applies to this message.
>
>
>
> From: <ebruchez@gmail.com> on behalf of Erik Bruchez
> <ebruchez@orbeon.com>
> Date: Wednesday, 15 February 2017 at 05:46
> To: Steven Pemberton <steven.pemberton@cwi.nl>
> Cc: XForms <public-xformsusers@w3.org>
> Subject: Re: Rebuild
> Resent-From: <public-xformsusers@w3.org>
> Resent-Date: Wednesday, 15 February 2017 at 05:47
>
>
> This is particularly on topic for me as I recently re-read the
> pre-XForms 1.0 paper [1] by John Boyer and Mikko Honkala on the
> dependency algorithm. Handling (at least some) structural >changes is
> mentioned in the conclusion as possible further work.
>
>
> First, if an implementation updates the binds based on dependencies
> smartly but "as if" a full rebuild takes place, then it would be fine.
> We wouldn't have to say explicitly when or even if a >"rebuild" would
> have to happen. I would be in favor of saying something like that as a
> first step, although you could read the spec that way already ("as if"
> is always fine).
>
>
> Second, a concern is that the range of XPath expressions is large and
> dependencies can be complex. So I am not sure at this point that you
> could just say "there are dependencies and they update >magically in all
> cases and a full rebuild is never needed". We would have to show an
> existence proof of an algorithm which could support all of XPath 2.0
> (and newer ideally) first.
>
>
> More specifically, on the question of "just doing a recalculate", this
> is not possible if a recalculate doesn't include the possibility of
> updating at least a subset of the dependency graph. However a >combined
> rebuild/recalculate operation which updates binds or a subset thereof
> would be able to do so in some cases at least.
>
>
> In our implementation, by the way, we have merged the
> recalculate/revalidate operations in a single operation without side
> effects. It just didn't seem useful to split them in two and allow one
> to >run without the other, and splitting them causes more difficulties
> for optimization. Maybe this points to a more general "model update"
> operation.
>
>
> In general, I think that:
>
>
> - we don't have to be as specific as we are about the
> rebuild/recalculate/revalidate scheme
>
> - but if we are not, we still have to say *something*: what is expected
> from the process in a minimal implementation
>
> - because we haven't described a perfect model update algorithm (if one
> exists), implementations could have some latitude in the range of XPath
> expressions they are able to handle transparently
>
>
> -Erik
>
>
> On Tue, Feb 14, 2017 at 12:06 PM, Steven Pemberton
> <steven.pemberton@cwi.nl> wrote:
>>
>> The spec is very normative about rebuilds.
>>
>> But in the late 80's I built a system where even structural dependencies
>> were kept, so that an insert or delete caused a recalculate, and there
>> was no such
>> concept as a rebuild.
>> (details: http://oai.cwi.nl/oai/asset/5342/05342D.pdf)
>>
>> So, how normative is our rebuild? If inserts caused a recalculate
>> instead of a rebuild, we would surely be OK with that?
>>
>> If so, then we need to be less formal about the need for rebuilds.
>
>
> -Erik
>
>
> [1]
> https://pdfs.semanticscholar.org/82cb/d193c1ca60c2bb91013fd74dffefca3783b4.pdf
Received on Wednesday, 15 February 2017 10:44:47 UTC