[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[EP-tech] Adding more stages to approval workflow?



When I added a stage (5 or 6 years ago)  I overrode the default render_items to add the new stage to https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Feprints%2Feprints%2Fblob%2F3.3%2Fperl_lib%2FEPrints%2FPlugin%2FScreen%2FItems.pm%23L242&data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&sdata=FkC8wpaHNXrdzmWEHIWnA96SyjewEGtO4PI9XF1AE6A%3D&reserved=0  so that it would include the new stage in determining whether to show the option as selected or not, which could be where your issue is as it seems to loop through the fixed list of options provided rather than refer to the repository config for the list of possible stages?
I haven?t really looked at it again in 5 years so might be missing something, but it?s probably a good place to start.

Alan

From: eprints-tech-bounces at ecs.soton.ac.uk <eprints-tech-bounces at ecs.soton.ac.uk> On Behalf Of John Salter via Eprints-tech
Sent: 23 July 2019 14:29
To: eprints-tech at ecs.soton.ac.uk; Johannes Schultze <schultze at effective-webwork.de>
Subject: Re: [EP-tech] Adding more stages to approval workflow?

Hi Johannes,
Glad you got the first part working.

I wonder if this is something to do with the way EPrints handles the user preferences - one of which stores which of these check-boxes are ticked.
I've had a quick look through the code, and can see where the default values are getting set.

These are the most relevant pieces of the code - the $user->preference parts:
https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Feprints%2Feprints%2Fblob%2F3.3%2Fperl_lib%2FEPrints%2FDataObj%2FUser.pm%23L917-L956&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=7%2Fg%2Fg8RI8MNPbz7JuUKHwwrpozlq6PcEvWhbdt5iXfc%3D&amp;reserved=0<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Feprints%2Feprints%2Fblob%2F3.3%2Fperl_lib%2FEPrints%2FDataObj%2FUser.pm%23L917-L956&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=7%2Fg%2Fg8RI8MNPbz7JuUKHwwrpozlq6PcEvWhbdt5iXfc%3D&amp;reserved=0>
and in the screen itself:
https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Feprints%2Feprints%2Fblob%2F3.3%2Fperl_lib%2FEPrints%2FPlugin%2FScreen%2FItems.pm%23L118-L149&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=8uohsOuAzz5oKPbMCQbY1UoSlXcd0QkvECR24VWJPN4%3D&amp;reserved=0<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Feprints%2Feprints%2Fblob%2F3.3%2Fperl_lib%2FEPrints%2FPlugin%2FScreen%2FItems.pm%23L118-L149&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=8uohsOuAzz5oKPbMCQbY1UoSlXcd0QkvECR24VWJPN4%3D&amp;reserved=0>
https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Feprints%2Feprints%2Fblob%2F3.3%2Fperl_lib%2FEPrints%2FPlugin%2FScreen%2FItems.pm%23L226-L465&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=tR8c%2Fy55wvc11jqVYDW227tssM4q%2BWzYqvzRleeA2lM%3D&amp;reserved=0<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Feprints%2Feprints%2Fblob%2F3.3%2Fperl_lib%2FEPrints%2FPlugin%2FScreen%2FItems.pm%23L226-L465&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=tR8c%2Fy55wvc11jqVYDW227tssM4q%2BWzYqvzRleeA2lM%3D&amp;reserved=0>

I cannot (at a quick look) see why the value for the new eprint_status isn't getting saved though.

This script:  https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgist.github.com%2Fjesusbagpuss%2Fb96dd5520018f2ec51c4c76d40e1d9b0&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=HWbRSW5abVxTctyyUtx93M6T7K9l6yS2%2FgIMVIo%2FgpI%3D&amp;reserved=0
will show you the value for a user that is saved in the database e.g.
> bin/local/get_user_preference_screen_items_ep_status ARCHIVEID 1
admin (admin at example.com<mailto:admin at example.com>)
Existing user preference for 'Screen::Items/eprint_status':
$VAR1 = [
          'inbox',
          '1',
          'buffer',
          '1',
          'archive',
          '',
          'deletion',
          ''
        ];

If you have multiple sessions open for a user (either different tabs in a browser, or in different browsers/computers), then ticking it in one session can get overwritten by loading the screen in another session).

