Re: [Perl-workflow-devel] [rt.cpan.org #38024] all conditions with 'test' attirbute appears to be c
Brought to you by:
jonasbn
|
From: Stockdale, R. <rf...@bu...> - 2008-11-18 19:37:42
|
I attached the updated patch file to the RT ticket:
http://rt.cpan.org/Ticket/Display.html?id=38024
Also, I wrote some automated tests for this change. What is the best way to
get them into the distribution?
--
Bob Stockdale
Administrative Computing Services
University at Buffalo
(716) 645-5334
rf...@bu...
> From: Jonas Brømsø Nielsen <jo...@gm...>
> Date: Mon, 17 Nov 2008 15:22:42 -0500
> To: "Brandt, Carl" <cb...@bu...>
> Cc: Workflow development list <per...@li...>
> Subject: Re: [Perl-workflow-devel] [rt.cpan.org #38024] all conditions with
> 'test' attirbute appears to be cached as 'evaluate'
>
> Sounds good.
>
> I was started to thinking along the lines of using Data::UUID to
> generate the unique names, but that would probably just warp the
> developers minds completely.
>
> I am looking for to the patch - we can get a development release out
> of the door the moment it can be applied. This will also let other
> developers evaluate the patch easily.
>
>
> jonasbn
>
> On 17/11/2008, at 21.18, Jim Brandt wrote:
>
>> We discussed and came up with the following. Bob will be following
>> up with a patch after some testing.
>>
>> * With regard to conditions, the name 'evaluate' is only used when
>> creating the Condition::Evaluate object. It seems when conditions
>> are evaluated, the sub just cycles through all conditions in the
>> conditions array, so the name 'evaluate' isn't special in any way.
>>
>> * Naming for the auto-generated conditions
>>
>> When the condition fails, the name of the condition is written out
>> to log4perl, so previous to the patch users would see that the
>> 'evaluate' condition failed, which tells them that it was a 'test'
>> condition, but does not tell them which one.
>>
>> Bob suggested even more detail in the name, like:
>>
>> "_$state\_$action\_condition\_$counter" so for example:
>>
>> _Begin_SA_condition_1
>>
>> If you had a problem, this would point you directly to the state-
>>> action->in-line condition where your perl code is. I believe Bob
>> said all of that information is easy to get inside the state object.
>>
>>
>> Jim
>>
>> Jonas Brømsø Nielsen wrote:
>>> Hi Jim,
>>> Thanks for the explanation, it was something along the lines of
>>> what I
>>> expected. Not being a user of this functionality however, I just
>>> needed some hand-holding on the patch evaluation.
>>> I will await your feedback from talking to Robert.
>>> jonasbn
>>> On 12/11/2008, at 21.37, Jim Brandt wrote:
>>>> I'm ok with the principle of the patch. The special 'test'
>>>> conditions are conditions with raw Perl code rather than an explicit
>>>> condition object. The _create_condition_objects sub then creates a
>>>> condition object on the fly for each of these. The problem is the
>>>> name of each auto-generated condition object is hard-coded to
>>>> 'evaluate'.
>>>>
>>>> I would want to verify if the 'evaluate' name is a magic name used
>>>> somewhere else in the code such that it expects it to be hard coded
>>>> that way.
>>>>
>>>> Also, the patch uses the value of the test attribute as the name.
>>>> While this would guarantee that it will be unique, it could be an
>>>> arbitrarily large hash key (you can put in as much perl code as you
>>>> want) and it wouldn't be very human readable if you were ever
>>>> debugging.
>>>>
>>>> I would suggest adding some code to name it something like:
>>>>
>>>> "_" . <action_name> . "_condition_" . $counter
>>>>
>>>> where action_name is the name of the enclosing action and the
>>>> counter is to allow us to have multiple 'test' type conditions for
>>>> an action. The leading underscore is just to indicate that is is
>>>> private (auto-generated). So if you were debugging, the names of
>>>> these condition objects would look something like:
>>>>
>>>> _MyAction_condition_1
>>>>
>>>> I work with Bob (Robert), so we'll discuss in the next day or two.
>>>>
>>>> Jim
>>>>
>>>>
>>>> Jonas Brømsø Nielsen wrote:
>>>>> Hello All,
>>>>> I have not received any feedback and I am reluctant to making a
>>>>> development release for a one-line patch, I was hoping we would be
>>>>> able to evaluate this and decide simply on the contents of the
>>>>> patch.
>>>>> The issue is described below and the patch goes for line: 349 in
>>>>> HEAD
>>>>> The line:
>>>>> name => 'evaluate',
>>>>> Roberts wants changed to:
>>>>> name => "_$condition_info->{test}",
>>>>> I have not really gotten my head around the condition objects (I
>>>>> should do this soon since our docs needs a serious update).
>>>>> But this comment just above makes me hesitate applying the patch:
>>>>> # Special case: a 'test' denotes our 'evaluate' condition
>>>>> So I guess the evaluate name is supposed to be hard-coded. However
>>>>> Roberts patch does seem to offer some flexibility. But then the _
>>>>> (underscore) troubles me.
>>>>> I am going to go over the tests covering this part later tonight,
>>>>> but
>>>>> if anybody has suggestions or opinions on this please feel free to
>>>>> write me (the list). Jim, I am particularly interested in your
>>>>> opinion :)
>>>>> Now I will go for my run to clear my head then I will look at the
>>>>> code.
>>>>> jonasbn
>>>>> On 24/10/2008, at 23.55, Jonas Brømsø Nielsen wrote:
>>>>>> Hiya Alll,
>>>>>>
>>>>>> We have received a patch from Robert Stockdale.
>>>>>>
>>>>>> If anybody has time to evaluate it, please feel free.
>>>>>>
>>>>>> jonasbn
>>>>>>
>>>>>> Begin forwarded message:
>>>>>>
>>>>>>> From: "Robert Stockdale via RT" <bug...@rt...>
>>>>>>> Date: 29. sep 2008 21.48.42 GMT+02:00
>>>>>>> To: undisclosed-recipients:;
>>>>>>> Subject: [rt.cpan.org #38024] all conditions with 'test'
>>>>>>> attirbute
>>>>>>> appears to be cached as 'evaluate'
>>>>>>> Reply-To: bug...@rt...
>>>>>>>
>>>>>>> Queue: Workflow
>>>>>>> Ticket <URL: http://rt.cpan.org/Ticket/Display.html?id=38024 >
>>>>>>>
>>>>>>> Hi Jonas,
>>>>>>>
>>>>>>> Sorry for the delay. I was able to confirm this bug.
>>>>>>>
>>>>>>> The name is being explicitly set to 'evaluate' in
>>>>>>> Workflow::State::_create_condition_objects for all conditions
>>>>>>> that
>>>>>>> specify 'test' as an attribute in the xml configuration. This,
>>>>>>> coupled
>>>>>>> along with caching of condition results means that only the first
>>>>>>> 'evaluate' condition will actually be evaluated and each
>>>>>>> subsequent
>>>>>>> call
>>>>>>> will use the cached result.
>>>>>>>
>>>>>>> Attached is a patch that will resolve the issue. Essentially I am
>>>>>>> just
>>>>>>> taking the value of the 'test' attribute and naming the condition
>>>>>>> that,
>>>>>>> with one small exception. Perl seems to have some issue with keys
>>>>>>> that
>>>>>>> start with '!' so I prefixed it with an underscore. I tested this
>>>>>>> change
>>>>>>> and it is working in my dev environment.
>>>>>>>
>>>>>>> An alternative option would be to allow the user to specify the
>>>>>>> 'name'
>>>>>>> attribute in the xml just like with any other condition. I did
>>>>>>> not
>>>>>>> exercise this option.
>>>>>>>
>>>>>>> -Bob
>>>>>> <evaluate_condition_name.patch>
>>>> --
>>>> Jim Brandt
>>>> Administrative Computing Services
>>>> University at Buffalo
>>>>
>>
>> --
>> Jim Brandt
>> Administrative Computing Services
>> University at Buffalo
>>
>
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> Perl-workflow-devel mailing list
> Per...@li...
> https://lists.sourceforge.net/lists/listinfo/perl-workflow-devel
|