Pre-populate initiation form values with InfoPath - sharepoint-2010

I'm currently exploring some new features in SP2010, Designer and InfoPath regarding Workflows and Initiation Forms. What I want is to manual start a workflow on a existing list item, give the workflow some input values with the initiation form and then process the workflow in its whole.
The workflow is a sequential set of operations updating the current list item. No waits or other input is required. Once started it should complete immediately after the set-operations.
The problem is, I would like to pre-populate some of the initiation form parameters with values from the list item itself. The user then has the choice to change this, or leave it be.
I tried a couple of things, like trying to get a secondary data connection up and running using the query string parameter in the URL (id={id}). It looks like InfoPath and SharePoint automatically set some configuration settings, and that InfoPath is running in a cut-down version; less stuff to configure, no code behind.
Any tips, advice, solutions to my problem :-)?
Thanks in advance,
Patrick

The workflow process does not enter the init activity's codebehind until after the workflow's InfoPath Initiation Form has been submitted. There must be a way to sync the data fields of this form with those of the Association Form, based on the namespaces of the two forms, but I have not yet found exactly how to do that.

Related

Avoid creation of objects through SAP GUI

As a tester, I'd like to know whether it is possible to restrict the manual creation of new objects by the user. The restriction should be done programatically in ABAP, not by removal of permissions.
Background information: we have quite complex objects which are hard to set up manually. Therefore we have implemented a wizard, which does all the condition checking etc. when creating the object. Also, if the wizard shall work, the user must have appropriate permissions to create the object.
Is it possible to remove the object type for that complex object from the list which appears when creating a new object (pressing the New button)?
As I'm only a tester for this part of our software, I can't show any existing code. I just got the feedback "It's not possible" and that's hard to believe for me at the moment. Usability really suffers, because people try to create those objects manually and can't make it work.
I also don't need a working code example, just a hint (class or method or setting) for the developer where to find a solution. I'll then insist that he implements it :-)
Update
Today, the user can click the "New" icon. Then, a dialog appears with 4 choices. 3 choices are for simple objects which he shall create like this. However, the first item in that list is for the complex object, which is impossible to create manually (why we have the wizard). I'd like to know whether it is possible to remove that item from the list programatically.
ᵺṓᵯᶏᵴ, the information you have provided is still a bit vague. However, here is an idea that may work for you.
It might not be possible to completely automate this process, but you could ask your developer to enhance the code that processes the New button, so that it would reject any attempt to bypass the wizard for the first item on the list.
Your developer can tell you if it is feasible in your case, to have the enhancement raise an error (message of type E) to stop the user from proceeding.
This would have to be combined with end-user training to tell people to avoid the New button for that item, and use the wizard instead
ᵺṓᵯᶏᵴ, it looks like a custom dialog so it should be possible to remove it the option, alternatively if it is a standard dialog in a SAP app there is always a way to restrict it, it can be as simple as disallow entry from specific transaction codes. for example the developer could set a variable at the start of the wizard and then check for that variable when creating the object, if it not there he can show a dialog "Please use the Wizard we carefully crafted for your use......" Ok maybe you wont say all of that but you get it.
So the answer to your query is yes it can be done but the approach will depend on what it is your changing custom or standard object etc,.
Later..

Sharepoint 2010 and infopath - access workflow variables?

I have a workflow which runs every time a new list item is added.
The list item comprises of 3 fields:
a question,
a person to answer the question,
an answer.
The first 2 fields are supplied by the user who creates the list item, and the workflow routes the item to the expert who supplies #3, the answer.
On the answer form, I would like the question field to be populated with the question, however I can't drag the question field onto the form without it creating a repeating section, when it should be creating a textbox? It says the type is a group rather than just a string?
I'd also like to know how to get workflow variables into InfoPath forms.
Any ideas on how I'd go about creating a simple q&a collection workflow would be most appreciated.
The tl;dr part is the workflow needs to do this :
ask a question and specify a named user
route to user via workflow
get an answer from user
and that's it.
Your first issue is caused by the fact that your question node is a repeating node in your xml schema (see Data, Show fields, then double click the node and see that the Repeating check box is ticked). I suspect you probably wanted a repeating group with Question and Answer nodes. You would then drag the group onto the form. However it might be easier to simply hard code your schema to a specific number of questions as it'll save a bit of jiggery pokery getting the question text loaded in as you'll see below.
The second part is a little more involved and there are few good explainations on the web on how to do it. I have 2 books and neither are great at explaining this! Firstly you need to create a secondary datasource in the form and link it to an ItemMetadata.xml file which contains
<z:row xmlns:z="#RowsetSchema" ows_Question1="" />
<z:row xmlns:z="#RowsetSchema" ows_Question2="" />
etc. - note no root node exaclty like shown.
Then in your workflow you can set the value that your form will get in this secondary datasource at runtime by using something like:
MyFirstTaskTaskProperties.ExtendedProperties["Question1"] = "The text
of question 1";
In your infopath form you should set the default value of Main datasource question field to the node in the secondary datasource. Then when the thing runs it will work.
I hope you are reasonably familiar with SharePoint workflows as there are quite few other things you need to do to get an infopath form working in a workflow. In my experience it's quite painful getting it all working. Good luck my friend.

