Solved

Running an agent within an agent

Posted on 2006-11-13
20
409 Views
Last Modified: 2013-12-18
Greetings learned experts,

I am on Domino R6.5. I am trying to run an agent, AgentA, and within this agent I call 2 more agents, AgentB and AgentC. AgentB executes without a problem calling a script library. AgentC is the same as AgentB except for the change in one of the function names in the script library. I am using "If agent.Run <> 0 ...". I know that you cannot run an agent recursively but I thought I took care of that by "creating" a separate script library. I can run AgentC by clicking a button but am unable to run it from within another agent. Please let me know if you require more information. Thank you.
0
Comment
Question by:notesrookie
  • 5
  • 5
  • 5
  • +2
20 Comments
 
LVL 63

Expert Comment

by:SysExpert
ID: 17933749
I thnk that the problem is understanding how things work.

I think that once you run AgentB from Agent A, you are expecting to be able to run AGENTC after AGENTB finishes.

I think that once you run another agent, you can not expect it to return to the first one again.

I would look for some good articles on this and double check the design help to be sure.

I hope this helps !
0
 

Author Comment

by:notesrookie
ID: 17934187
Hmmm - I thought that checking the return status of the agent would be sufficient for a "return" to the original agent.  Anyone else have more thoughts on this? I looked in the designer help and all I got was that you can call other agents but not the logic behind the return. I did try the "cascade"method, that is, AgentA calls AgentB and AgentB calls AgentC.
AgentC is still an issue. I know I created it from another script library and changed enough so that it is a "different" script. Let me start over and see what happens.

Thanks.
0
 
LVL 46

Accepted Solution

by:
Sjef Bosman earned 400 total points
ID: 17934763
Why would you do things so complicated? Can you explain why you want all those agents?

Easier approach: solve it with scriptlibraries and procedures.

Scriptlibrary BigScript:

    Sub AgentA
    ...
    End Sub
   
    Sub AgentB
    ...
    End Sub
   
    Sub AgentC
    ...
    End Sub

Agent A:
    Sub Initialize
        Call AgentA
    End Sub

Agent B:
    Sub Initialize
        Call AgentB
        Call AgentC
    End Sub
0
 
LVL 18

Assisted Solution

by:marilyng
marilyng earned 100 total points
ID: 17935167
ditto..

One reason why you would want to call another agent from a first is to run it on server, and pass through a document ID to process.

Or, I've done this before, create my three agents, and then create a fourth in formula that calls toolsrunmacro for each of the other agents.

The document being processed would have to have some type of marker to identify it has been processed by agent A, agent B or Agent C, so each of those would need to check for the success or failure of the previous agent before it ran.

0
 
LVL 18

Assisted Solution

by:marilyng
marilyng earned 100 total points
ID: 17935179
Oh, clarification, when calling a second agent to run on server, I believe it does return either 0 or 1 to the calling agent.  The problem with the run on server is trouble-shooting if it doesn't run, or hangs, so, my solution was to log everything to an agent mail log, or agent log to see where it failed.
0
 
LVL 18

Expert Comment

by:marilyng
ID: 17935186
Sorry, keep hitting the submit button too early.. but agree with sjef here, much easier to nest them all in a script library and use logic to tell whether to move to the next sub or not.
0
 

Author Comment

by:notesrookie
ID: 17948949
Thanks for the suggestions. I'll have to see which one would be the easiest to implement.
0
 
LVL 8

Expert Comment

by:behenderson
ID: 17972577
Well my 2 cents worth is that the Correct way to do it would be to create a script library as sjef_bosman has requested and try to have good coding style.  It is also possible that all you need to do is write a Subroutine.  If you want to move forward in your ability to code in Notes I highly recommend that you learn how to do a script library and that you very probably need to learn how to write Functions and subroutines as well.  

Congratulations you are writting in script and you seem to be somewhat proficient from the content of your questions (arrays etc).  But I bet that you are in an environment where you have not had the benefit of working with an experienced programmer so all your knowledge is hard won and self taught.  The first big step is moving from Formula Language to Script, the second step is often learning Subroutines and Functions and the third step is often using script libraries.  Hopefully you also learn how to write Error Handlers as well.  There are other steps like working with the API and implementing the Lotus Extensions etc.. But those are the bread and butter steps to proficient coding in lotus.

I have made an assumption that the main reason that you are trying to call agents from agents is so that you have the benefit of Re-use, so you can call any of the other agents just on their own.  You should probably give your reasoning so that you can be given alternatives that follow good coding style.  The reason that Subroutiens and Script libraries are prefferable is that there is a much higher level of control, and it is also more in line with coding best practices.  

Good luck.



0
 

Author Comment