You might also be able to see some of what's going on by using the console in the browser e.g. ticking the box for 'Retired' makes a request to:
https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Feprints.server%2Fcgi%2Fusers%2Fhome%3Fscreen%3DItems%26dataset%3Deprint%26set_show_deletion%3D1&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=7fZmZSqYKSO%2Fvw7p03sX0NSEhpo9mKEegoxTZAaAjO8%3D&amp;reserved=0<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Feprints.server%2Fcgi%2Fusers%2Fhome%3Fscreen%3DItems%26dataset%3Deprint%26set_show_deletion%3D1&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=7fZmZSqYKSO%2Fvw7p03sX0NSEhpo9mKEegoxTZAaAjO8%3D&amp;reserved=0>

You could try a request to e.g.
https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Feprints.server%2Fcgi%2Fusers%2Fhome%3Fscreen%3DItems%26dataset%3Deprint%26set_show_status1%3D1&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=lZW0GD0RU%2BgtzZbGfrskF0oYpBQnR%2BetB%2FUPavIWUhY%3D&amp;reserved=0<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Feprints.server%2Fcgi%2Fusers%2Fhome%3Fscreen%3DItems%26dataset%3Deprint%26set_show_status1%3D1&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=lZW0GD0RU%2BgtzZbGfrskF0oYpBQnR%2BetB%2FUPavIWUhY%3D&amp;reserved=0>
to see if that does anything?

Sorry this isn't a definite answer - hopefully it helps get started though.
I'll have a bit more time to take a look tomorrow if necessary.

Cheers,
John


From: eprints-tech-bounces at ecs.soton.ac.uk<mailto:eprints-tech-bounces at ecs.soton.ac.uk> [mailto:eprints-tech-bounces at ecs.soton.ac.uk] On Behalf Of Johannes Schultze via Eprints-tech
Sent: 23 July 2019 13:19
To: eprints-tech at ecs.soton.ac.uk<mailto:eprints-tech at ecs.soton.ac.uk>
Subject: Re: [EP-tech] Adding more stages to approval workflow?

Hi Chris, hi John,

one follow up question. I got my complex net of different states working, but I can't get the filters on the "manage deposits" page to work. I reduced the new statuses to one for this example.

[cid:image001.png at 01D54167.42297DB0]

I can't check the "Status 1" checkbox. It always stays unchecked. Having eprints in that state or not does not change anything. The same problem occurs when I use the unedited dark_archive code from the Bazaar. Can you give me a hint, why this might not work?

Regards,
Johannes
Hi Chris, hi John,

I think I got a working demo by now. I used the dark_archive plugin as a start, and added a second stage so ...

inbox/buffer/... -> dark_archive -> dark_archive2

... is now possible. The final workflow will be more complex, but I think I should get it configured with this approach.

Thanks again,
Johannes
Hi Chris, hi John,

thanks a lot for your quick replies and your hints! I'll take a look at both solutions and let you know if I got it all to work.

Regards,
Johannes
There is a different way to achieve this.
You can add new 'eprint_status' options.
This page: https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwiki.eprints.org%2Fw%2FBuilding_a_DataSet&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=rwhFVze88qzp2zSrAYlvxrg04xECNtUE5d6Jg8b3IE8%3D&amp;reserved=0<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwiki.eprints.org%2Fw%2FBuilding_a_DataSet&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=rwhFVze88qzp2zSrAYlvxrg04xECNtUE5d6Jg8b3IE8%3D&amp;reserved=0> provides details of how to create a 'dark archive' - which is normally a different end-point for a record - so instead of:
Inbox -> buffer -> archive
You can also go:
Inbox -> buffer -> dark_archive

This plugin does the same:
https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fbazaar.eprints.org%2F401%2F&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=9dukcdnsSC1txgsJDDRpgruxGAfkDlhtqurb0zH7vQU%3D&amp;reserved=0<https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fbazaar.eprints.org%2F401%2F&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=9dukcdnsSC1txgsJDDRpgruxGAfkDlhtqurb0zH7vQU%3D&amp;reserved=0>

