Easy Online Business Processes with Plone Forms and Workflow
Nguyen, T. Kim
The talk was about some use cases where Plone proved to be effective in reducing costs, time and frustration when used as a solution to replace paper forms, for example in Universities.
 Can I start? Right. Thanks for coming. I thought I would just add that little subtitle there because Paul Rowland apparently submitted his talk proposal before I got mine out, and so mine got chopped. So I decided to put it back on the slide. I'm actually working at the University of Wisconsin Oshkosh, but I am Canadian, so that's why. Some of what I'll be talking to you about today really is a brain dump of what we've done at the University over the last three or four years. And so there's, I apologize in advance, I have 61 slides, so I'll just start. Essentially we were taking a University that was dealing purely in paper processes, and there was a lot of frustration around that, how slow paper was, why we were still sending around a piece of paper and copying paper all over the place, and people were frustrated not knowing where their form was in this long, some of these rather extended processes, payments to individuals. And so let's not be a chump anymore. Let's move into the 21st century because we can do it, we have the tools. And one of those tools that we've used a lot of at the University of Oshkosh is plone. And so plone forms plus the workflow that we have in plone. So online forms are fast, they're accurate, we can give people instant email notifications, we can display essentially on a dashboard or with collections, lists of objects or forms submitted that are in process, where they are in the process, and people can search and find their information, their submitted form data extremely quickly. Some of the savings that you get out of using electronic forms and workflow are related to cost. You can free up staff, in some cases maybe half a staff person's time and salary. So that amounts to significant savings over years. As you know, universities are not particularly well funded necessarily, and the funding situation doesn't look like it's getting any better. So if you've already got a lean organization, but you're being asked to do more, electronic forms and forms processing is one way to do it. You also save everybody's time. There isn't data entry, duplicate data entry, you don't have to locate paper forms in file cabinets, you don't have to copy things and share it out to five different groups who are interested in seeing the same information. And then there's a frustration that you save where people are phoning and saying, where the heck is my travel reimbursement form? Who's got it on their desk? So there's a lot of frustration around paper forms. So to use Plone and workflow, what tools do you need? Well in addition to the things Plone ships with, there are some add-ons that I'm going to show you. And I'll start with the add-ons. So primarily we use Plone Form Gen and this thing called D2C, which I'll say more about in a moment. And then the other highlighted item is Workflow Manager. D2C and Workflow Manager were originally written by Nathan Van Geen and so we've continued to try to enhance those things. But in addition to those three add-ons, we use vocabularies, data grid fields, these big transition buttons which I'll show you. And this thing that we didn't really know about before but these templated emails. So I hope everybody knows what Plone Form Gen does. Essentially the thing that we use, the features of it that we sell people on campus are you can drag and drop fields into forms yourself. So it's very important for us to be able to show our end users or our business process owners who are savvy, they know about their own processes but they're not developers, we can sell them on this because it's something that any user can learn to use and build forms in a matter of an hour or so. So what is this D2C object in case some of you don't know? What it does is you, it's essentially like a saved data adapter for Plone Form Gen except when someone submits a form, D2C creates a Plone content item out of the form submission. So you end up with the same fields as you built into the form and the values of those fields are the values the person submitted in the form and that's a Plone object which means you can edit it and you can assign workflow to it. You can also, in the D2C when you create it or you edit it, you can say submitted objects should be given a new content type. So you can essentially define your own unique content types for a particular form. So you can make a form that's for travel reimbursement and say that the D2C object should create objects of type travel reimbursement and again that's usable, that's useful to tie workflow to those items. I hope you know about vocabulary manager but it's a great tool again through the web. I think you'll hear me talking a lot about the ability for users to do things themselves through the web with as little coding as possible. Vocabulary manager has been heavily used at our university so you can define lists of choices that people can choose from and it's very powerful because you can tie that to selection fields and multi-selection fields in Plone Form Gen. The data grid field is something that we've used and what you essentially do is you can replace copies of fields. Say you've got an investigator for a research grant. Instead of having to set up five different fields for each investigator that you might have and you might have 10 investigators, you can define a data grid that has the columns asking for the fields that you want. So name, email address, title and so on and then the user again can choose how many rows to add or remove and reorder. So that's a very powerful way to keep your forms from growing extremely big based on the maximum number of sets of things that you might need to ask for. And so now workflow manager, this is the lipstick on a pig thing. Workflow is obviously a very powerful part of Plone and so we thought, heck, we should just use this. But we also thought it would be nice to give end users or at least business process owners the ability to create their own workflows themselves without having to go through the ZMI. So as you know, the ZMI can be a little cryptic for end users and so we went from this to something a little bit nicer which also is inside the Plone site setup, the control panel. And so in addition to being able to display the states that you have in your workflow and the transitions that you've got in your workflow, you can also generate diagrams which is something that we found our users really respond to. They can visualize the complexity of their workflow. They can also understand better where a form that someone submits is going to within the workflow. So this shows states and transitions. So again, this is generated for you when you press the button and you've installed graph vis on the server but one of the things that we've been working on, at least one of my students, is a new user interface for workflow manager which I'll show you in a bit. So one of the things that, one of the many things that workflow manager does is it exposes a lot, essentially all of the things that are likely to be used by users in the ZMI in portal workflow but presented for them hopefully in a nicer way through the workflow manager in site setup. And so you can define what kind of permissions are necessary, guards that are necessary for transitions and you can also, this is another feature that I really wanted which is the ability to create email notifications on transitions. And so that's, when you click on adding a new action, you get a very simple user interface for specifying what the email notification should look like. So who should receive it, the subject, the body of the message as well. And this is where the collective easy template add on is very useful because you can provide quite complex expressions in the body, in the subject and even in, well actually throughout the email that's sent out on that transition. Any questions so far? So I just want to mention some, the two ends of the security spectrum when we're designing workflows. Usually what we try to get is for simpler workflows, for simpler business processes, you have the business process owner and then you have the end user. So it's a very simple model and you can essentially skip having to worry about roles and permissions if you just give your business process owner manager access. And that's why we enjoy that one because it's much easier to design. For more complex security, you could go from, you can add a central role where people with different roles within handling a piece of paper, for example, get special permissions or roles. And so that gets a little bit more complex especially for testing. So I mentioned before a user interface enhancement that we found was needed because when our users were trained to use Plone and had been using Plone for a long time, they didn't have any problem finding the state dropdown for transitioning an object. But for novice users or people who generally, maybe from the outside, people who were not familiar with Plone, having the buttons show up in the middle of their screen or at least in a very visible place was something that we thought would be very helpful. And so this is an add-on called U-wash transition buttons by my student, Sam Schwartz. And what it does is it exposes the available transitions on an object and puts it into this box. And that box, you can actually configure to show in any corner or you can actually just hide it. In addition to the transitions, it shows the edit button as well if you've got edit permission on the object. Some of the templated email expressions that are explained in detail on the collective easy template read me are things like listing all sorts of, sorry, generating all sorts of expressions that you can grab information about the current object. You can grab information inside your site. So it's extremely powerful. There's conditions as well. You can even do catalog queries with it. So again, this is the power of easy template that we've enjoyed. So I talked about the tools that come with Plone that we use as well. And in particular, these ones which I'll run through a little bit more detail, these are things that are features in Plone. And yet not a lot of people and users, for example, are familiar with these, but we thought we would put them all together in a package that made dealing with online forms and the processing around them more friendly for users. So Placeful Workflow is a way for us to assign a specific workflow to a portion of your site. And so if you can imagine the Plone form and then inside it, there's the D2C object which is itself a folder. And so all objects created by the D2C are in that folder. Well, that's a perfect example of how you can use Placeful Workflow to assign a special workflow you've designed to that D2C object. So we use Placeful Workflow a lot. We use collections as well to show our business process owners and end users an immediate view of the items that they've submitted or the items that they're responsible for processing. So new submissions will show up for business process owners, things that are in progress and things that are waiting for them to somehow take action on. And what we do is it's a small thing, but when you want to show essentially this dashboard, we create a folder of collections. And then we turn on the show all content. We use the all content view. And so essentially it just shows a list of all the different collections and the items inside it. And at a glance, people know what they have to deal with. Some of the complexity of creating collections on D2C objects is that you have to create a catalog index for the attributes that you want to use as collection criteria. And so there's this a little bit of a complicated process to go through to say that a particular field in your form that's a job type, is it an internship, is it a grant job? To turn that into a collection criterion that you can use involves creating a script Python, creating a new index, and then going into the collection settings in site setup to say that you should enable that criterion, that new criterion in your collections criteria tab. So that's something that's a little bit nitpicky, and it's something that I'd like to be able to include as an enhancement to D2C at some point in the future with a checkbox. So you could say for the fields in this form, check the box next to each one of them that you want to turn into a collection criteria. Another feature of Plohn that really lends itself to this particular use is portlets of different kinds. You can obviously use static text portlets to show links to help, but you can be very specific about the kinds of help you provide. So if there's a specific kind of form, you can show help related to that form. You can also show help based on the role that a person has. So if they're a member of a group that's responsible for processing forms, they can get different help instructions displayed on the page right next to the form that they're looking at so that it's immediate for them. So we use portlets quite a bit. I'll skip this. Some of the things that we've also been asked to do is if there's a form that's being looked at by somebody in an office, they might want to add a comment to it and annotate the form as it's being processed. And so you can obviously use Plohn's built-in commenting, which is a very powerful and very friendly way to display notes or annotations about an object right on the same page. And so there's two kinds of comments that you can use. You can turn on the regular discussion feature in Plohn's site setup, and then you have to do it in two places, right? You have to enable commenting throughout the site, number one. And number two, you have to go into the types panel and say for that particular type, you want to allow commenting. And so that lets you get this kind of thing at the bottom of every object. Very nice because you can do threaded replies, and you can even do things like email notification when there's a comment added to an object. So again, if you think back to a travel expense report, if somebody has a note here from the office saying you're missing this receipt, then the user can get email notification about it, and they can click on it, get taken to the object, and go, aha, yes, I'm missing a receipt. The other place that you can get comments is in workflow transitions. And so as long as the transition occurs, you can have those comments showing up in the object's history. And one way you can see it now, obviously, is if you use the state dropdown menu, and then you choose advanced, you can specify a comment for your transition. And so that's a different way of associating comments on an object. And so it shows up, sorry, there's a couple of duplicates in there, but it shows up there on that history link when you click on it. In an early workflow that we created at the university, we exposed that same feature in a little form on the object itself. So a little bit more visible if you do it that way, but there's two commenting mechanisms you can use that come with blown. So from the perspective of an end user, we wanted to make sure that the different forms and processes that we created would have good landing pages that would make it clear to the different kinds of people who are looking at the form, what they can do next, what are the things that they can do with their system. And so we've created different kinds of landing pages that just big buttons, I mean, people are naturally trained to want to click on buttons rather than reading a lot of text. And so we went with this kind of thing in one case where different kinds of forms available on the site were more enticing for someone to use. Another kind of landing page that we've created was role-based. So if you're a graduate student, then you would just naturally look at the things in that column. So just ways of trying to drive people to the right form that they probably need. Some of the help instructions that we created were, again, for different kinds of users of a particular form, so end users, office users, and so on. And those user instructions would include screenshots and things that highlighted what a different user would need to do next. Is this going to work? All right. So I wanted to show you some examples of the workflows that we've created. And so the first one is that early one, which was for the Office of International Education at our university. And we deployed it six years ago, surprisingly. And there have been about 6,000 of these applications filled out by students. This is to send students abroad on exchange programs or study programs. And it was the first real workflow application that we built. And it's only got about 16 workflow states. But we calculated conservatively that the cost savings for deploying this amount to about $200,000 in the six years since. And that was the example of the Office being able to take essentially a half a staff person and assign that person to more useful duties than data entry and copying and mailing. There's an advising worksheet. So when an advisor meets with a student to discuss what sort of classes the person will take, they fill out this advising worksheet. The two emails get sent, one to the advisor with all the information that was discussed in the meeting, one to the student, including resources and links and forms that they can then consult as well. It's a very simple workflow. But in just a little bit over a year, about 12,000 of these things have been created and used. So the advising office is actually one of our big supporters because of what they've been able to accomplish with a very simple workflow. The form has quite a few fields in it, but it captures what happens in a meeting with a student. We have student IT jobs within our IT division. And so rather than have paper forms mailed out to students that they have to fill out by hand and then have supervisors come to the office and physically look through the applications. This is all done online now. And so about a little over 400 applications have been filled out this way. Each of them saves quite a bit of time for every person involved. It also gives students immediate feedback if they're being asked to come in for an interview or if they've been hired for the job. The workflow itself isn't particularly complicated, but it's still sufficient to send the applications to the right supervisor who's interested in hiring. This next slide is for a project in progress. It's quite a few states. And the workflow is quite complicated. So I guess maybe I shouldn't say this on camera. We're hoping we can go with this. The form is Steve. I don't know if Steve's in the room, but I think he heard me say on IRC that this form initially had 680 fields in it. So that's big. And so it would take 10 seconds to render. So that's not very acceptable. But with data grid fields, I added a couple of different field types that it can support like dates and file attachments and so on. And with that new data grid field version, we've reduced that to about 180 fields on the form. So that's the example of investigators. When you ask 10 questions for every investigator you might have, but there are, say, 20 possible investigators, that's 200 fields that you don't need to have. You just make one data grid instead and then let people add as many rows as they need. So that's still in progress. This is our College of Nursing deals with outside agencies and they store standard contracts about what the agency will do in hiring students to work in their medical facility. And so we created a dexterity content type that's folder-ish. And inside that folder, the College of Nursing can store PDFs that represent the contract. And so the workflow is not that complicated again, but it's something that the College of Nursing has wanted to be able to do for a long time. But now they can manage the expiration and the renewal of contracts in a timely way. And they can get reports that are very accurate at the moment they need them. So it's often been asked to me, why are you recommending the use of Plonform Gen when dexterity is the new thing, especially if archetypes are going away? And so I still feel that Plonform Gen from a user perspective or at least the business process owner's perspective is still a superior offering because it's still done, everything is done through the web. One of the things that I found still missing in dexterity, even though I understand dexterity wasn't designed to be a form tool the way Plonform Gen is, is that dexterity still requires you to do a lot of work in the file system. If you want to do anything outside what's currently available through the dexterity content types panel, you still have to do a fair bit on the file system. And we just don't have enough programmers to be able to do that. So in our attempt to roll out electronic forms to our university, we want to stay away from file system coding and just present through the web options to our users. So looking forward, my wish list for improving Plonform Gen and D2C, essentially the Plonform Gen default view is very static. It's very top to bottom. It's sequential. It'd be nice if there were different layouts available. And so that's something that would be nice to offer people. Sometimes people say, well, how come that online form doesn't look like this PDF that we've created? I don't have that flexibility. It'd be nice to have that. In D2C, as I said, it'd be nice to have check boxes to automatically create criteria for collections. It'd also be nice to have the ability to turn an object that's submitted by a form into a folder-ish content type. That's something right now that's only available in Dexterity. In Dexterity, very simple things were kind of roadblocks for me, at least as far as I could tell. Through the web vocabulary management, that doesn't seem to exist yet. And the validators, the default values, all the powerful ways that you can define expressions in Plonform Gen for fields are not there with Dexterity. And please, somebody tell me I'm wrong. No, OK. And so I want to close with some enhancements that we were planning for Workflow Manager. As you saw when you're creating an email notification body or an email notification message, it's a very clunky interface. You have to know what the expressions are in Collective Easy template. And so it would be nice to have a user interface that lets people pick from expressions and just drag them into the fields that they needed. So if you're defining who the message should go to, you could say, I want to go to this group or that group or that kind of person with that role. Transition guards are also something that we currently do through the ZMI and Portal Workflow. I'd like to be able to expose that through Workflow Manager's user interface. And then the last thing down here is, again, what my student, Sam Schwartz, has been working on, which is getting away from having to deal with a tab showing your states and another tab showing your transitions. Because as you click through even the Workflow Manager user interface, you can get lost in what you're trying to edit if you've got a lot of states. So if you think back to that 60-state workflow, you can get lost pretty quickly where you are, what you have to edit. And so what he's been working on is this ability to get rid of those states and transition lists and just work directly with the diagram. So the current Workflow Manager version can generate a diagram, but it's just a static diagram. It's a nice diagram, but you can't do anything with it. What we wanted to do here is just work right on the diagram itself. So you can move these things around. You can set a layout and then keep it like that. Sam has been working on a way to optimize the layout so that even complex workflows look decent when you first open them up. You can right-click on states and transitions and then get the Edit button, from which you can then change the properties of a state or a transition. And the other slide I wanted to show you for that is that if you've got a very large workflow diagram, you can still find the states and transitions you want very quickly. So you pick it from that list and it'll zoom into the part of the diagram showing that state or transition. So that's something that's still in progress back home. And so the next steps I would leave you with are if you haven't already thought of selling electronic forms to institutions or users or clients that already have blown sites, you really should try it. I mean, it's surprising how happy paper form owners and processors are when they are presented with this kind of option. And if you have any questions, I'd be happy to take them. Yeah. So the bit of the end about doing the layouts with the blown form gen, et cetera, that's one of the reasons why we tend to use Plomino instead because what it gives you is like a tiny MC editor and then if the customer really wants a different layout, then you've got the full power of a visual editor to allow the form any way you want. Have you looked at that instead of using Plom Form Gen for these kind of things? I didn't catch the add on your using. Plomino. Plomino. Plomino? By Eric. Sorry. Plomino. P-L-O-M-I-N-O. Plomino. Okay. Yeah. Sorry? Plomino. Plomino like domino or plomino. Sorry. Yeah. I haven't looked at that. I might have looked at it a long time ago thinking that it probably wasn't exactly what I wanted. I wanted to stick with Plom Form Gen, but I will look at it. Are there other aspects of it that you think would serve this better other than the layout? Yeah. I mean, it has a few other things. It has the ability that has this hide with concept so that you can create the sort of forms where one entering values in one part of the form change the other part of the form, which is another aspect that Plom Form Gen doesn't do so well. And then on top of that, there's all that scripting stuff is able to be combined with multiple forms. And so you can have through the web coding and have different actions, which you can add with a scripting adapter in Plom Form Gen, but there's a lot more of that in Plomino. What it doesn't have is if you wanted to add to create content types, like it creates its own database, if you want to add content types, then you'd probably have to script that yourself. There isn't a straight adapter where you can just go create a content object. And so it's content that puts it in his database doesn't really have the workflow, so you would want to create the content type so you can do the workflow. Okay. Thank you. Here's a question here too. For your electronic forms processing at university, do you also use something like single sign-on or a central directory that people have to log in first, then you get the real user information and real name so that you have authentication and kind of sign off on all the forms? Yes. Our university uses active directory, but we also have the LDAP interface for that. So we use essentially the normal Plone LDAP sign-in, but it's not single sign-on. It means that you have to authenticate for each Plone site that you've got these forms in. So that's something that I'd like to be able to do, which is integrate with Shipleth, for example, to do single sign-on. But for the time being, when users log in to a Plone site like this, then we can auto-fill things like their name, their email address. And so yes, it does provide us with a degree of authentication that when they take some action on a form that it really was them. And so yes, that's the kind of equivalent to a signature that we put in there. There are some forms where people are asked to enter their initials as part of a required field or to check a box saying they've read the terms, for example, of what they're about to do. And so we've kind of gotten around the idea of what constitutes a legally valid signature, electronic signature. So we can pull in things like students' classes that they're enrolled into, and we can list instructor information for the classes they're in. Yeah. There's a question back there. To supplement the next question, we've done a successful implementation of Active Directory services. To supplement Fred's question, we've done a successful implementation of Active Directory Federation Services. And that's a more modern way of Kerberos and Shibboleth. And I think tomorrow we're going to do a short lighting talk on it, and we're using Dieter Maurer's Samu product. And that's a little bit adjusted, but that works with ADFS. Okay. Thank you. Is there... Did you have a question? No? Dylan had another question. One of the requirements we had around very similar sort of thing was a workflow where people needed to sort of say who the next step was, like who instead of having these nominated roles, have you ever come across that sort of thing and have you worked out how to solve it? So you're asking if depending on...well, if I understand right, so they would select who should be notified next? Yeah. So you're sort of like, the next person's a reviewer, and that reviewer can be one of many people. And as part of the workflow I'm saying, it needs to go to this person next, and they need to do that. Right. So based on the information that a person chooses on a form, they can actually...in one example, they can indicate who their supervisor is, who needs to look at something next. And so that can be a pick list from a vocabulary, and it maybe stores the key and the value pair will show their name, and the value underneath that, I think, or the other way around, is their email address. And so that gets put into the form. And then based on that, we can do conditional routing. We can say, if it's this person, then execute this transition, but don't execute the others. So that's the extent we've been able to do that using the built-in features of workflow. All right. Any other questions? Thank you very much.
 Can I start?  Right.  Thanks for coming.  I thought I would just add that little subtitle there because Paul Rowland apparently submitted  his talk proposal before I got mine out, and so mine got chopped.  So I decided to put it back on the slide.  I'm actually working at the University of Wisconsin Oshkosh, but I am Canadian, so that's  why.  Some of what I'll be talking to you about today really is a brain dump of what we've  done at the University over the last three or four years.  And so there's, I apologize in advance, I have 61 slides, so I'll just start.  Essentially we were taking a University that was dealing purely in paper processes, and  there was a lot of frustration around that, how slow paper was, why we were still sending  around a piece of paper and copying paper all over the place, and people were frustrated  not knowing where their form was in this long, some of these rather extended processes,  payments to individuals.  And so let's not be a chump anymore.  Let's move into the 21st century because we can do it, we have the tools.  And one of those tools that we've used a lot of at the University of Oshkosh is plone.  And so plone forms plus the workflow that we have in plone.  So online forms are fast, they're accurate, we can give people instant email notifications,  we can display essentially on a dashboard or with collections, lists of objects or forms  submitted that are in process, where they are in the process, and people can search  and find their information, their submitted form data extremely quickly.  Some of the savings that you get out of using electronic forms and workflow are related  to cost.  You can free up staff, in some cases maybe half a staff person's time and salary.  So that amounts to significant savings over years.  As you know, universities are not particularly well funded necessarily, and the funding situation  doesn't look like it's getting any better.  So if you've already got a lean organization, but you're being asked to do more, electronic  forms and forms processing is one way to do it.  You also save everybody's time.  There isn't data entry, duplicate data entry, you don't have to locate paper forms in file  cabinets, you don't have to copy things and share it out to five different groups who  are interested in seeing the same information.  And then there's a frustration that you save where people are phoning and saying, where  the heck is my travel reimbursement form?  Who's got it on their desk?  So there's a lot of frustration around paper forms.  So to use Plone and workflow, what tools do you need?  Well in addition to the things Plone ships with, there are some add-ons that I'm going  to show you.  And I'll start with the add-ons.  So primarily we use Plone Form Gen and this thing called D2C, which I'll say more about  in a moment.  And then the other highlighted item is Workflow Manager.  D2C and Workflow Manager were originally written by Nathan Van Geen and so we've continued  to try to enhance those things.  But in addition to those three add-ons, we use vocabularies, data grid fields, these  big transition buttons which I'll show you.  And this thing that we didn't really know about before but these templated emails.  So I hope everybody knows what Plone Form Gen does.  Essentially the thing that we use, the features of it that we sell people on campus are you  can drag and drop fields into forms yourself.  So it's very important for us to be able to show our end users or our business process  owners who are savvy, they know about their own processes but they're not developers,  we can sell them on this because it's something that any user can learn to use and build forms  in a matter of an hour or so.  So what is this D2C object in case some of you don't know?  What it does is you, it's essentially like a saved data adapter for Plone Form Gen except  when someone submits a form, D2C creates a Plone content item out of the form submission.  So you end up with the same fields as you built into the form and the values of those  fields are the values the person submitted in the form and that's a Plone object which  means you can edit it and you can assign workflow to it.  You can also, in the D2C when you create it or you edit it, you can say submitted objects  should be given a new content type.  So you can essentially define your own unique content types for a particular form.  So you can make a form that's for travel reimbursement and say that the D2C object should create  objects of type travel reimbursement and again that's usable, that's useful to tie workflow  to those items.  I hope you know about vocabulary manager but it's a great tool again through the web.  I think you'll hear me talking a lot about the ability for users to do things themselves  through the web with as little coding as possible.  Vocabulary manager has been heavily used at our university so you can define lists of  choices that people can choose from and it's very powerful because you can tie that to  selection fields and multi-selection fields in Plone Form Gen.  The data grid field is something that we've used and what you essentially do is you can  replace copies of fields.  Say you've got an investigator for a research grant.  Instead of having to set up five different fields for each investigator that you might  have and you might have 10 investigators, you can define a data grid that has the columns  asking for the fields that you want.  So name, email address, title and so on and then the user again can choose how many rows  to add or remove and reorder.  So that's a very powerful way to keep your forms from growing extremely big based on  the maximum number of sets of things that you might need to ask for.  And so now workflow manager, this is the lipstick on a pig thing.  Workflow is obviously a very powerful part of Plone and so we thought, heck, we should  just use this.  But we also thought it would be nice to give end users or at least business process owners  the ability to create their own workflows themselves without having to go through the  ZMI.  So as you know, the ZMI can be a little cryptic for end users and so we went from this to  something a little bit nicer which also is inside the Plone site setup, the control panel.  And so in addition to being able to display the states that you have in your workflow  and the transitions that you've got in your workflow, you can also generate diagrams which  is something that we found our users really respond to.  They can visualize the complexity of their workflow.  They can also understand better where a form that someone submits is going to within the  workflow.  So this shows states and transitions.  So again, this is generated for you when you press the button and you've installed graph  vis on the server but one of the things that we've been working on, at least one of my  students, is a new user interface for workflow manager which I'll show you in a bit.  So one of the things that, one of the many things that workflow manager does is it exposes  a lot, essentially all of the things that are likely to be used by users in the ZMI  in portal workflow but presented for them hopefully in a nicer way through the workflow  manager in site setup.  And so you can define what kind of permissions are necessary, guards that are necessary for  transitions and you can also, this is another feature that I really wanted which is the  ability to create email notifications on transitions.  And so that's, when you click on adding a new action, you get a very simple user interface  for specifying what the email notification should look like.  So who should receive it, the subject, the body of the message as well.  And this is where the collective easy template add on is very useful because you can provide  quite complex expressions in the body, in the subject and even in, well actually throughout  the email that's sent out on that transition.  Any questions so far?  So I just want to mention some, the two ends of the security spectrum when we're designing  workflows.  Usually what we try to get is for simpler workflows, for simpler business processes,  you have the business process owner and then you have the end user.  So it's a very simple model and you can essentially skip having to worry about roles and permissions  if you just give your business process owner manager access.  And that's why we enjoy that one because it's much easier to design.  For more complex security, you could go from, you can add a central role where people with  different roles within handling a piece of paper, for example, get special permissions  or roles.  And so that gets a little bit more complex especially for testing.  So I mentioned before a user interface enhancement that we found was needed because when our  users were trained to use Plone and had been using Plone for a long time, they didn't have  any problem finding the state dropdown for transitioning an object.  But for novice users or people who generally, maybe from the outside, people who were not  familiar with Plone, having the buttons show up in the middle of their screen or at least  in a very visible place was something that we thought would be very helpful.  And so this is an add-on called U-wash transition buttons by my student, Sam Schwartz.  And what it does is it exposes the available transitions on an object and puts it into  this box.  And that box, you can actually configure to show in any corner or you can actually just  hide it.  In addition to the transitions, it shows the edit button as well if you've got edit permission  on the object.  Some of the templated email expressions that are explained in detail on the collective  easy template read me are things like listing all sorts of, sorry, generating all sorts  of expressions that you can grab information about the current object.  You can grab information inside your site.  So it's extremely powerful.  There's conditions as well.  You can even do catalog queries with it.  So again, this is the power of easy template that we've enjoyed.  So I talked about the tools that come with Plone that we use as well.  And in particular, these ones which I'll run through a little bit more detail, these are  things that are features in Plone.  And yet not a lot of people and users, for example, are familiar with these, but we thought  we would put them all together in a package that made dealing with online forms and the  processing around them more friendly for users.  So Placeful Workflow is a way for us to assign a specific workflow to a portion of your site.  And so if you can imagine the Plone form and then inside it, there's the D2C object which  is itself a folder.  And so all objects created by the D2C are in that folder.  Well, that's a perfect example of how you can use Placeful Workflow to assign a special  workflow you've designed to that D2C object.  So we use Placeful Workflow a lot.  We use collections as well to show our business process owners and end users an immediate  view of the items that they've submitted or the items that they're responsible for processing.  So new submissions will show up for business process owners, things that are in progress  and things that are waiting for them to somehow take action on.  And what we do is it's a small thing, but when you want to show essentially this dashboard,  we create a folder of collections.  And then we turn on the show all content.  We use the all content view.  And so essentially it just shows a list of all the different collections and the items  inside it.  And at a glance, people know what they have to deal with.  Some of the complexity of creating collections on D2C objects is that you have to create  a catalog index for the attributes that you want to use as collection criteria.  And so there's this a little bit of a complicated process to go through to say that a particular  field in your form that's a job type, is it an internship, is it a grant job?  To turn that into a collection criterion that you can use involves creating a script  Python, creating a new index, and then going into the collection settings in site setup  to say that you should enable that criterion, that new criterion in your collections criteria  tab.  So that's something that's a little bit nitpicky, and it's something that I'd like to be able  to include as an enhancement to D2C at some point in the future with a checkbox.  So you could say for the fields in this form, check the box next to each one of them that  you want to turn into a collection criteria.  Another feature of Plohn that really lends itself to this particular use is portlets  of different kinds.  You can obviously use static text portlets to show links to help, but you can be very  specific about the kinds of help you provide.  So if there's a specific kind of form, you can show help related to that form.  You can also show help based on the role that a person has.  So if they're a member of a group that's responsible for processing forms, they can  get different help instructions displayed on the page right next to the form that they're  looking at so that it's immediate for them.  So we use portlets quite a bit.  I'll skip this.  Some of the things that we've also been asked to do is if there's a form that's being looked  at by somebody in an office, they might want to add a comment to it and annotate the form  as it's being processed.  And so you can obviously use Plohn's built-in commenting, which is a very powerful and very  friendly way to display notes or annotations about an object right on the same page.  And so there's two kinds of comments that you can use.  You can turn on the regular discussion feature in Plohn's site setup, and then you have to  do it in two places, right?  You have to enable commenting throughout the site, number one.  And number two, you have to go into the types panel and say for that particular type, you  want to allow commenting.  And so that lets you get this kind of thing at the bottom of every object.  Very nice because you can do threaded replies, and you can even do things like email notification  when there's a comment added to an object.  So again, if you think back to a travel expense report, if somebody has a note here from the  office saying you're missing this receipt, then the user can get email notification about  it, and they can click on it, get taken to the object, and go, aha, yes, I'm missing  a receipt.  The other place that you can get comments is in workflow transitions.  And so as long as the transition occurs, you can have those comments showing up in the  object's history.  And one way you can see it now, obviously, is if you use the state dropdown menu, and  then you choose advanced, you can specify a comment for your transition.  And so that's a different way of associating comments on an object.  And so it shows up, sorry, there's a couple of duplicates in there, but it shows up there  on that history link when you click on it.  In an early workflow that we created at the university, we exposed that same feature in  a little form on the object itself.  So a little bit more visible if you do it that way, but there's two commenting mechanisms  you can use that come with blown.  So from the perspective of an end user, we wanted to make sure that the different forms  and processes that we created would have good landing pages that would make it clear to  the different kinds of people who are looking at the form, what they can do next, what are  the things that they can do with their system.  And so we've created different kinds of landing pages that just big buttons, I mean, people  are naturally trained to want to click on buttons rather than reading a lot of text.  And so we went with this kind of thing in one case where different kinds of forms available  on the site were more enticing for someone to use.  Another kind of landing page that we've created was role-based.  So if you're a graduate student, then you would just naturally look at the things in  that column.  So just ways of trying to drive people to the right form that they probably need.  Some of the help instructions that we created were, again, for different kinds of users  of a particular form, so end users, office users, and so on.  And those user instructions would include screenshots and things that highlighted what  a different user would need to do next.  Is this going to work?  All right.  So I wanted to show you some examples of the workflows that we've created.  And so the first one is that early one, which was for the Office of International Education  at our university.  And we deployed it six years ago, surprisingly.  And there have been about 6,000 of these applications filled out by students.  This is to send students abroad on exchange programs or study programs.  And it was the first real workflow application that we built.  And it's only got about 16 workflow states.  But we calculated conservatively that the cost savings for deploying this amount to  about $200,000 in the six years since.  And that was the example of the Office being able to take essentially a half a staff person  and assign that person to more useful duties than data entry and copying and mailing.  There's an advising worksheet.  So when an advisor meets with a student to discuss what sort of classes the person will  take, they fill out this advising worksheet.  The two emails get sent, one to the advisor with all the information that was discussed  in the meeting, one to the student, including resources and links and forms that they can  then consult as well.  It's a very simple workflow.  But in just a little bit over a year, about 12,000 of these things have been created and  used.  So the advising office is actually one of our big supporters because of what they've  been able to accomplish with a very simple workflow.  The form has quite a few fields in it, but it captures what happens in a meeting with  a student.  We have student IT jobs within our IT division.  And so rather than have paper forms mailed out to students that they have to fill out  by hand and then have supervisors come to the office and physically look through the  applications.  This is all done online now.  And so about a little over 400 applications have been filled out this way.  Each of them saves quite a bit of time for every person involved.  It also gives students immediate feedback if they're being asked to come in for an interview  or if they've been hired for the job.  The workflow itself isn't particularly complicated, but it's still sufficient to send the applications  to the right supervisor who's interested in hiring.  This next slide is for a project in progress.  It's quite a few states.  And the workflow is quite complicated.  So I guess maybe I shouldn't say this on camera.  We're hoping we can go with this.  The form is Steve.  I don't know if Steve's in the room, but I think he heard me say on IRC that this form  initially had 680 fields in it.  So that's big.  And so it would take 10 seconds to render.  So that's not very acceptable.  But with data grid fields, I added a couple of different field types that it can support  like dates and file attachments and so on.  And with that new data grid field version, we've reduced that to about 180 fields on  the form.  So that's the example of investigators.  When you ask 10 questions for every investigator you might have, but there are, say, 20 possible  investigators, that's 200 fields that you don't need to have.  You just make one data grid instead and then let people add as many rows as they need.  So that's still in progress.  This is our College of Nursing deals with outside agencies and they store standard contracts  about what the agency will do in hiring students to work in their medical facility.  And so we created a dexterity content type that's folder-ish.  And inside that folder, the College of Nursing can store PDFs that represent the contract.  And so the workflow is not that complicated again, but it's something that the College  of Nursing has wanted to be able to do for a long time.  But now they can manage the expiration and the renewal of contracts in a timely way.  And they can get reports that are very accurate at the moment they need them.  So it's often been asked to me, why are you recommending the use of Plonform Gen when dexterity  is the new thing, especially if archetypes are going away?  And so I still feel that Plonform Gen from a user perspective or at least the business  process owner's perspective is still a superior offering because it's still done, everything  is done through the web.  One of the things that I found still missing in dexterity, even though I understand dexterity  wasn't designed to be a form tool the way Plonform Gen is, is that dexterity still requires  you to do a lot of work in the file system.  If you want to do anything outside what's currently available through the dexterity  content types panel, you still have to do a fair bit on the file system.  And we just don't have enough programmers to be able to do that.  So in our attempt to roll out electronic forms to our university, we want to stay away from  file system coding and just present through the web options to our users.  So looking forward, my wish list for improving Plonform Gen and D2C, essentially the Plonform  Gen default view is very static.  It's very top to bottom.  It's sequential.  It'd be nice if there were different layouts available.  And so that's something that would be nice to offer people.  Sometimes people say, well, how come that online form doesn't look like this PDF that  we've created?  I don't have that flexibility.  It'd be nice to have that.  In D2C, as I said, it'd be nice to have check boxes to automatically create criteria for  collections.  It'd also be nice to have the ability to turn an object that's submitted by a form into  a folder-ish content type.  That's something right now that's only available in Dexterity.  In Dexterity, very simple things were kind of roadblocks for me, at least as far as I  could tell.  Through the web vocabulary management, that doesn't seem to exist yet.  And the validators, the default values, all the powerful ways that you can define expressions  in Plonform Gen for fields are not there with Dexterity.  And please, somebody tell me I'm wrong.  No, OK.  And so I want to close with some enhancements that we were planning for Workflow Manager.  As you saw when you're creating an email notification body or an email notification message, it's  a very clunky interface.  You have to know what the expressions are in Collective Easy template.  And so it would be nice to have a user interface that lets people pick from expressions and  just drag them into the fields that they needed.  So if you're defining who the message should go to, you could say, I want to go to this  group or that group or that kind of person with that role.  Transition guards are also something that we currently do through the ZMI and Portal  Workflow.  I'd like to be able to expose that through Workflow Manager's user interface.  And then the last thing down here is, again, what my student, Sam Schwartz, has been working  on, which is getting away from having to deal with a tab showing your states and another  tab showing your transitions.  Because as you click through even the Workflow Manager user interface, you can get lost in  what you're trying to edit if you've got a lot of states.  So if you think back to that 60-state workflow, you can get lost pretty quickly where you  are, what you have to edit.  And so what he's been working on is this ability to get rid of those states and transition  lists and just work directly with the diagram.  So the current Workflow Manager version can generate a diagram, but it's just a static  diagram.  It's a nice diagram, but you can't do anything with it.  What we wanted to do here is just work right on the diagram itself.  So you can move these things around.  You can set a layout and then keep it like that.  Sam has been working on a way to optimize the layout so that even complex workflows look  decent when you first open them up.  You can right-click on states and transitions and then get the Edit button, from which you  can then change the properties of a state or a transition.  And the other slide I wanted to show you for that is that if you've got a very large workflow  diagram, you can still find the states and transitions you want very quickly.  So you pick it from that list and it'll zoom into the part of the diagram showing that  state or transition.  So that's something that's still in progress back home.  And so the next steps I would leave you with are if you haven't already thought of selling  electronic forms to institutions or users or clients that already have blown sites, you  really should try it.  I mean, it's surprising how happy paper form owners and processors are when they are presented  with this kind of option.  And if you have any questions, I'd be happy to take them.  Yeah.  So the bit of the end about doing the layouts with the blown form gen, et cetera, that's  one of the reasons why we tend to use Plomino instead because what it gives you is like  a tiny MC editor and then if the customer really wants a different layout, then you've  got the full power of a visual editor to allow the form any way you want.  Have you looked at that instead of using Plom Form Gen for these kind of things?  I didn't catch the add on your using.  Plomino.  Plomino.  Plomino?  By Eric.  Sorry.  Plomino.  P-L-O-M-I-N-O.  Plomino.  Okay.  Yeah.  Sorry?  Plomino.  Plomino like domino or plomino.  Sorry.  Yeah.  I haven't looked at that.  I might have looked at it a long time ago thinking that it probably wasn't exactly what I wanted.  I wanted to stick with Plom Form Gen, but I will look at it.  Are there other aspects of it that you think would serve this better other than the layout?  Yeah.  I mean, it has a few other things.  It has the ability that has this hide with concept so that you can create the sort of  forms where one entering values in one part of the form change the other part of the form,  which is another aspect that Plom Form Gen doesn't do so well.  And then on top of that, there's all that scripting stuff is able to be combined with  multiple forms.  And so you can have through the web coding and have different actions, which you can  add with a scripting adapter in Plom Form Gen, but there's a lot more of that in Plomino.  What it doesn't have is if you wanted to add to create content types, like it creates its  own database, if you want to add content types, then you'd probably have to script that yourself.  There isn't a straight adapter where you can just go create a content object.  And so it's content that puts it in his database doesn't really have the workflow, so you would  want to create the content type so you can do the workflow.  Okay.  Thank you.  Here's a question here too.  For your electronic forms processing at university, do you also use something like single sign-on  or a central directory that people have to log in first, then you get the real user information  and real name so that you have authentication and kind of sign off on all the forms?  Yes.  Our university uses active directory, but we also have the LDAP interface for that.  So we use essentially the normal Plone LDAP sign-in, but it's not single sign-on.  It means that you have to authenticate for each Plone site that you've got these forms  in.  So that's something that I'd like to be able to do, which is integrate with Shipleth, for  example, to do single sign-on.  But for the time being, when users log in to a Plone site like this, then we can auto-fill  things like their name, their email address.  And so yes, it does provide us with a degree of authentication that when they take some  action on a form that it really was them.  And so yes, that's the kind of equivalent to a signature that we put in there.  There are some forms where people are asked to enter their initials as part of a required  field or to check a box saying they've read the terms, for example, of what they're about  to do.  And so we've kind of gotten around the idea of what constitutes a legally valid signature,  electronic signature.  So we can pull in things like students' classes that they're enrolled into, and we can list  instructor information for the classes they're in.  Yeah.  There's a question back there.  To supplement the next question, we've done a successful implementation of Active Directory  services.  To supplement Fred's question, we've done a successful implementation of Active Directory  Federation Services.  And that's a more modern way of Kerberos and Shibboleth.  And I think tomorrow we're going to do a short lighting talk on it, and we're using  Dieter Maurer's Samu product.  And that's a little bit adjusted, but that works with ADFS.  Okay.  Thank you.  Is there...  Did you have a question?  No?  Dylan had another question.  One of the requirements we had around very similar sort of thing was a workflow where  people needed to sort of say who the next step was, like who instead of having these  nominated roles, have you ever come across that sort of thing and have you worked out  how to solve it?  So you're asking if depending on...well, if I understand right, so they would select  who should be notified next?  Yeah.  So you're sort of like, the next person's a reviewer, and that reviewer can be one of  many people.  And as part of the workflow I'm saying, it needs to go to this person next, and they  need to do that.  Right.  So based on the information that a person chooses on a form, they can actually...in  one example, they can indicate who their supervisor is, who needs to look at something  next.  And so that can be a pick list from a vocabulary, and it maybe stores the key and the value  pair will show their name, and the value underneath that, I think, or the other way around, is  their email address.  And so that gets put into the form.  And then based on that, we can do conditional routing.  We can say, if it's this person, then execute this transition, but don't execute the others.  So that's the extent we've been able to do that using the built-in features of workflow.  All right.  Any other questions?  Thank you very much.
Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_0_719.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_720_947.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_948_1595.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_1596_3395.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_3396_4727.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_4728_5627.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_5628_8879.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_8880_10607.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_10608_10931.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_10932_11375.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_11376_11519.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_11520_11999.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_12000_12971.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_12972_13763.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_13764_14795.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_14796_16391.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_16392_16439.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_16440_18011.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_18012_20519.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_20520_21383.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_21384_23519.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_23520_24479.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_24480_26543.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_26544_26735.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_26736_27143.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_27144_27587.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_27588_27719.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_27720_28115.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_28116_30347.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_30348_39035.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_39036_41111.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_41112_44195.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_44196_44687.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_44688_44747.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_44748_49163.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_49164_51959.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_51960_55619.png Plone_Conference_2014_-_Easy_Online_Business_Processes_with_Plone_Forms_and_Workflow_-_T_55620_55691.png
Can I start? Right. Thanks for coming. I thought I would just add that little subtitle there because Paul Rowland apparently submitted his talk proposal before I got mine out, and so mine got chopped. So I decided to put it back on the slide. I'm actually working at the University of Wisconsin Oshkosh, but I am Canadian, so that's why. Some of what I'll be talking to you about today really is a brain dump of what we've done at the University over the last three or four years. And so there's, I apologize in advance, I have 61 slides, so I'll just start. Essentially we were taking a University that was dealing purely in paper processes, and there was a lot of frustration around that, how slow paper was, why we were still sending around a piece of paper and copying paper all over the place, and people were frustrated not knowing where their form was in this long, some of these rather extended processes, payments to individuals. And so let's not be a chump anymore. Let's move into the 21st century because we can do it, we have the tools. And one of those tools that we've used a lot of at the University of Oshkosh is plone. And so plone forms plus the workflow that we have in plone. So online forms are fast, they're accurate, we can give people instant email notifications, we can display essentially on a dashboard or with collections, lists of objects or forms submitted that are in process, where they are in the process, and people can search and find their information, their submitted form data extremely quickly. Some of the savings that you get out of using electronic forms and workflow are related to cost. You can free up staff, in some cases maybe half a staff person's time and salary. So that amounts to significant savings over years. As you know, universities are not particularly well funded necessarily, and the funding situation doesn't look like it's getting any better. So if you've already got a lean organization, but you're being asked to do more, electronic forms and forms processing is one way to do it. You also save everybody's time. There isn't data entry, duplicate data entry, you don't have to locate paper forms in file cabinets, you don't have to copy things and share it out to five different groups who are interested in seeing the same information. And then there's a frustration that you save where people are phoning and saying, where the heck is my travel reimbursement form? Who's got it on their desk? So there's a lot of frustration around paper forms. So to use Plone and workflow, what tools do you need? Well in addition to the things Plone ships with, there are some add-ons that I'm going to show you. And I'll start with the add-ons. So primarily we use Plone Form Gen and this thing called D2C, which I'll say more about in a moment. And then the other highlighted item is Workflow Manager. D2C and Workflow Manager were originally written by Nathan Van Geen and so we've continued to try to enhance those things. But in addition to those three add-ons, we use vocabularies, data grid fields, these big transition buttons which I'll show you. And this thing that we didn't really know about before but these templated emails. So I hope everybody knows what Plone Form Gen does. Essentially the thing that we use, the features of it that we sell people on campus are you can drag and drop fields into forms yourself. So it's very important for us to be able to show our end users or our business process owners who are savvy, they know about their own processes but they're not developers, we can sell them on this because it's something that any user can learn to use and build forms in a matter of an hour or so. So what is this D2C object in case some of you don't know? What it does is you, it's essentially like a saved data adapter for Plone Form Gen except when someone submits a form, D2C creates a Plone content item out of the form submission. So you end up with the same fields as you built into the form and the values of those fields are the values the person submitted in the form and that's a Plone object which means you can edit it and you can assign workflow to it. You can also, in the D2C when you create it or you edit it, you can say submitted objects should be given a new content type. So you can essentially define your own unique content types for a particular form. So you can make a form that's for travel reimbursement and say that the D2C object should create objects of type travel reimbursement and again that's usable, that's useful to tie workflow to those items. I hope you know about vocabulary manager but it's a great tool again through the web. I think you'll hear me talking a lot about the ability for users to do things themselves through the web with as little coding as possible. Vocabulary manager has been heavily used at our university so you can define lists of choices that people can choose from and it's very powerful because you can tie that to selection fields and multi-selection fields in Plone Form Gen. The data grid field is something that we've used and what you essentially do is you can replace copies of fields. Say you've got an investigator for a research grant. Instead of having to set up five different fields for each investigator that you might have and you might have 10 investigators, you can define a data grid that has the columns asking for the fields that you want. So name, email address, title and so on and then the user again can choose how many rows to add or remove and reorder. So that's a very powerful way to keep your forms from growing extremely big based on the maximum number of sets of things that you might need to ask for. And so now workflow manager, this is the lipstick on a pig thing. Workflow is obviously a very powerful part of Plone and so we thought, heck, we should just use this. But we also thought it would be nice to give end users or at least business process owners the ability to create their own workflows themselves without having to go through the ZMI. So as you know, the ZMI can be a little cryptic for end users and so we went from this to something a little bit nicer which also is inside the Plone site setup, the control panel. And so in addition to being able to display the states that you have in your workflow and the transitions that you've got in your workflow, you can also generate diagrams which is something that we found our users really respond to. They can visualize the complexity of their workflow. They can also understand better where a form that someone submits is going to within the workflow. So this shows states and transitions. So again, this is generated for you when you press the button and you've installed graph vis on the server but one of the things that we've been working on, at least one of my students, is a new user interface for workflow manager which I'll show you in a bit. So one of the things that, one of the many things that workflow manager does is it exposes a lot, essentially all of the things that are likely to be used by users in the ZMI in portal workflow but presented for them hopefully in a nicer way through the workflow manager in site setup. And so you can define what kind of permissions are necessary, guards that are necessary for transitions and you can also, this is another feature that I really wanted which is the ability to create email notifications on transitions. And so that's, when you click on adding a new action, you get a very simple user interface for specifying what the email notification should look like. So who should receive it, the subject, the body of the message as well. And this is where the collective easy template add on is very useful because you can provide quite complex expressions in the body, in the subject and even in, well actually throughout the email that's sent out on that transition. Any questions so far? So I just want to mention some, the two ends of the security spectrum when we're designing workflows. Usually what we try to get is for simpler workflows, for simpler business processes, you have the business process owner and then you have the end user. So it's a very simple model and you can essentially skip having to worry about roles and permissions if you just give your business process owner manager access. And that's why we enjoy that one because it's much easier to design. For more complex security, you could go from, you can add a central role where people with different roles within handling a piece of paper, for example, get special permissions or roles. And so that gets a little bit more complex especially for testing. So I mentioned before a user interface enhancement that we found was needed because when our users were trained to use Plone and had been using Plone for a long time, they didn't have any problem finding the state dropdown for transitioning an object. But for novice users or people who generally, maybe from the outside, people who were not familiar with Plone, having the buttons show up in the middle of their screen or at least in a very visible place was something that we thought would be very helpful. And so this is an add-on called U-wash transition buttons by my student, Sam Schwartz. And what it does is it exposes the available transitions on an object and puts it into this box. And that box, you can actually configure to show in any corner or you can actually just hide it. In addition to the transitions, it shows the edit button as well if you've got edit permission on the object. Some of the templated email expressions that are explained in detail on the collective easy template read me are things like listing all sorts of, sorry, generating all sorts of expressions that you can grab information about the current object. You can grab information inside your site. So it's extremely powerful. There's conditions as well. You can even do catalog queries with it. So again, this is the power of easy template that we've enjoyed. So I talked about the tools that come with Plone that we use as well. And in particular, these ones which I'll run through a little bit more detail, these are things that are features in Plone. And yet not a lot of people and users, for example, are familiar with these, but we thought we would put them all together in a package that made dealing with online forms and the processing around them more friendly for users. So Placeful Workflow is a way for us to assign a specific workflow to a portion of your site. And so if you can imagine the Plone form and then inside it, there's the D2C object which is itself a folder. And so all objects created by the D2C are in that folder. Well, that's a perfect example of how you can use Placeful Workflow to assign a special workflow you've designed to that D2C object. So we use Placeful Workflow a lot. We use collections as well to show our business process owners and end users an immediate view of the items that they've submitted or the items that they're responsible for processing. So new submissions will show up for business process owners, things that are in progress and things that are waiting for them to somehow take action on. And what we do is it's a small thing, but when you want to show essentially this dashboard, we create a folder of collections. And then we turn on the show all content. We use the all content view. And so essentially it just shows a list of all the different collections and the items inside it. And at a glance, people know what they have to deal with. Some of the complexity of creating collections on D2C objects is that you have to create a catalog index for the attributes that you want to use as collection criteria. And so there's this a little bit of a complicated process to go through to say that a particular field in your form that's a job type, is it an internship, is it a grant job? To turn that into a collection criterion that you can use involves creating a script Python, creating a new index, and then going into the collection settings in site setup to say that you should enable that criterion, that new criterion in your collections criteria tab. So that's something that's a little bit nitpicky, and it's something that I'd like to be able to include as an enhancement to D2C at some point in the future with a checkbox. So you could say for the fields in this form, check the box next to each one of them that you want to turn into a collection criteria. Another feature of Plohn that really lends itself to this particular use is portlets of different kinds. You can obviously use static text portlets to show links to help, but you can be very specific about the kinds of help you provide. So if there's a specific kind of form, you can show help related to that form. You can also show help based on the role that a person has. So if they're a member of a group that's responsible for processing forms, they can get different help instructions displayed on the page right next to the form that they're looking at so that it's immediate for them. So we use portlets quite a bit. I'll skip this. Some of the things that we've also been asked to do is if there's a form that's being looked at by somebody in an office, they might want to add a comment to it and annotate the form as it's being processed. And so you can obviously use Plohn's built-in commenting, which is a very powerful and very friendly way to display notes or annotations about an object right on the same page. And so there's two kinds of comments that you can use. You can turn on the regular discussion feature in Plohn's site setup, and then you have to do it in two places, right? You have to enable commenting throughout the site, number one. And number two, you have to go into the types panel and say for that particular type, you want to allow commenting. And so that lets you get this kind of thing at the bottom of every object. Very nice because you can do threaded replies, and you can even do things like email notification when there's a comment added to an object. So again, if you think back to a travel expense report, if somebody has a note here from the office saying you're missing this receipt, then the user can get email notification about it, and they can click on it, get taken to the object, and go, aha, yes, I'm missing a receipt. The other place that you can get comments is in workflow transitions. And so as long as the transition occurs, you can have those comments showing up in the object's history. And one way you can see it now, obviously, is if you use the state dropdown menu, and then you choose advanced, you can specify a comment for your transition. And so that's a different way of associating comments on an object. And so it shows up, sorry, there's a couple of duplicates in there, but it shows up there on that history link when you click on it. In an early workflow that we created at the university, we exposed that same feature in a little form on the object itself. So a little bit more visible if you do it that way, but there's two commenting mechanisms you can use that come with blown. So from the perspective of an end user, we wanted to make sure that the different forms and processes that we created would have good landing pages that would make it clear to the different kinds of people who are looking at the form, what they can do next, what are the things that they can do with their system. And so we've created different kinds of landing pages that just big buttons, I mean, people are naturally trained to want to click on buttons rather than reading a lot of text. And so we went with this kind of thing in one case where different kinds of forms available on the site were more enticing for someone to use. Another kind of landing page that we've created was role-based. So if you're a graduate student, then you would just naturally look at the things in that column. So just ways of trying to drive people to the right form that they probably need. Some of the help instructions that we created were, again, for different kinds of users of a particular form, so end users, office users, and so on. And those user instructions would include screenshots and things that highlighted what a different user would need to do next. Is this going to work? All right. So I wanted to show you some examples of the workflows that we've created. And so the first one is that early one, which was for the Office of International Education at our university. And we deployed it six years ago, surprisingly. And there have been about 6,000 of these applications filled out by students. This is to send students abroad on exchange programs or study programs. And it was the first real workflow application that we built. And it's only got about 16 workflow states. But we calculated conservatively that the cost savings for deploying this amount to about $200,000 in the six years since. And that was the example of the Office being able to take essentially a half a staff person and assign that person to more useful duties than data entry and copying and mailing. There's an advising worksheet. So when an advisor meets with a student to discuss what sort of classes the person will take, they fill out this advising worksheet. The two emails get sent, one to the advisor with all the information that was discussed in the meeting, one to the student, including resources and links and forms that they can then consult as well. It's a very simple workflow. But in just a little bit over a year, about 12,000 of these things have been created and used. So the advising office is actually one of our big supporters because of what they've been able to accomplish with a very simple workflow. The form has quite a few fields in it, but it captures what happens in a meeting with a student. We have student IT jobs within our IT division. And so rather than have paper forms mailed out to students that they have to fill out by hand and then have supervisors come to the office and physically look through the applications. This is all done online now. And so about a little over 400 applications have been filled out this way. Each of them saves quite a bit of time for every person involved. It also gives students immediate feedback if they're being asked to come in for an interview or if they've been hired for the job. The workflow itself isn't particularly complicated, but it's still sufficient to send the applications to the right supervisor who's interested in hiring. This next slide is for a project in progress. It's quite a few states. And the workflow is quite complicated. So I guess maybe I shouldn't say this on camera. We're hoping we can go with this. The form is Steve. I don't know if Steve's in the room, but I think he heard me say on IRC that this form initially had 680 fields in it. So that's big. And so it would take 10 seconds to render. So that's not very acceptable. But with data grid fields, I added a couple of different field types that it can support like dates and file attachments and so on. And with that new data grid field version, we've reduced that to about 180 fields on the form. So that's the example of investigators. When you ask 10 questions for every investigator you might have, but there are, say, 20 possible investigators, that's 200 fields that you don't need to have. You just make one data grid instead and then let people add as many rows as they need. So that's still in progress. This is our College of Nursing deals with outside agencies and they store standard contracts about what the agency will do in hiring students to work in their medical facility. And so we created a dexterity content type that's folder-ish. And inside that folder, the College of Nursing can store PDFs that represent the contract. And so the workflow is not that complicated again, but it's something that the College of Nursing has wanted to be able to do for a long time. But now they can manage the expiration and the renewal of contracts in a timely way. And they can get reports that are very accurate at the moment they need them. So it's often been asked to me, why are you recommending the use of Plonform Gen when dexterity is the new thing, especially if archetypes are going away? And so I still feel that Plonform Gen from a user perspective or at least the business process owner's perspective is still a superior offering because it's still done, everything is done through the web. One of the things that I found still missing in dexterity, even though I understand dexterity wasn't designed to be a form tool the way Plonform Gen is, is that dexterity still requires you to do a lot of work in the file system. If you want to do anything outside what's currently available through the dexterity content types panel, you still have to do a fair bit on the file system. And we just don't have enough programmers to be able to do that. So in our attempt to roll out electronic forms to our university, we want to stay away from file system coding and just present through the web options to our users. So looking forward, my wish list for improving Plonform Gen and D2C, essentially the Plonform Gen default view is very static. It's very top to bottom. It's sequential. It'd be nice if there were different layouts available. And so that's something that would be nice to offer people. Sometimes people say, well, how come that online form doesn't look like this PDF that we've created? I don't have that flexibility. It'd be nice to have that. In D2C, as I said, it'd be nice to have check boxes to automatically create criteria for collections. It'd also be nice to have the ability to turn an object that's submitted by a form into a folder-ish content type. That's something right now that's only available in Dexterity. In Dexterity, very simple things were kind of roadblocks for me, at least as far as I could tell. Through the web vocabulary management, that doesn't seem to exist yet. And the validators, the default values, all the powerful ways that you can define expressions in Plonform Gen for fields are not there with Dexterity. And please, somebody tell me I'm wrong. No, OK. And so I want to close with some enhancements that we were planning for Workflow Manager. As you saw when you're creating an email notification body or an email notification message, it's a very clunky interface. You have to know what the expressions are in Collective Easy template. And so it would be nice to have a user interface that lets people pick from expressions and just drag them into the fields that they needed. So if you're defining who the message should go to, you could say, I want to go to this group or that group or that kind of person with that role. Transition guards are also something that we currently do through the ZMI and Portal Workflow. I'd like to be able to expose that through Workflow Manager's user interface. And then the last thing down here is, again, what my student, Sam Schwartz, has been working on, which is getting away from having to deal with a tab showing your states and another tab showing your transitions. Because as you click through even the Workflow Manager user interface, you can get lost in what you're trying to edit if you've got a lot of states. So if you think back to that 60-state workflow, you can get lost pretty quickly where you are, what you have to edit. And so what he's been working on is this ability to get rid of those states and transition lists and just work directly with the diagram. So the current Workflow Manager version can generate a diagram, but it's just a static diagram. It's a nice diagram, but you can't do anything with it. What we wanted to do here is just work right on the diagram itself. So you can move these things around. You can set a layout and then keep it like that. Sam has been working on a way to optimize the layout so that even complex workflows look decent when you first open them up. You can right-click on states and transitions and then get the Edit button, from which you can then change the properties of a state or a transition. And the other slide I wanted to show you for that is that if you've got a very large workflow diagram, you can still find the states and transitions you want very quickly. So you pick it from that list and it'll zoom into the part of the diagram showing that state or transition. So that's something that's still in progress back home. And so the next steps I would leave you with are if you haven't already thought of selling electronic forms to institutions or users or clients that already have blown sites, you really should try it. I mean, it's surprising how happy paper form owners and processors are when they are presented with this kind of option. And if you have any questions, I'd be happy to take them. Yeah. So the bit of the end about doing the layouts with the blown form gen, et cetera, that's one of the reasons why we tend to use Plomino instead because what it gives you is like a tiny MC editor and then if the customer really wants a different layout, then you've got the full power of a visual editor to allow the form any way you want. Have you looked at that instead of using Plom Form Gen for these kind of things? I didn't catch the add on your using. Plomino. Plomino. Plomino? By Eric. Sorry. Plomino. P-L-O-M-I-N-O. Plomino. Okay. Yeah. Sorry? Plomino. Plomino like domino or plomino. Sorry. Yeah. I haven't looked at that. I might have looked at it a long time ago thinking that it probably wasn't exactly what I wanted. I wanted to stick with Plom Form Gen, but I will look at it. Are there other aspects of it that you think would serve this better other than the layout? Yeah. I mean, it has a few other things. It has the ability that has this hide with concept so that you can create the sort of forms where one entering values in one part of the form change the other part of the form, which is another aspect that Plom Form Gen doesn't do so well. And then on top of that, there's all that scripting stuff is able to be combined with multiple forms. And so you can have through the web coding and have different actions, which you can add with a scripting adapter in Plom Form Gen, but there's a lot more of that in Plomino. What it doesn't have is if you wanted to add to create content types, like it creates its own database, if you want to add content types, then you'd probably have to script that yourself. There isn't a straight adapter where you can just go create a content object. And so it's content that puts it in his database doesn't really have the workflow, so you would want to create the content type so you can do the workflow. Okay. Thank you. Here's a question here too. For your electronic forms processing at university, do you also use something like single sign-on or a central directory that people have to log in first, then you get the real user information and real name so that you have authentication and kind of sign off on all the forms? Yes. Our university uses active directory, but we also have the LDAP interface for that. So we use essentially the normal Plone LDAP sign-in, but it's not single sign-on. It means that you have to authenticate for each Plone site that you've got these forms in. So that's something that I'd like to be able to do, which is integrate with Shipleth, for example, to do single sign-on. But for the time being, when users log in to a Plone site like this, then we can auto-fill things like their name, their email address. And so yes, it does provide us with a degree of authentication that when they take some action on a form that it really was them. And so yes, that's the kind of equivalent to a signature that we put in there. There are some forms where people are asked to enter their initials as part of a required field or to check a box saying they've read the terms, for example, of what they're about to do. And so we've kind of gotten around the idea of what constitutes a legally valid signature, electronic signature. So we can pull in things like students' classes that they're enrolled into, and we can list instructor information for the classes they're in. Yeah. There's a question back there. To supplement the next question, we've done a successful implementation of Active Directory services. To supplement Fred's question, we've done a successful implementation of Active Directory Federation Services. And that's a more modern way of Kerberos and Shibboleth. And I think tomorrow we're going to do a short lighting talk on it, and we're using Dieter Maurer's Samu product. And that's a little bit adjusted, but that works with ADFS. Okay. Thank you. Is there... Did you have a question? No? Dylan had another question. One of the requirements we had around very similar sort of thing was a workflow where people needed to sort of say who the next step was, like who instead of having these nominated roles, have you ever come across that sort of thing and have you worked out how to solve it? So you're asking if depending on...well, if I understand right, so they would select who should be notified next? Yeah. So you're sort of like, the next person's a reviewer, and that reviewer can be one of many people. And as part of the workflow I'm saying, it needs to go to this person next, and they need to do that. Right. So based on the information that a person chooses on a form, they can actually...in one example, they can indicate who their supervisor is, who needs to look at something next. And so that can be a pick list from a vocabulary, and it maybe stores the key and the value pair will show their name, and the value underneath that, I think, or the other way around, is their email address. And so that gets put into the form. And then based on that, we can do conditional routing. We can say, if it's this person, then execute this transition, but don't execute the others. So that's the extent we've been able to do that using the built-in features of workflow. All right. Any other questions? Thank you very much.
that are likely to be used by users in the ZMI in a piece of paper, for example, get special for the time being, when users log in to a Plone There are some forms where people are asked to