by:notesrookie
ID: 17983924
You're right. They found out out I knew something about Notes, albeit from the administrative side of things, and they assumed that I knew how to code. They have come to expect "miracles" which I have only been able to pull of because of this website. Anything I've learned, as you say, was self taught, what I learned from here and spaghetti coded together. If you have links to places where I can go and read about bettering my skills, other than getting formal training (there is of course no money or time for that), that would be greatly appreciated.

Let's just say it's rare when I have a non-coding day. Thanks.
0
 
LVL 46

Expert Comment

by:Sjef Bosman
ID: 17985809
As it seems, you're doing a great job. You're flying a 737 and the only thing you were hired for was maintenance. I suppose you're not really awarded for the additional things you do? Hm... And no money for training? Frankly put, you deserve a better employer! Someone who appreciates your going beyond, and your willingness to do so.

IMHO, getting a solid background takes a lot of time. How it functions I cannot tell (hm, maybe I should write a book about that), but you need "structures" in your mind. There's methodology, then methods, then application. What you need is not a pile of very good books, but someone who guides you along the way: a skilled project manager. He or she can show you how to create the application the users have been waiting for. Many questions like: "but why are you doing it like this?" cannot be answered in books, they must be "revealed" to you. And you need some hands-on training and book for the most important subjects: programming languages, coding principles, and data structures.

In this case, you need to think: I'm not the first with this problem, and they must have some vehicle to do what I want. Still, don't think codig, but structure or design, that's one level above. In my first agent, I want to do A, B and C. In my second agent, I need D, B and C. How can I accomplish that with a minimum of recoding? In the old days, they developed object libraries to do that. Script libraries are not that much different: its purpose is to share/reuse code easily in your application.
0
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 
LVL 18

Expert Comment

by:marilyng
ID: 17988701
nicely stated, sjef.  And I agree.. notesrookie needs a better employer.. !!  
0
 

Author Comment

by:notesrookie
ID: 17991814
And to think y'all, sjef, marilyng, madeeshwar, sysexpert, etc. are helping me fly the plane. You have most definitely helped me out in my many hours of banging-head-against-the-wall need. I really appreciate your letting me know that I'm doing better than I really expected. It's funny that you're letting me know about the project manager as I just got one who is showing me the big picture on one of the more complicated databases that I am working on. Talk about eye opening. It's no fun flying by the seat of my pants and blind at times trying to guess at what the user wants. Normally the coding I've been doing have been driven by some users that I believe are not sure what they want or the application has been transferred from a spreadsheet and yet the want the same functionality as the spreadsheet and not want to take advantage of what Notes can offer. And you're right I need to start thinking in terms of script libraries. See your brief statement about them explained more to me than what designer help does. I do seem to find myself writing almost the same thing over and over again.

And with that being said, I have implemented sjef suggestions and that seems to working pretty well.

Thanks again and if you're ever in the Los Angeles area let me know and I'll buy you (my mentors) a drink (or if you don't do the hard stuff I can certainly do coffee or bubble tea aka boba tea).

As for a better employer ... I have a mortgage to pay off so until I get brave enough to say I can do and want better, I remain, your humble - NotesRookie.
0
 
LVL 8

Expert Comment

by:behenderson
ID: 17998559
This is a closed post but.. for the benefit of those seeking online materials for coding help and to round out the post

in response to:
 If you have links to places where I can go and read about bettering my skills, other than getting formal training (there is of course no money or time for that), that would be greatly appreciated.

http://www-12.lotus.com/ldd/doc/uafiles.nsf/docs/ls70/$File/lscript.pdf

Here you can type in LotusScript Javascript java etc.. and get the documentation Free yaaaaay free
http://www-10.lotus.com/ldd/notesua.nsf/$$Search?OpenForm

They are online but the Lotus Yellow Books are a best buy
0
 
LVL 46

Expert Comment

by:Sjef Bosman
ID: 18000108
H'm, yes, very good suggestions, but... they usually discuss the "how", and not the "why". IMHO a good developer (who's more than a programmer) needs a solid background in programming fundamentals (binary, octal, decimal, hex, sorting, recursive functions, bit manipulations, ports, classes, data structures etc.) in order to recognize the structure in a certain situation or application. The tricks of the trade cannot be found in those books. Sadly, I do not know a better way than to join a good team or project, and to absorb anything you can lay your eyes on.
0
 
LVL 18

Expert Comment

by:marilyng
ID: 18000405
Question about yellow books.. they seem to be a print out of HELP.  Best investment, if you want to learn, is the VIEW.  Excellent samples, solutions, and discussions of best practices:   http://www.eview.com/

Boot camps are also very good.   If you can't get into a good team or project, then, this type of collaboration is excellent.
0
 
LVL 8

Expert Comment

by:behenderson
ID: 18017047
sjef, you make a very good point in trying to encourage the recognition of structures, datatyping, paterns etc.. And joining a good team would be great.  The View is a great resource too.  

