Hi Rabi,

I agree with you. Something that I have not seen yet in ITSM apps, is the ITSM 
code taking advantage of the active link "Service" action.
We currently have ITSM 7.5.1, and maybe I haven't come across one of these yet; 
also I don't know if ITSM 7.6 has active links that use the "Service" action.

It seems to be the active link "Service" action should be the standard to 
enforce business rules from active links, so code is not duplicated between 
active links and filters. This would make customizations easier , easier 
upgrades, etc. I hope BMC is planning to re-write some of the ITSM in future 
versionsto take advantage of this. Maybe ITSM 8.0 is better in this respect; 
who knows. We'll know when it's available. If ITSM 8.0 still does not take full 
advantage of "service"a ctions, I hope it's in the "to-do" list for ITSM 9.0....

Guillaume

________________________________
From: Action Request System discussion list(ARSList) [arsl...@arslist.org] on 
behalf of Rabi Tripathi [ars_l...@yahoo.com]
Sent: Tuesday, April 20, 2010 6:01 PM
To: arslist@ARSLIST.ORG
Subject: Re: Logic in active links vs. filters

**
One common issue I have seen in a lot of custom Remedy code is the use of 
Active Links to enforce business rules, data validation etc. Not always a good 
idea, because if the client is not Remedy User, these rules will be bypassed.

Think API programs, Web Services, Remedy Import, runmacro.exe, DSO and also 
transactions initiated by Push Field actions (and macros as well??).

Active links exist/run in Remedy User only (and thru browser/mid-tier, of 
course), so unless a record is being created or updated because the user 
clicked on the Save button on that very record on Remedy User, active links 
(that are set to execute on, say,  submit/modify) will never get to execute on 
the record.

It still makes sense to write rules/validation using active links, to provide 
immediate feedback to the user based on her actions, before the record is 
saved. But if the rules need to be enforced all the time, you want filters as 
well, as a foolproof gatekeeper. No transaction can bypass them.

--
One thing I learned the hard way (on my RAC exam), was that filters can throw a 
message, but not an actionable prompt, such as a Yes/No question. I had to redo 
a lot of my code on the exam because of this surprise.
In my defense that was many many years ago and I didn't fully understand how 
transactions were processed.

Now I understand that filters can't in any way cause anything to happen at 
Remedy User, other than pop a message box after the transaction has completed 
(or errored out).
All the messages from that transaction are lumped together in that one pop up, 
and the only choice is to click on the "Ok" button. It's not going to affect 
the transaction in any way, because it already processed.

--
One peculiar thing active links can do that filters can't is that if you want 
to take the current (transaction) value of a diary field and change it in any 
way other than adding to the end, active links are the way to go. Filters can't 
do it.

For example, you can do this in Active links
Work Log = "Some string" + Work Log

But if you do the same thing in a filter, the result is
Work Log = Work Log + "Some string"

Not a big deal most of the time.


--- On Mon, 4/19/10, Mueller, Doug <doug_muel...@bmc.com> wrote:

From: Mueller, Doug <doug_muel...@bmc.com>
Subject: Re: Logic in active links vs. filters
To: arslist@ARSLIST.ORG
Date: Monday, April 19, 2010, 6:43 PM

**
Jason,

I always try and expand the question when I answer because often the real 
answer is part of the bigger topic
and just answering the details obscures the real best practice.

So, as you note in your message, often there are requests to do things "just 
because".  Not for any clear
benefit or business value, but just because it might be cool or someone heard 
something that they thought
sounds interesting -- regardless of value.  So, first, it is to remind the 
requestor that things really should have
uses and clear value before just adding things.  Otherwise systems get out of 
control, slow, and unwieldy.

This is the hardest thing for many developers to do because they know that they 
could just do it and it is
easier to just do it than to really work on trying to do it right/best.

However, you always have a case where they say -- just do it.

So, for these cases, I suggest falling back on the simple rule:

Active links are for managing the current screen for the user.  Whether that be 
messing with visibility or
loading data values or pushing data values to somewhere.  It can be for 
pre-validating or pre-checking to give
more timely messages.  It can be for giving lists of values to select from or 
auto-filling related fields based on
the response to one field.  It may be to start an operation or to trigger an 
activity.  At the end of the day, it is
all about helping the user interact with the current screen.

Filters are for everything else that is transaction based and Escalations are 
for everything that is timer based.

Whenever there is a choice between a filter and an active link, select filter 
is a good general rule.  If
something can only be done by an active link, obviously choose it.  If 
something only by a filter, choose it.
But, if both, select filter (and for those cases where you want to give faster 
feedback for something like an
error, you could consider ALSO adding an active link -- note the ALSO and not 
instead of).

Fewer active links improves performance.
Fewer fields improved performance  (so large forms with tons of fields are not 
efficient -- better is considering
      if multiple forms would be better and definitely if fewer fields would be 
OK)
Fields that a customer doesn't see should be "not in view" and more "not in 
view" fields improves performance
    (well, more fields doesn't but if not displayed ever, being not in view and 
the more of them not in view, the
    more help to performance)  Not in view fields should be considered not 
fields from a fewer fields improves
    performance perspective (not fully, but along that line).


In general, the more you do on the server, the faster, better scaling, more 
robust, and more flexible your
system will be.

Doug

