/ Forums / Advansys Formativ / Creating Solutions with Formativ / Message Reference from Reply
-
CreatorTopic
-
June 24, 2008 at 1:04 pm #4378
How do I get the message reference to a newly replied to message created by Groupwise in Formativ?
I understand it is a “draft” message not yet stored and therefore must be saved somehow before I can manipulate it (such as add custom fields to the message.)
I’ve tried
Set Msg = Client.ClientState.CommandMessage
but this always returns the original message which is usually still selected in the list view.
Can anyone help on the proper command or series of commands?
-
CreatorTopic
-
AuthorReplies
-
June 24, 2008 at 1:49 pm #7996
I found this code, but it does not work also. I get “X00” as the ID during the while loop.
dim oMsg dim iMsgID dim iWIPPath Dim iBreakCount ' Save the draft message to the Work in Progress folder iWIPPath = GroupWise.Account.Owner.DisplayName & "" & GroupWise.Account.WorkFolder.Name Utilities.Trace "iWIPPath=" & iWIPPath Groupwise.ItemSaveMessageDraft(iWIPPath) ' Calling ItemMessageIDFromView immediately after GroupWise.ItemSaveMessageDraft ' can result in an X00 ID. iMsgID = GroupWise.ItemMessageIDFromView iBreakCount = 0 while (iMsgID = "Token failed execution!") or (iMsgID = "X00") Application.ProcessMessages utilities.Timer(1) Application.ProcessMessages iMsgID = GroupWise.ItemMessageIDFromView iBreakCount = iBreakCount + 1 Utilities.Trace iBreakCount & ": " & iMsgID if (iBreakCount > 10) then exit sub end if wend set oMsg = GroupWise.Account.GetMessage(iMsgID)
June 24, 2008 at 2:57 pm #8001GroupWise 7 client contains a localized word ‘Home’ after the account name. You will need to modify the code to add the localized ‘Home’ word after the account name. See the code below:
dim oMsg dim iMsgID dim iWIPPath Dim iBreakCount ' GroupWise 7+ onwards contains a localized word 'Home' after the account name. ' You will need to add the localized 'Home' after the name if (groupwise.EnvVersionName > "7") then iWIPPath = GroupWise.Account.Owner.DisplayName & " Home" & GroupWise.Account.WorkFolder.Name else iWIPPath = GroupWise.Account.Owner.DisplayName & "" & GroupWise.Account.WorkFolder.Name end if ' Save the draft message to the Work in Progress folder Utilities.Trace "iWIPPath=" & iWIPPath Groupwise.ItemSaveMessageDraft(iWIPPath) ' Calling ItemMessageIDFromView immediately after GroupWise.ItemSaveMessageDraft ' can result in an X00 ID. iMsgID = GroupWise.ItemMessageIDFromView iBreakCount = 0 while (iMsgID = "Token failed execution!") or (iMsgID = "X00") Application.ProcessMessages utilities.Timer(1) Application.ProcessMessages iMsgID = GroupWise.ItemMessageIDFromView iBreakCount = iBreakCount + 1 Utilities.Trace iBreakCount & ": " & iMsgID if (iBreakCount > 10) then exit sub end if wend set oMsg = GroupWise.Account.GetMessage(iMsgID) msgbox oMsg.subject.plaintext
Hope this helps.
Regards,
Advansys SupportJune 25, 2008 at 6:50 am #8002You are right, I am using GW 7. But, I get the string “7.0.2 HP” for the EnvVersionName so that the following code returns FALSE for me.
(GroupWise.EnvVersionName > "7")
I had to modify it to make it thusly:
(Cint(Left(GroupWise.EnvVersionName,1))) >= 7)
However, I then had to deal with the fact that the “Work In Progress” folder was in another folder. So I used the code above combined the “GetWIPFolderPath” function found elsewhere on these forums for that.
But then… I figured out that you need to modify the draft message before it can be saved so I used this code:
Call Groupwise.ItemSetText("X00", itfSubject, " COMPLETED", TRUE)
Now the message is saved in the “Work In Progress” folder. Yeah!
But alas, I still get an “X00” message ID for all the iterations. What else am I missing? Is some sort of “refresh” needed?
June 25, 2008 at 3:17 pm #8005Does the messages saved to the folder? You can use the Groupwise.ThrowToken() method to call the native Token(), alternative you can use our Token wrapper. See the Formativ Language Guide for more information. The code below execute the ItemSaveMessageDraft() token and return boolean value which indicate the token execution.
msgbox Groupwise.throwtoken("ItemSaveMessageDraft(""" & iWIPPath & """)", iReturnVal)
Could you also post the updated source so that we have review.
Regards,
Advansys supportJune 26, 2008 at 6:02 am #7998I just reviewed again the thread on this forum about this problem and I’ve decided to tackle it in a different manner as there appears to be no resolution to the “custom field in a draft message” problem.
Too bad, as I was trying to avoid having to re-create an e-mail form just to send a reply with some data attached to a custom field.
There was a suggestion to put the data in the body of the message at the bottom, which I might consider, but does not seem as clean.
June 26, 2008 at 6:05 am #7994For the record, here is the code I was working with. The result is a still “X00” during the iterations.
Sub Main(Client, GWEvent) dim iWIPFolderPath dim oMsg dim iMsgID dim iWIPPath Dim iBreakCount ' Save the draft message to the Work in Progress folder Call Groupwise.ItemSetText("X00", itfSubject, " COMPLETED", TRUE) ' TRUE = Append Utilities.Trace "iWIPPath=" & iWIPPath 'Groupwise.ItemSaveMessageDraft(iWIPPath) Call Groupwise.throwtoken("ItemSaveMessageDraft(""" & iWIPPath & """)", iReturnVal) MsgBox "ItemSaveMessageDraft returns " & iReturnVal ' Calling ItemMessageIDFromView immediately after GroupWise.ItemSaveMessageDraft ' can result in an X00 ID. iMsgID = GroupWise.ItemMessageIDFromView iBreakCount = 0 while (iMsgID = "Token failed execution!") or (iMsgID = "X00") Application.ProcessMessages utilities.Timer(1) Application.ProcessMessages iMsgID = GroupWise.ItemMessageIDFromView iBreakCount = iBreakCount + 1 Utilities.Trace iBreakCount & ": " & iMsgID if (iBreakCount > 10) then exit sub end if wend set oMsg = GroupWise.Account.GetMessage(iMsgID) msgbox oMsg.subject.plaintext End Sub '------------------------------------------------------------------------------- ' Get full path of the Work-In-Progress folder where Drafts are saved '------------------------------------------------------------------------------- Function GetWIPFolderPath(aGWFolder, byref aPath) Dim sHome sHome = "" Utilities.Trace "aGWFolder.Name=" & aGWFolder.Name & " aPath=" & aPath If (Cint(Left(GroupWise.EnvVersionName,1)) >= 7) Then If aGWFolder.Name = GroupWise.Account.Owner.DisplayName Then sHome = " Home" End If End If If aGWFolder Is Nothing Then Exit Function End If If (aPath <> "") Then aPath = aGWFolder.name & sHome & "" & aPath Else aPath = aGWFolder.name End If If (aGWFolder.objtype = fgwRoot) Then Exit Function Else Call GetWIPFolderPath(aGWFolder.ParentFolder, aPath) End if End Function
June 26, 2008 at 5:36 pm #8000Your code review shows that you did not call the GetWIPFolderPath from the main subroutine prior to save the message. The following code works fine in our environment. Let us know if we missed anything…
Sub Main(Client, GWEvent) dim iWIPFolderPath dim oMsg dim iMsgID dim iWIPPath Dim iBreakCount ' Save the draft message to the Work in Progress folder Call Groupwise.ItemSetText("X00", itfSubject, " COMPLETED", TRUE) ' TRUE = Append call GetWIPFolderPath(groupwise.account.workfolder, iWIPPath) msgbox "Work In Progress folder path: " & iWIPPath Call Groupwise.throwtoken("ItemSaveMessageDraft(""" & iWIPPath & """)", iReturnVal) ' Calling ItemMessageIDFromView immediately after GroupWise.ItemSaveMessageDraft ' can result in an X00 ID. iMsgID = GroupWise.ItemMessageIDFromView iBreakCount = 0 while (iMsgID = "Token failed execution!") or (iMsgID = "X00") Application.ProcessMessages utilities.Timer(1) Application.ProcessMessages iMsgID = GroupWise.ItemMessageIDFromView iBreakCount = iBreakCount + 1 Utilities.Trace iBreakCount & ": " & iMsgID if (iBreakCount > 10) then exit sub end if wend set oMsg = GroupWise.Account.GetMessage(iMsgID) msgbox "Subject: " & oMsg.subject.plaintext End Sub '------------------------------------------------------------------------------- ' Get full path of the Work-In-Progress folder where Drafts are saved '------------------------------------------------------------------------------- Function GetWIPFolderPath(aGWFolder, byref aPath) Dim sHome sHome = "" Utilities.Trace "aGWFolder.Name=" & aGWFolder.Name & " aPath=" & aPath If (Cint(Left(GroupWise.EnvVersionName,1)) >= 7) Then If aGWFolder.Name = GroupWise.Account.Owner.DisplayName Then sHome = " Home" End If End If If aGWFolder Is Nothing Then Exit Function End If If (aPath <> "") Then aPath = aGWFolder.name & sHome & "" & aPath Else aPath = aGWFolder.name End If If (aGWFolder.objtype = fgwRoot) Then Exit Function Else Call GetWIPFolderPath(aGWFolder.ParentFolder, aPath) End if End Function
BTW, you can use the custom fields to store data or insert the data to the message body. If the data is sensitive then you can consider to encrypt and decrypt at the other end by your solution.
Most probably in GroupWise 8 (Bonsai) will have the X-Fields where you can add additional data and viewable by other non GroupWise clients.
Hope this helps.
Regards,
Advansys SupportJune 26, 2008 at 6:25 pm #7995FYI, the example code above worked fine in 2 out of 3 GroupWise accounts. We are not sure why it failed to return the proper message ID in one account, it could be the message not yet synchronize with the GroupWise system. Although, the applet failed to return proper message id but the message actually saved to the Work-In-Progress folder. Note that, all of the 3 accounts tested are running in caching mode.
Regards,
Advansys SupportJuly 17, 2008 at 6:01 am #7997I’m not sure why I had the ItemSaveMessageDraft commented out. Tired mistake…
I tried using your cleaned up code and finally got a message ID. However, I got the message ID of the “original” message, not the “reply” message.
It turns out that I’ve had the “integration” setup incorrectly.
In all my tests, I’ve had integrations set to run the code BEFORE the “OnReply” event.
I changed it to run AFTER “OnReply” and it successfully retrieves the “reply” message ID.
I guess the moral of this exchange is that no assumptions should be made about which integrations are being used during tests.
[This message was edited by ctaleck on July 17, 2008 at 06:15 AM.]
July 17, 2008 at 4:25 pm #7999Good to hear that you are making progress. If you have any further questions, please do not hesitate to contact us.
Regards,
Advansys SupportNovember 18, 2008 at 9:40 am #8003hi.
i’m trying to get “ItemMessageIDFromView()” to work after saving the msg as a draft, but even using the routine above i always get id X00.. any idea?November 20, 2008 at 3:22 pm #8004This issue also posted to this thread: http://www.advansyscorp.com/forums/topic/5571038701/
Regards,
Advansys Support -
AuthorReplies
- You must be logged in to reply to this topic.