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:

  1. Please install a queue, which is ELP enabled and receives the jobs, The port can be set to NULL, as the queue will always forward the jobs to the second queue.

  2. 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.

  3. 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 content is a standard ASCII based ELP variable file and lists all login names of users, the job should be copied to. The ELP variable is counted in a row, starting with the value 2, as 1 is automatically the user who prints himself.

    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.

  4. 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 splitted for each copy. Like usually there is one more split file with one byte as printed copies.

  5. 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 splitted there is no need of any initalisation

DoNotInitializeNewSplitStream=ON

; just to be sure, better would be if the port of the queue is set to null

NoPrinting=ON

[First rule is needed, that the data stream is splitted 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 splitted 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