My main reason for recomending the yellowbooks is that I suspect that he is the A team the B team and the C team.  The experienced developers were too rich for his employers blood.  He won't get training, or training time or help from consultants.  When I arrived at my current environment there were some really amazing mile long subroutines and three overworked undertrained developers.  Intelligent as heck, but not real object oriented, and completely self trained.  The databases there were not pretty but they were holding the place together. Getting those developers to just create a few functions and subroutines other that Click and Initialize helped a lot.  Error handlers were also absent and made a nice improvement.

I don't think notesrookie has ventured very far outside the long single subroutine, and that if he creates a script library it will very likely be his first.  The lotusscript pdf I tried to link him to gets into data types, passing arguments by reference and by value, recursive functions, Error Processing, Scope and file handling.  The error handling alone might make it a worthwhile read for him.  It is not everything he needs there is a whole lot more that would be good for him to learn.  But if he reads the yellowbooks he will have a base.
0
 
LVL 46

Expert Comment

by:Sjef Bosman
ID: 18017984
1) Hope you read ed-commands:
    g/ he /s// she /
Notesrookie: please update your EE-profile...

2) >> But if she reads the yellowbooks she will have a base
I think that's where we disagree: to me, yellowbooks are not a base but the 10th floor... Knowledge of the floors underneath is required, and especially the understructure is not to be disregarded. Hm, I don't particularly like this metaphore, but I hope you understand.

For some perspective, here's a curriculum: http://www.informatics.manchester.ac.uk/undergraduate/courses/structure/firstyear/index.html
0
 
LVL 8

Expert Comment

by:behenderson
ID: 18020974
OK bad choice of words.  It will give her a bigger toolbelt without building the base.  But some of the elements in that toolbelt will move her in the direction of better coding.  Most specifically subs, functions, script libraries and error handlers.

Starting at the 10th floor is not ideal, and it makes it harder to get into good habits.  She is already flying the 747.  It is unlikely that the code being written is very modular.  There is a lot more to good coding practices than whether or not the code has error handlers and whether or not the code is modular, but modular code with error handlers is a small step in the right direction.  Lots of people who begin by programming in formula language have a macro based linear mindset that is hard to overcome.  Asking how to push a button in another form using some type of code is perfectly logical from a goal oriented, macro based, linear point of view.  It is a perfectly logical approach to a problem.  Moving from that mindset to one where you pass parameters into modules to achieve the same goal is a step forward.  But I can understand how you could argue that I am advocating the creation of bad modular code with error handlers.

Her applications work, she is still employed, and modularized code (with error handlers) will help her to achieve her objectives more effectively.  Once she makes that change then there is a lot more to learn.  I should make it clear that the path that sjef has suggested is a much better path.  What is the best plan B if the mentor/teacher is not available/affordable?  A pile of books in the absence of guidance is not the best approach, but I think that the absence of a pile of books and the absence of guidance is worse.  For that reason I advocate books (And good magazines like the view and good forums like OpenNTF.Org and asking smart people on EE like Sjef and Marilyn) but that is not the best option just the best plan B.  I hope I am not a corporate monkey telling her not to touch the Bananas, the options you describe are better options if she has access to them.  

Learning the concepts first and then getting to the specifics is a much better approach.  I think that we would both agree that coding to meet a specific objective and looking at help once you are bogged down is not as good as reading/learning/being shown an overall picture first and then coding.  The yellowbooks may be bad choices because they are task specific and do not give the reasons why you do things they just show you how to do things.  But since I advocated script libraries, functions, subs and error handlers I thought they would be a good place to learn how to implement those suggestions.
0
 
LVL 46

Expert Comment

by:Sjef Bosman
ID: 18026028
Heh, eye-opener: who knows, you may be the lamb here and I the sheep ;-))
0
 

Author Comment

by:notesrookie
ID: 18038866
sjef - Updated. Thanks for the political correctness but those in the know on my team address me as "Notes Goddess". But I liked your metaphor - you need a good table foundation, poured and cured, before you can build the floors above it. I'll do my best for future projects to meet with the folks to get the requirements and what needs to be done as a more formal part of the entire project. Oh heck the entire process is anything but formal as I'm sure you've figured out by now.

And I did start in formula language hence the mindset. I can get things done but not necessarily the best or most efficient way. So both your words have been helpful to me. Thank you.
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

For Desktop Techs: How to retain a user's Notes configuration data when swapping out the end user's computer. (Assuming that you are not upgrading to a completely different version of Notes client) All you need to do is: 1) install Notes o…
Lack of Storage capacity is a common problem that exists in every field of life. Here we are taking the case of Lotus Notes Emails, as we all know that we are totally depend on e-communication i.e. Emails. This article is fully dedicated to resolvin…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now