how do you develop "create site" workflow in SP 2010

i want to try doing this directly in SP2010 designer first. I have never worked with workflow before and haven't found anything that really helped me out online.
Flow:
I go into a global team site. I fill out a form (predefined form i created with specific controls) and click submit (form is validated for input).
Workflow kicks starts sending an email to a user who is defined to approve this workflow.
Once approval is obtained, the workflow completes and creates a Team Site from the information in the initial Form I filled out.
I am sure this is simple for anyone who has been developing workflows, but again this is my first and my first time using SP2010.
Any help starting this would greatly be appreciated. I haven't really found any good examples online for something like this.
We just completed a project exactly like this. We made a list with all the fields necessary to create a site. We attached a custom Approval workflow created in SharePoint Designer and a Workflow Event Receiver. When the Approval workflow finished, the WorkflowCompleted event checked that the workflow outcome was Approved, retrieved the List Item associated to the Task, and passed that List Item to our builder class.

Building Forms for Outlook 2007

I was just introduced to the concept of Outlook forms. I don't know if this will solve my problem but here is what I want to do:
I want to be able to have employees who are inside the company fill out some forms. So all I have to do is create the form and PUSH it to their Outlook? After they fill out the form, can I capture the data somehow? Has anyone does this before? Can someone recommend a good tutorial/examples?
Update: The Outlook->Access option seems like a great one, but it seems like the form must be emailed by someone. In other words, if someone wants to fill out any form they first have to be emailed a form. What if a person wants to just fill out a form? How would he do it if he has no access to the Access database?
Here are three options:
This page is a really good jump page for custom forms in Outlook. In fact, that whole site is pretty good with lots of examples and links like Outlook Forms Step-by-Step Tutorial.
However, if you also have Access 2007, I'd actually recommend something simpler and easier to create email forms that can be sent to users and collect back all of the information. Once I discovered this in Access 2007 I never went back to custom Outlook forms.
Basically, you create an Access db with the data you want to collect and then in the "External Data" tab in Access 2007, you click "Create E-mail" and a wizard will walk you through creating an email with the form in the body (which is either HTML or InfoPath, depending on which one you choose). You send this to your users (you can have a recipient list in a table as well in your Access DB) and they fill out the form (I used it for surveys) and then they click submit. It goes back to your Outlook in a special folder and as soon as you open Outlook, it will synch it with the database. Then you can slice and dice all of that database information.
Here are some great tutorials on this:
Demo: Collect data in Access 2007 by
using e-mail
How to integrate Microsoft Access
and Outlook 2007
Finally, if you just want to collect back much simpler information, like "Yes", "No", "Maybe", the easiest way is to create voting buttons. Go to New Message -> Options - Voting Buttons. You can customize this if needed by separating your choices with a semi-colon ;.
In #2 and #3 above, these are scenarios to initiate data collection.
There are other situations where someone doesn't need a prompt via email to fill something out right there, but rather just submit a form (like an expense report, or a gas mileage report). #1 above (Outlook custom forms) is generally better choice in that scenario, but:
Outlook forms have typically been
harder to deploy and teach people to
use (there are things like "public
forms", "private forms", etc.)
Outlook forms have been, in practice,
been replaced by other technologies.
In particular, InfoPath/Forms Server and
Sharepoint Forms. This is because neither
of those two technologies requires
users to do a whole lot other than
follow a link to fill out a form. I used to know, about 10 years ago, many companies who tried to use Outlook forms and most of them gave up development of them in favor of other technologies.
This isn't to say that Outlook forms are bad in any way. If you don't have other technologies available to serve as a Forms Server, then this could be a decent option to consider.
To look at other semi-lightweight ways of form submission, you can use MS Word templates as the front end and have them update an Access DB. Here are a couple of good articles on this:
Import Data Directly from Word
Forms to Access Tables
How do I... Transfer data from a
Word form to an Access database?

Rehosting the WF4 designer - how to save and execute workflows created through the rehosted designer

I'm looking for some clarity with regards to the use of Windows Workflow 4 in an integrated solution - specifically with regards to rehosting the designer and executing workflows created by eg. a business user.
Is the intention that the required custom activities are created and compiled into a dll, which is then deployed with the rehosted designer, allowing the business user to create/configure workflows that make use of these activities - the business user would then save the workflow as XAML, which can be stored in a location known to the application (database, filesystem etc.), and then when it is necessary for the application to execute a workflow, it can use XamlServices.Load to load the workflow from the specific location and execute it as a DynamicActivity?
How is the workflow saved so that it can later be reserialized with properties and other configuration values? I've tried deserializing a Xaml file saved out of the designer, and also using XamlServices.save().
Are there any potential issues here with using bookmarks/persistence?
As a related question, is there any easy way to "Go back" in a workflow, without defining return branches on every flowchart element? I'm looking at integrating a workflow with a UI for a user to enter responses, which the wf will process, and make decisions based on the input. Through the UI, the user should be able to "Go Back" to a previous input.
You can use the ActivityXamlServices.Load(path) to load a XAML file. It will return an Activity, actually a DynamicActivity, and you can use a WorkflowApplication to run it.
See my blog post for an exmple.