________________________________
From: Action Request System discussion list(ARSList) 
[mailto:arsl...@arslist.org] On Behalf Of Jason Miller
Sent: Monday, April 19, 2010 3:22 PM
To: arslist@ARSLIST.ORG
Subject: Re: Logic in active links vs. filters

** Hi Doug,

In this instance I was not looking to take this to a higher order.  I was more 
looking from a performance/technical (geek) stand point than process.  That 
said I appreciate all of the points you made and reminding us that there is a 
bigger picture than just developing (and still answering the tech question).  I 
agree with your statements and over time have adjusted my development habits to 
limit the extra stuff (and untrained myself to use ALs just to keep work flow 
client side).

To answer the why...  there are times when the decision for extra stuff is not 
within the developer's control.  I find it is these situations where there is 
not a business case for extra stuff (fluff) where the line between using a 
Filter or Active Link gets a bit blurry.  You are instructed to create work 
flow that does not enforce a business rule, maintain data integrity or help the 
user perform an operation.  Somebody thought it would be really cool if Remedy 
could to XYZ and it gets approved.  I have encountered this situation in every 
shop in which I have worked to some degree.  I have literally been kicked under 
the table by the person next to me a customer meeting because I was resisting, 
asking what business rule does XYZ enforce.

Part of this is culture change, we can do XYZ in Remedy so we should.  Well 
what is the business value?  Because it will make the customer happy (usually 
short term).

I admit the question of using a Filter vs. Active Link is not an everyday 
scenario.  I may have dragged us down into the weeds a bit by asking a question 
that is not relevant much of the time following the practices you mentioned.  I 
saw mention of using an Active Link to avoid having the server do work and ran 
with it.

Thanks for all of your insight.
Jason


On Fri, Apr 16, 2010 at 2:02 PM, Mueller, Doug 
<doug_muel...@bmc.com<UrlBlockedError.aspx>> wrote:
**
Jason,

I guess the question now becomes a higher order one....

If you have logic in the system that is not business rules (I don't use 
critical business rules because
something either is or is not related to enforcing business rules whether they 
are critical or casual rules, they
are rules for the business) and not data integrity (hopefully a business rule 
is to have data integrity), what
exactly is this logic doing?

I would argue if the logic is not doing business rule/integrity enforcement 
(which is in filters/escalations) the
only type of logic left is logic to help the user perform work on the client -- 
and that has to be done in
active links although even that may get filter help as noted in a previous 
message.

If the logic you are describing is not enforcing business rules/integrity and 
is not helping the user perform
operations, then why does the logic exist at all?

Too often, we have extra stuff that really doesn't do anything useful.  My 
argument is not about whether this
should be an active link or filter but why are you doing it at all?  It should 
be removed from the system as it
is not adding value.

At the end of the day, you want as few active links as possible to give all 
appropriate assistance to the
customer to perform their interaction.  You want as few filters as possible to 
perform all the business logic
and integrity checking in the system.  You want as few escalations as possible 
to perform any time based
business logic and integrity checking in the system.  EVERYTHING else should be 
deleted as not useful.


Now, if you are saying, never mind all this, but if I could do something as an 
active link or a filter, which
should I choose?  A filter.  If you can do something either place, a filter 
does it every time for everyone without
issue/question/concern.  Active links only do it if the specific firing 
condition of the active link within the
BMC clients occur.

I use the simple dictum -- you can scale the server (and so filters), you have 
no control over the network or
client so they cannot be scaled.  Do everything possible on the server.  Only 
do things on the client where
you need to assist customer interaction with the system.

Doug Mueller


Copied data from the original thread to this one so that all is together under 
the new name:

** Thanks Joe!  I guess I should have been a little more specific...  I agree 
with your and Doug's point (See new thread: Logic in active links vs. filters) 
of always using Filters for logic/rules that you always want to happen.  I was 
referring more to work flow processing that is not critical business rules and 
data integrity.  There those times when doing development where you think for a 
moment, should this be a Filter or an Active Link.  If it is a toss up which 
way is better?

Let's end the comments regarding AL vs Filter on this thread and reply to the a 
more appropriate thread "Logic in active links vs. filters".

Jason

On Fri, Apr 16, 2010 at 12:23 PM, Joe D'Souza 
<jdso...@shyle.net<UrlBlockedError.aspx>> wrote:
**
It really depends on the 'kind of work' that you are having the server perform. 
A major factor to consider would also be, your environment. What kind of 
clients would be interfacing with the AR Server? Just your regular WUT or the 
MT client? Or would you be using web-services or a variety of other client 
types. With some client types other than the WUT or MT, it is important to 
understand that your client side workflow may not be supported. For these you 
might need to use Filters to do what an AL can although it may seem that an AL 
would be better...

If your environment is one where you have your users limited to the WUT or MT, 
then  actions such as validations and data integrity checks for example, are 
better done on a client before the transaction is sent to the server, than 
having the server do it.

So it really comes down to what you really need to get done, and where..

Joe



<< Sorry, had to truncate the chain here because of a 1000 line limit of 
postings and the message had>>
<< gotten too long.  Check the archives for the remainder of this thread        
                                     >>
_attend WWRUG10 www.wwrug.com ARSlist: "Where the Answers Are"_


_attend WWRUG10 www.wwrug.com ARSlist: "Where the Answers Are"_

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
attend wwrug10 www.wwrug.com ARSlist: "Where the Answers Are"

Reply via email to