What you would need to configure is
options  => [qw( inbox buffer archive deletion bufferX bufferY )],
and also think about whether anyone can move e.g. from buffer to archive - or whether everything has to go through all stages.

You may want to define more user roles - so a 'normal' editor can move from buffer to bufferX, but a 'super editor' can move from buffer to bufferX, bufferY or even to archive.

You may also want to create a clone of the review screen that looks at bufferX and buffer explicitily.

Chris' solution would also work, each has it's merits!

Cheers,
John


From: eprints-tech-bounces at ecs.soton.ac.uk<mailto:eprints-tech-bounces at ecs.soton.ac.uk> [mailto:eprints-tech-bounces at ecs.soton.ac.uk] On Behalf Of Christ?pher Gutteridge via Eprints-tech
Sent: 26 June 2019 12:06
To: eprints-tech at ecs.soton.ac.uk<mailto:eprints-tech at ecs.soton.ac.uk>; Johannes Schultze <schultze at effective-webwork.de><mailto:schultze at effective-webwork.de>
Subject: Re: [EP-tech] Adding more stages to approval workflow?


This isn't trivial but would be possible. This is me riffing and would need refining.

First of all, I would add tickbox fields for levels of signoff. ie. signoffA and signoffB and  signoffC.

Next I would use conditionals on the "workflow" XML file to modify it as follows.

In the main <flow> section, use a <when> condition to split behaviour for the 3 stages of the buffer to add additional stages to the end IF the user has the appropriate parameters. At an extreme level you can write a plugin function that takes the user and eprint as inputs and returns true if they have the right to approve it at stage a/b/c.

If signoffA is false and the user can approve level A on this EPrint, they see the levelA approve stage which has the signoffA tickbox on it and they can set it to true.

If signoffA is true, but  signoffB is false and the user can approve level B, the see the levelB approve stage which has the signoffB tickbox

Similar for signoffC.

The validation for publishing makes "signoffC" approval a required field so it can't be published without signoffC being set.

<flow>

  <stage ref="type"/>

  <stage ref="files"/>

  <stage ref="core"/>

  <stage ref="subjects"/>

  <epc:choose>

     <epc:when test="eprint_status='buffer' and !signoffA and $current_user{canSignoffA}'>

        <stage ref="signoffA" />

     </epc:when>

     <epc:when test="eprint_status='buffer' and signoffA and !signoffB and $current_user{canSignoffB}'>

        <stage ref="signoffB" />

     </epc:when>

     <epc:when test="eprint_status='buffer' and signoffA and signoffB and !signoffC and $current_user{canSignoffC}'>

        <stage ref="signoffC" />

     </epc:when>



  </epc:choose>

 </flow>

This is utterly untested but gives some ideas I hope. Documentation here:

https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwiki.eprints.org%2Fw%2FEPrints_Control_Format&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=TaNRi3duLjktEoWIQYFVeTrhA5dyKNJKNadxe99IuuA%3D&amp;reserved=0<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwiki.eprints.org%2Fw%2FEPrints_Control_Format&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=TaNRi3duLjktEoWIQYFVeTrhA5dyKNJKNadxe99IuuA%3D&amp;reserved=0>

https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwiki.eprints.org%2Fw%2FWorkflow_Format&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=mIHEvsAdcOKG8dP80qltQRnI2iyqOYP5po7Ld7LEmQo%3D&amp;reserved=0<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwiki.eprints.org%2Fw%2FWorkflow_Format&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=mIHEvsAdcOKG8dP80qltQRnI2iyqOYP5po7Ld7LEmQo%3D&amp;reserved=0>

https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwiki.eprints.org%2Fw%2FEPScript&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=EYBDYMS2RGA3Wno3ajRa%2BSJrhFEFDmWeH1E%2Bb5QRJKA%3D&amp;reserved=0<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwiki.eprints.org%2Fw%2FEPScript&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=EYBDYMS2RGA3Wno3ajRa%2BSJrhFEFDmWeH1E%2Bb5QRJKA%3D&amp;reserved=0>

