Showing posts with label Self learning. Show all posts
Showing posts with label Self learning. Show all posts

Friday, May 14, 2010

ARS: Intermediate: Writing Better Workflow Qualificaitons


Having an eye on query performance right from the first days of your programming is better. Practice good habits from day one! Thus, later you may not have to pay attention to assure that your code is not the reason for slow performance! I have seen fresh AR System developers writing Workflow without any Run If at all. I have seen them choosing more than necessary Execute On conditions to make sure that the Active Link or Filter will execute in all possible scenarios when they are not sure which conditions shall meet their purpose.

After visiting the production floor of one of the BPO customers in India back in 2007, I felt the 'crime' that a developer does while compromising on application performance is more humanitarian than technical. We spoke to the end users while my team was working on the performance tuning of the application. Most of the BPO agents were complaining that their Performance Appraisals are affected by application slowness. Another group complained that they are not meeting the criteria for performance incentives because the application eats their time. Another group said they started hating their job because their productive hours were spent waiting for the application to respond after every click. They all said one common concern, the application made all of them get lesser incentives, that is application eats all their money and job satisfaction.

Even experienced guys often forget to think about avoiding table scan while writing qualifications.

Some of those to avoid are…

The != Operator

Searches using the != operator check every record to see if the value is NOT contained. Indexes on a field are not used in this case. Searching by what you are looking for gives better performance that what you are not looking for.

Quoting the example given in BMCs documentation: you can rewrite the search qualification ’Status’ != "Closed" to 'Status' < "Closed" to improve the use of an index.

The != operator does not match entries in which the value for the field is NULL. You must explicitly include a test for NULL to find NULL values.

Wildcards in front of search terms

Searches that begin with a leading wildcard (for example, 'Submitter' LIKE

"%John%") does not use the index but scans the database for every record containing the word John. But the search searches with trailing wildcards are valid and use indexes. for example 'Submitter' LIKE “John%" utilizes the indexing.

Poorly written arithmetic operations

Try to use the indexed field on the left side of the equation,

as in the following qualification: 'Create Date' < $TIMESTAMP$ -60*60*24.

Avoid unqualified Run If statements for escalations.

An unqualified Run If statement for an escalation performs an unqualified query to the database table and execute the If actions for every request found in the form. Server performance is especially degraded for unqualified Run If statements in escalations that are set to run at frequent intervals, because the server must search the database every time the escalation is run.

Some of the other query optimization techniques are…

1) Creating effective indices

Index frequently searched(either workflow or by user) fields.

Tip: Too many indices may cause adverse effect hence do indexing with caution.

2) Setting QBE Match to equal or leading

Note: This is done from field properties, ‘QBE Match’ Drop Down

3) Optimizing Menus

Select Refresh ‘On Open’ only when absolutely necessary. Unless you anticipate the data to change so frequently, choose Refresh ‘On Connect’ (this option refreshes menu entries when the form is opened)

For more information, download the ‘Optimizing and Troubleshooting Guide’ from BMC.

I would still say, knowing the performance tuning tips are not compulsory for anyone to do coding in BMC Remedy AR System. But it is vital to be effective in their profession.

Be responsible, do it right!


Thursday, May 6, 2010

ARS: Beginner : Putting Your First Steps in Remedy AR System

For those who are not yet part of an AR System development team but still want to learn Remedy and move closer to or into Remedy AR System development: What are the prerequisites to put your first steps (hands-on) in Remedy?

There are no prerequisites as such! It’s all your willingness and inspiration to read and experiment.

If you are so specific about checking a readiness to do get hands on or if you are someone who doesn’t have the confidence to do it even after doing enough reading, check whether you know the following.

1) Forms

Theoretical understanding of the three main form types, Regular, Display only and Join.

Core fields. (Note: Core fields cannot be deleted; they can be disabled or hidden)

2) Fields

Character fields and Integer to begin with. Rest are nice to haves on your first day.

3) Active Links and Filters.

If you understand why to have Run If, Execute On, Execution Order and Form Name in the workflow.

Familiarity with key Active Link and Filter Actions (If you want to start simplest, go for Set Fields, Push Fields, Change Fields (ALs only), Open Window (ALs only, If you find the field mapping in Open Window confusing you, leave it aside).

Nice to haves at this stage: Understand theoretical basics of Escalations, Workflow Permissions (in Permissions tab), and Understanding of more Active link/Filter actions.

If you have been serious about learning Remedy, I am sure you know much more than this. That means you are more than good to go hands on.

Something to do in the first day:

· Have a very simple logical flow in mind. Today you are going to build that in Action Request System.

· I would ask you to start in your first experiment only with a Regular form.

· Create your Regular form. Core fields are already there. Add a couple of new fields in-line with the flow you have planned. Play around with the fields, add them, align them, realign, use Trim fields (boxes, lines, text etc) to enhance the view. (Let the GUI designer in you enjoy the first hand on the Remedy!)

· If you already possess theoretical understanding of table fields, put one and experiment. If you think it is not too much on the first day.

· Add buttons, tables or so. Write workflow on them as required by the design already have in mind.

If you have done at least 80% of what you wanted to build when you stared, take it as success. Read further and experiment further. There is no limit, go on…

All of BMC’s AR System and ITSM (IT Service Management) documentation are simple and illustrative. You can depend on them to dig a bit deeper even if you do not have a ‘sandpit’ AR System Server at this stage. A few days later when you feel enough confident and have enough time, install your own AR Server and live like a king in your world of Remedy.

Experiment, Try, Practice..Whatever you call, that is what it takes!

Log analysis is a key skill for AR System Developers. Try to enable logs and try to understand them.

Tip: Though not mandatory (technically) at any stage, good if you make it a practice to write change history and help text as applicable, whenever you create and modify new objects. This habit will help later when you start working in large development teams.

I am yet to explore much of AR System and ITSM version 7.5 and above. It seems I have to wait a couple of months to get that natural opportunity or time to do it in away from work. Thus most of the things I write in this blog may be more specific to versions pre 7.5.