Julian Matthews · Apr 11, 2018 go to post

Hi Izak.

What task would Ensemble be completing to link the two applications together?

Julian Matthews · Apr 4, 2018 go to post

Hi Bob. Please can you try running the task without KeepIntegrity selected?

If this doesn't resolve your problem, I'm all out of ideas.

Julian Matthews · Apr 4, 2018 go to post

Hi Bob. Do you have KeepIntegrity selected?

I ask because the only thing I can see which might point in the right direction is that the selection of message headers when KeepIntegrity is selected does a "select top 100000000" and your Ens.MessageBodyS is a digit greater (10 digits vs 9), so it could be that the items are somehow being missed? If this is the case, running the purge without the Keep integrity selected might work?

Also, I assume you are getting a success status from the task running?

Julian Matthews · Apr 4, 2018 go to post

Hi Bob.

These will be picked up by either Purge running the all command, or by selecting "Messages" for TypesToPurge in either one.

The MessageBodyS should be purged when the "BodiesToo" tick box is selected in the task. The description for the BodiesToo  option is: "Delete message bodies whenever their message header is deleted. This is off by default because some Productions may use message objects that are part of a larger environment and not transitory." so it may be that your task was left with the defaults and this has built up.

Julian Matthews · Apr 4, 2018 go to post

Hi Bob.

I ran a comparison against the two Tasks to find the answer.

Basically they're almost identical, except that Ens.Util.Tasks.PurgeMessageBank includes the ability to purge "Message Bank Events" and "Message Bank Messages" using the "ALL" Parameter in TypesToPurge or by individually selecting them. So using Ens.Util.Tasks.Purge with all selected will not touch the Message Bank.

My guess would be that Intersystems either added Ens.Util.Tasks.PurgeMessageBank when the Message Bank functionality became available and didn't want to edit the Ens.Util.Tasks.Purge task so that ALL started to include purging the message bank, or Ens.Util.Tasks.Purge exists to be able to have a task which can purge all except the message bank so that customers that would like to purge all except the message bank can do so with one task rather than 7 separate tasks.

Julian Matthews · Mar 16, 2018 go to post

Hi Mark.

After throwing in an if statement for the Priority variation and some other local tweaks I have this working perfectly, so thank you for sharing.

I also added the Token and User Key as a setting to be set from the Operation within Ensemble.

It would be good to catch up outside of the Intersystems forums sometime soon.

Cheers!


For anyone interested in adding the Token and User Key

So I included before the method:

Property Token As %String;

Property User As %String;

Parameter SETTINGS = "Token, User";

And then the http request parameter became:

        Do httprequest.SetParam("token",..Token)
        
        Do httprequest.SetParam("user",..User)

This leaves the token and user key to be configured within Ensemble via the Management Portal:

Julian Matthews · Mar 14, 2018 go to post

Hi Mark, interesting stuff as usual.

Does your implementation go on to take advantage of the notification priorities? I'm just thinking of what benefits could be gained for alerting on-call staff to issues.

Julian Matthews · Feb 27, 2018 go to post

Hi Robert.

I think you have hit the nail on the head - the method return type is a string.

Time to do a bit of rework in the Dev environment...

Julian Matthews · Feb 15, 2018 go to post

Hi Jeff, thank you for  your reply.

I did end up raising a call for this and, as I was unable to replicate the issue at the point of raising the call, it was decided that the call would be closed and a new one raised if it reoccurred.

Julian Matthews · Feb 9, 2018 go to post

Hi Lorraine.

I think the issue is that the Constraint is not set for the condition to be able to reference the filename. I see that you have added a comment to another post which explains how to do this, but it stops short in explaining fully. Fortunately, Joshua Goldman then links to another post where he goes in to more detail.

I'll copy and paste it here, and include the link.

https://community.intersystems.com/post/how-route-file-based-file-type

  1.  Define a business rule. Make it a General Message Routing Rule and have the assist class be EnsLib.MsgRouter.RuleAssist.
  2. Add a rule to the rule set and double-click Constraint. Specify the rule class Persistent > ENS > StreamContainer
    That's the message class used by the pass-through file service/operation. You can also specify the business service as the source.
  3. Double-click  condition, and in the expression editor specify Document.Type or Document.OriginalFilename, add an operation, and a  value.
  4. Send it to the correct operation.
  5. Define a router business process and specify the rule you just created.
  6. Connect the pass-through file service to the router.
Julian Matthews · Nov 24, 2017 go to post

Thank you - I will try this the next time I'm running a big job and see what details I get.