ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » Workflow Engines - IBM MQ Workflow & Business Process Choreographer » UPES activities

Post new topic  Reply to topic
 UPES activities « View previous topic :: View next topic » 
Author Message
RJoubert
PostPosted: Thu Jun 13, 2002 7:21 am    Post subject: UPES activities Reply with quote

Apprentice

Joined: 30 May 2002
Posts: 43
Location: Buffalo, NY

I am still trying to get a grip on the use of the UPES in workflow. It is my understanding (and please correct me if I'm wrong) that the UPES can be used in place of the PEA at a process step to run a program.

To get this to work, I would first create a queue for the UPES to monitor (through MQSeries explorer). Do I have to setup a trigger on this queue to react to incoming messages? If so, could I use an EXE, and where on the Triggering tab would I specify the EXE path/name. Am I missing anything else with the creation of the queue?

I would then create a new UPES through buildtime and point it to the newly created queue.

Then, I would change the Execution Unit of the desired program activity to use the newly created UPES rather than the default selection of the PEA.

Question 1 - What does the UPES write to the queue? I know it drops XML, but what is contained in the XML message? Data container elements?

Question 2 - If I have to setup the trigger on the queue, is the program specified to run at the desired program activity in buildtime ignored? Does it have to be the same as what is specified in buildtime?

Question 3 - Am I way off base on my understanding? Can anyone offer any help in clarifying my clouded mind?

Thanks.
_________________
Rich Joubert
Computer Systems Engineer
Univera HealthCare, an Excellus Company
Back to top
View user's profile Send private message
steinra
PostPosted: Thu Jun 13, 2002 11:16 am    Post subject: Reply with quote

Apprentice

Joined: 23 May 2002
Posts: 28
Location: USA

You are on the right track.

In our use of UPES we don't have a trigger set up on the queue. We have a program(server) that runs all the time consuming messages from the queue and invoking the correct work unit for the activity being sent from workflow.

So if activity A and B are UPES based activities the server gets both messages and directs them to the appropriate work unit.

But a trigger on a queue would work as well.

As for the content of the XML message. This is an extract from the programming guide. (page 224 of the 3.3 docs)

Code:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- This document is generated by a MQSeries Workflow Version 3.2.2 server -->
<WfMessage>
<WfMessageHeader>
<ResponseRequired>Yes</ResponseRequired>
</WfMessageHeader>
<ActivityImplInvoke>
<ActImplCorrelID>FFABCEDF0123456789FF</ActImplCorrelID>
<Starter>user1</Starter>
<ProgramID>
<ProcTemplID>84848484FEFEFEFE</ProcTemplID>
<ProgramName>PerformOrder</ProgramName>
</ProgramID>
<ImplementationData>
<ImplementationPlatform>AIX</ImplementationPlatform>
<ProgramParameters>custNo=1234</ProgramParameters>
<ExeOptions>
<PathAndFileName>/usr/local/bin/perforder</PathAndFileName>
<WorkingDirectoryName>/usr/local/data</WorkingDirectoryName>
<InheritEnvironment>true</InheritEnvironment>
<StartInForeGround>true</StartInForeGround>
<AutomaticClose>true</AutomaticClose>
<WindowStyleVisible>true</Visible>
<RunInXTerm>true</RunInXTerm>
</ExeOptions>
</ImplementationData>
<ImplementationData>
<ImplementationPlatform>OS390</ImplementationPlatform>
<ExternalOptions>
<ServiceName>CICS42</ServiceName>
<ServiceType>CICS</ServiceType>
<InvocationType>EXCI</InvocationType>
<ExecutableName>ORDR</ExecutableName>
<ExecutableType>REG1</ExecutableType>
<IsLocalUser>true</IsLocalUser>
<IsSecurityRoutineCall>true</IsSecurityRoutineCall>
<CodePage>850</CodePage>
<TimeoutPeriod>TimeInterval</TimeoutPeriod>
<TimeoutInterval>60</TimeoutInterval>
<IsMappingRoutineCall>false</IsMappingRoutineCall>
</ExternalOptions>
</ImplementationData>
<ProgramInputData>
    <_ACTIVITY>AssessRisk_SubProcess</_ACTIVITY>
    <_PROCESS>CreditRequest#123</_PROCESS>
    <_PROCESS_MODEL>CreditRequest</_PROCESS_MODEL>
    <CreditData>
        <Customer>
            <Name>User1</Name>
        </Customer>
        <Amount>1000</Amount>
        <Currency>CurrencyX</Currency>
    </CreditData>
</ProgramInputData>
<ProgramOutputDataDefaults>
<_ACTIVITY>AssessRisk_SubProcess</_ACTIVITY>
<_PROCESS>CreditRequest#123</_PROCESS>
<_PROCESS_MODEL>CreditRequest</_PROCESS_MODEL>
<CreditData>
<Risk>high</Risk>
</CreditData>
</ProgramOutputDataDefaults>
</ActivityImplInvoke>
<WfMessage>


The book shows it all indented correctly .

The activity that is being invoked is referenced by this XML tag

Code:


<_ACTIVITY>AssessRisk_SubProcess</_ACTIVITY>
<_PROCESS_MODEL>CreditRequest</_PROCESS_MODEL>



These are the names in the process diagram.

If you want the actual program name from the program setting in your activity use this XML tag

Code:

<ImplementationData>
    <ImplementationPlatform>AIX</ImplementationPlatform>
    <ProgramParameters>custNo=1234</ProgramParameters>
    <ExeOptions>
        <PathAndFileName>/usr/local/bin/perforder</PathAndFileName>
        <WorkingDirectoryName>/usr/local/data</WorkingDirectoryName>
        <InheritEnvironment>true</InheritEnvironment>
        <StartInForeGround>true</StartInForeGround>
        <AutomaticClose>true</AutomaticClose>
        <WindowStyleVisible>true</Visible>
        <RunInXTerm>true</RunInXTerm>
    </ExeOptions>
</ImplementationData>


There will be an implementation data node for each platform configured.

The input container will be here

One thing to note. If the data element in the contatiner is not set then it will not appear in the XML document.

Code:

    <CreditData>
        <Customer>
            <Name>User1</Name>
        </Customer>
        <Amount>1000</Amount>
        <Currency>CurrencyX</Currency>
    </CreditData>


To send the data back in you build a XML reply message with the correlation ID from the UPES message.

Code:

<ActImplCorrelID>FFABCEDF0123456789FF</ActImplCorrelID>


You can also modify your container with the updated data as need.

Here is an example reply
Code:

<WfMessage>
    <WfMessageHeader>
        <ResponseRequired>No</ResponseRequired>
    </WfMessageHeader>
    <ActivityImplInvokeResponse>
        <ActImplCorrelID>FFABCEDF0123456789FF</ActImplCorrelID>
        <ProgramRC>0</ProgramRC>
        <ProgramOutputData>
            <CreditData>
                <Customer>
                     <Name>User1</Name>
                </Customer>
                <Amount>1000</Amount>
                <Currency>CurrencyX</Currency>
                <Risk>low</Risk>
            </CreditData>
        </ProgramOutputData>
    </ActivityImplInvokeResponse>
</WfMessage>


The Risk node was added in the reply to workflow.



I hope this helps.

Randy
Back to top
View user's profile Send private message
Bobbo
PostPosted: Thu Jun 20, 2002 4:03 pm    Post subject: Reply with quote

Acolyte

Joined: 17 Jun 2002
Posts: 50
Location: Buffalo, New York

What I am doing wrong if the data structure information is not showing up in the XML message? The only thing that shows is the Default Data Structure, and it doesn't have any values in it.

I've already made sure that each of my activies are using my custom data structure - NOT the Default.

Thanks for your help.
Back to top
View user's profile Send private message
jmac
PostPosted: Fri Jun 21, 2002 3:17 am    Post subject: Reply with quote

Jedi Knight

Joined: 27 Jun 2001
Posts: 3081
Location: EmeriCon, LLC

I would guess that the model that is translated in the Runtime database does not have your data structures assigned. Perhaps you forgot to translate it. I've not seen a case where the XML message does not containe the proper input container. Be aware that this message shows both input container and output container so be sure you are looking at the write container. Maybe you are looking at the ProgramOuputDefaults and if you do not use an output container, that would be the Default Data structure.

good luck
_________________
John McDonald
RETIRED
Back to top
View user's profile Send private message Send e-mail Visit poster's website AIM Address Yahoo Messenger MSN Messenger
kriersd
PostPosted: Tue Jul 23, 2002 5:30 pm    Post subject: Reply with quote

Master

Joined: 22 Jul 2002
Posts: 209
Location: IA, USA

Also

I don't know if you will see any tags from the data container that do not contain data. Try making sure you have data in the data container.

Good Luck
_________________
Dave Krier

IBM WebSphere MQ Workflow V3.4 Solution Designer
Back to top
View user's profile Send private message
jmac
PostPosted: Wed Jul 24, 2002 4:47 am    Post subject: Reply with quote

Jedi Knight

Joined: 27 Jun 2001
Posts: 3081
Location: EmeriCon, LLC

Dave is right, the current XML implementation only sends the members that actually have data in them. There is no way in the XML interface (short of logging in and accessing the Workitem) to get AllLeaves of the container.
_________________
John McDonald
RETIRED
Back to top
View user's profile Send private message Send e-mail Visit poster's website AIM Address Yahoo Messenger MSN Messenger
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » Workflow Engines - IBM MQ Workflow & Business Process Choreographer » UPES activities
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.