It's possible to make custom EPScript functions to do more complex tests.




On 26/06/2019 11:05, Johannes Schultze via Eprints-tech wrote:

Hi all,



I'm currently evaluating EPrints as a replacement for an old repository

(custom made). Until now everything worked fine (import of existing

files and metadata), and I'm now trying to get the release/approval

workflow configured. As far as I have read in the documentation, there

are four stages by default:



inbox -> buffer -> archive -> deletion



I would need some more levels (and roles) in the approval workflow.

Something like this:



inbox -> buffer1 -> buffer2 -> buffer3 -> archive -> deletion



Different roles in the hierarchy of the organisation should approve the

submitted eprint in multiple steps. Is it possible to configure such

behaviour in EPrints? Or can something like this only be implemented

with some kind of plugin?



Regards

Johannes





--

Christopher Gutteridge <totl at soton.ac.uk><mailto:totl at soton.ac.uk>

You should read our team blog at http://blog.soton.ac.uk/webteam/



--

Dipl. Inf. Johannes Schultze

Gesellschafter / Entwicklung



Tel. +49 40 60940857-5

Fax. +49 40 60940857-1

schultze at effective-webwork.de<mailto:schultze at effective-webwork.de>

effective WEBWORK GmbH

Neuer Wall 18

20354 Hamburg

https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.effective-webwork.de&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=UjWFP%2BCPSNKEZRdc7A12VPHZ06KEsSfxCSgZdrxV6qw%3D&amp;reserved=0<https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.effective-webwork.de&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=UjWFP%2BCPSNKEZRdc7A12VPHZ06KEsSfxCSgZdrxV6qw%3D&amp;reserved=0>



GF Dr. Matthias Finck

HRB 101108 (Hamburg)

UStId DE254169943



--

Dipl. Inf. Johannes Schultze

Gesellschafter / Entwicklung



Tel. +49 40 60940857-5

Fax. +49 40 60940857-1

schultze at effective-webwork.de<mailto:schultze at effective-webwork.de>

effective WEBWORK GmbH

Neuer Wall 18

20354 Hamburg

https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.effective-webwork.de&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=UjWFP%2BCPSNKEZRdc7A12VPHZ06KEsSfxCSgZdrxV6qw%3D&amp;reserved=0<https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.effective-webwork.de&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=UjWFP%2BCPSNKEZRdc7A12VPHZ06KEsSfxCSgZdrxV6qw%3D&amp;reserved=0>



GF Dr. Matthias Finck

HRB 101108 (Hamburg)

UStId DE254169943



--

Dipl. Inf. Johannes Schultze

Gesellschafter / Entwicklung



Tel. +49 40 60940857-5

Fax. +49 40 60940857-1

schultze at effective-webwork.de<mailto:schultze at effective-webwork.de>

effective WEBWORK GmbH

Neuer Wall 18

20354 Hamburg

https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.effective-webwork.de&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=UjWFP%2BCPSNKEZRdc7A12VPHZ06KEsSfxCSgZdrxV6qw%3D&amp;reserved=0<https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.effective-webwork.de&amp;data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C52db37aeea664d4cbda408d70f7604b3%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&amp;sdata=UjWFP%2BCPSNKEZRdc7A12VPHZ06KEsSfxCSgZdrxV6qw%3D&amp;reserved=0>



GF Dr. Matthias Finck

HRB 101108 (Hamburg)

UStId DE254169943

-- The Open University is incorporated by Royal Charter (RC 000391), an exempt charity in England & Wales and a charity registered in Scotland (SC 038302). The Open University is authorised and regulated by the Financial Conduct Authority in relation to its secondary activity of credit broking.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ecs.soton.ac.uk/pipermail/eprints-tech/attachments/20190723/83513567/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 19091 bytes
Desc: image001.png
Url : http://mailman.ecs.soton.ac.uk/pipermail/eprints-tech/attachments/20190723/83513567/attachment-0001.png