Q: A client wants to send automatcially a job to a predefined user list. Every user may have such a unique list. the jobs will be sent to a Followme system, that the user will collect the jobs when they anyway request their jobs.
A: Here is the needed configuration of this request:
-
Please install a queue, which is ELP enabled and receives the jobs, The port can be set to the local port NUL, as the queue will always forward the jobs to the second queue.
-
The second queue needs to be shared. The configuration sample below uses the share name: test. Behind this queue is the FollowMe system. There is no(!) need to activate this queue with ELP.
IMPORANT: You need an ELP license for each printer behind your FollowMe system. -
Every user can have a distribution list, which has to be located in the Workpath folder (normally c:\ProgramData\WELP) and named according to his windows login name, with the file ending .var (for variable file) , for example the content of the file c:\ProgramData\WELP\johndoe.var for the user johndoe could be:
#MyUserSentTo2#=Jannis
#MyUserSentTo3#=Valerie
#MyUserSentTo4#=Julian
#MyUserSentTo5#=Tim
#MyUserSentTo6#=Sascha
#MyUserSentTo7#=Christian
#MyUserSentTo8#=HabeIchNunAlle?
The ini file can be changed any time, and the next arriving job will process the new users
It is possible to process instead of user fixed distribution lists, also fixed document contend based lists or even both. Should be not too complicated to read several var files. -
How it works, the theory:
- Set the outport to the shared FollowMe queue
- Read the user name out of the PJL comamnd line @PJL SET USERNAME="xxxx"
- if found then set the line into comment and
- remove the last " in the read back user name variable
- if not found, then the job can't be sent to the follow me system at all
- Then read the var file created in chapter 3 above
- Count the amount of variables in that file
- Make with an ELP-Command the copies
- While writing out, the user names are inserted and the file is split for each copy. Like usually there is one more split file with one byte as printed copies. -
The configuration file
[GLOBAL]
; init variables
Variable=#MyUSERName#:None
; send data stream to port where the FollowMe system is active
OutPort=\\127.0.0.1\test
; as only full copies are split there is no need of any initialization
DoNotInitializeNewSplitStream=ON
; just to be sure, better would be if the port of the queue is set to NUL
NoPrinting=ON
[First rule is needed, that the data stream is split for each copy]
; Stream starts anway with an UEL
Search_Binary=\x1B%-12345X
; insert in front of the data stream the split command followed by a FormFeed, that the splitting is right here executed, at each copy
; The disadvantage is, that the first split job does not make any sense, just a form feed
Replace_Binary=\x1B)s-997Z\x0C\x1B%-12345X@PJL COMMENT Job starts here\x0D\x0A
; Speed up
ReadOnlySearchKeys=ON
; And that one is just done only one time, but will be valid for all copies
Search_Only_Once=ON
[Search the PJL USER name command in incoming data stream]
Search_Binary=@PJL SET USERNAME
; and make it as a comment as later ELP will add quite a lot user names
Replace_Binary=@PJL COMMENT SET USERNAME
ReadOnlySearchKeys=ON
Search_Only_Once=ON
[read the USER name from that just commented PJL command]
Search_Binary=COMMENT SET USERNAME="
StoreNextWordToVariable=#MyUSERName#
ReadOnlySearchKeys=ON
Search_Only_Once=ON
; All commands here below are executed after the complete stream was read in
[If no name is found]
Trigger_Binary=1
Trigger_Variable=#MyUSERName#:None
; then the FollowMe solution will definitively not work!
; so this is then simply the end of the ELP process
Exit=ON
[Remove last character " from read user name]
Trigger_Binary=1
; get string length and remove value by 1
Variable=#MyLength#:STRLEN(#MyUSERName#)-1
; removes the last '' from PJL command in the read back user name
Variable=#MyUSERName#:LEFT(#MyUSERName#,#MyLength#)
[Read config file]
Trigger_Binary=1
; As this command is executed before the variable key is, a new rule is needed to
; make sure that it comes after the stripping out of the last '' above
Variable_File=#ELP_FORMS_PATH##MyUSERName#.var
; Now set the first variable for the print loop to the sender of the job
Variable=#MyUserSentTo1#:#MyUSERName#
; and start counter at second variable = first variable out of ini file.
Variable=#MyCopyCounter#:1
[Count the amount of entries of ini-file, part 1]
Trigger_Binary=1
; set the temp variable #myDummy#
; either to the CONTENT(!) of the existing variable from the ini file: #MyUserSentTo$$$# where dollar is the counter starting with 1!
; for the given example the variable content of the first one is Jannis, then Valerie ...
; or if the counter is higher then the last variable to the TEXT(!) #MyUserSentTo$$$#
; and for the last + 1 the content is #MyUserSentTo8# so the variable text itself
Variable=#myDummy#:#MyUserSentTo#MyCopyCounter##
[Count the amount of ini file entries, part 2]
Trigger_Binary=1
Trigger_variable=LEFT(#myDummy#,1)!#
; still a name found, then increase the counter
Counter=#MyCopyCounter#
; and restart the test in rule above with next variable #:#MyUserSentTo$#
NextTriggerRule=Count the amount of entries of ini-file, part 1
[Now advice ELP to generate counted X copies]
Trigger_Binary=1
; The user name who printd was counted as well, so reduce copy factor by one
Counter=#MyCopyCounter#;-1
; X is minimum one, the person who printed himself
ELP_Command=K#MyCopyCounter#;
; set the own copy counter for writing out, that the first one found is the content of the variable #MyUserSentTo0#, which is the user himself
Variable=#MyOutWriteCounter#:0
; finally while writing out all copies
[Insert the correct user name while writing out]
OutSearch_Binary=@PJL COMMENT Job starts here\x0D\x0A
; Increase the counter for the just written copy (1, 2 etc)
Counter=#MyOutWriteCounter#
; insert after the above inserted PCL dummy command the new user name, whioch will pickup FollwoMe
; and set the job for this user. (#MyUserSentTo1#, #MyUserSentTo2#, etc)
Add_Binary=@PJL SET USERNAME="#MyUserSentTo#MyOutWriteCounter##"\x0D\x0A