వర్గం ఆర్కైవ్స్: SharePoint వర్క్ఫ్లో

సైట్లు సృష్టించు (SPWeb) SharePoint డిజైనర్ వర్క్ఫ్లో ద్వారా

This blog entry is more of an "in the realm of the possible" ఎంట్రీ vs. కాంక్రీటు సమాచారం.

We have a technical design that calls for us to create a site in a site collection via a manually launched workflow process. ప్రధానంగా, users enter data into a "new customer" custom list and then when they have finished and validated the data entry process, we need to create a site for that customer.

I’m both a big fan of declarative workflow as well as a weak visual studio workflow programmer, so I wanted to meet the requirement using SharePoint Designer.

I plan to write about this in greater detail (and hopefully present to a user group or two in the coming year), but here’s the overall solution:

  • Create a custom action that integrates with SPD.
  • The custom action allows SPD to invoke a web service and pass it a string of XML.
  • Web service locates the row in the custom list and creates a new site as per the data for that new client using a custom site definition.
  • Web service then updates the custom list with some information such as a link to the new site.

We considered other approaches, such as event handlers and visual studio based workflow. The SPD approach gives our end users a little more control over the process. Granted, there’s a lot of C# code in this solution, but it’s wrapped inside a declarative workflow, so we get some of the benefits of declarative workflow while hooking into the site-creation service.

All we need now is an easy tool to automatically migrate SPD workflows around as easily as we can for visual studio workflows and we’ll really be cooking with gas 🙂 I understand that some folk are out there working on this problem and I hope they have some good success with it soon.

</చివర>

నా బ్లాగ్ సబ్స్క్రయిబ్.

Technorati టాగ్లు: ,

వెబ్ సేవలు తో SharePoint డిజైనర్ పనితీరుకు ఇంటిగ్రేట్

నేను కొంత సమయం కోసం SharePoint డిజైనర్ కోసం కస్టమ్ చర్యలు చుట్టూ ప్లే చేసిన (ఇక్కడ చూడండి కొన్ని వివరణాత్మక అంశాలను కోసం, మీరు అభిరుచులు మీరు).

నా ప్రస్తుత ప్రాజెక్ట్, we need to do some fairly heavy lifting and we want to use declarative SPD workflow to manage the associated business process.

లాంగ్ కథ చిన్న, this is entirely possible. I extended my Codeplex project to invoke a "helper service" and now we can invoke a web service directly from an SPD workflow.

ఇక్కడ సంతకం వార్తలు:

 ప్రజా తీగ పంపిణీదారుకు(
        GUID WebID, // Runtime వాతావరణంలో ఆమోదించిన
        GUID SiteID, // Runtime వాతావరణంలో ఆమోదించిన
        తీగ ListID, // RTE ఆమోదించిన (ఈ ఒక స్ట్రింగ్ ఎందుకు తెలియదు, ఒక GUID)
        Int ListItemID, // RTE ఆమోదించిన.
        తీగ XmlMessage) // వంటి SPD లో ప్రకటించారు యూజర్ ఆమోదించిన.

ఈ మేము ముఖ్యమైన వర్క్ఫ్లో సమాచారం పొందవచ్చు వాస్తవం ప్రభావితం, సైట్ వంటి, జాబితా ID, మొదలైనవి. This is well documented in several places for those of you interested in creating your own custom actions. The idea is to extract the XML string as provided by the user to dispatch an appropriate procedure. Fun stuff!

పాపం, ఈ ఖచ్చితంగా ఒక మార్గం టికెట్ డౌన్ "Loosey Goosey" వ్యతిరేక నమూనా భూమి, కానీ అది ఒక ఇటుక గోడ నొక్కిన కంటే ఉత్తమం 🙂

మీకు తెలిసిన అయినప్పటికీ మీరు దీన్ని ఉంటే అది వ్యతిరేక నమూనా వ్యతిరేక నమూనా?

I hope to wrap this inside Codeplex in the near future. If you’re interested in me doing so, నాకు దూర్చు ఇవ్వాలని (ఇమెయిల్ లేదా ఒక వ్యాఖ్యను) మరియు నేను దానిని చేయడం గురించి మరింత ఉత్సాహభరితంగా ఉంటాం 🙂

</చివర>

నా బ్లాగ్ సబ్స్క్రయిబ్.

Technorati టాగ్లు: ,

SPD వర్క్ఫ్లో “ఒక వినియోగదారు నుండి డేటా సేకరించండి”: రూపొందించిన విధి ఫారం సవరించు

I’m working on a project that uses five different SharePoint Designer work flows to handle some document approvals. SPD provides the "collect data from a user" చర్య మేము సమాచారం వివిధ బిట్స్ కోసం వినియోగదారును ప్రాంప్ట్ చేయవచ్చు తద్వారా, అటువంటి వారు ఆమోదిస్తే అనే, కొన్ని వ్యాఖ్యానాలు మరియు ఉండవచ్చు ఇతర రాత్రి విందు కోసం తాము ఏమి అడగాలో.

The forms are perfectly functional. They are tied to a task list as a content type. అవి 100% system-generated. This is their strength and weakness. If we can live with the default form, then we’re good to go. అయితే, we don’t have too much control over how SPD creates the form. If we don’t like that default behavior, మేము అది చుట్టూ పొందుటకు వివిధ వ్యూహాలను ఆశ్రయించాల్సిన అవసరం (ఉదాహరణకు, ఒక పని పై ప్రాధాన్యతా అమరిక).

నా ఉద్దేశ్యం లక్షణాలు అప్ ప్రారంభమైన ఈ పని రకాల ఒక లింక్ను అందించే అవసరం (dispform.asxp) of the "related item" in a new window. This provides one-click access to the meta data of the related item. This is what I mean:

ప్రతిమ

అదృష్టవశాత్తూ, we can do that and it’s not very hard. Broadly speaking, SPD అప్ కాల్పులు, navigate to the directory that houses the workflow files and open the ASPX file you want to modify. These are just classic XSL transform instructions and if you’ve mucked about with itemstyle.xsl, శోధన లేదా ఇతర XSL దృశ్యాలు, this will be easy for you. నిజానికి, ఉత్పత్తి రూపం ఒక శోధన కోర్ ఫలితాలు వెబ్ భాగం పోలిస్తే అనుసరించడానికి కొంత సులభం నుండి నేను సాధారణంగా సులభంగా ఉన్నట్లు (లేక పీడకలలను CWQP).

కోర్సు యొక్క, there is one major pitfall. SPD’s workflow editor expects full control over that file. If you modify it, SPD will happily overwrite your changes give the right set of circumstances. I did two quick tests to see how bad this could get. They both presuppose that you’ve crafted a valid SPD workflow that uses the "collect data from a user" నృత్యములో వేసే అడుగు.

టెస్ట్ 1:

  • చేతితో ASPX ఫైలు సవరించు.
  • అది పరీక్షించండి (మీ మార్పులు సరిగా సేవ్ మరియు ఏదైనా విచ్ఛిన్నం లేదని ధృవీకరించడానికి).
  • వర్క్ఫ్లో తెరిచి సంబంధంలేని చర్య జోడించండి (such as "log to history").
  • వర్క్ఫ్లో సేవ్.

ఫలితంగా: ఈ సందర్భంలో, SPD తిరిగి సృష్టించడానికి రూపం కాదు.

టెస్ట్ 2:

  • అదే డు #1 except directly modify the "collect data from a user" క్రియ.

ఫలితంగా: ఈ మొదటి నుండి రూపం తిరిగి సృష్టిస్తుంది, మీ మార్పులకు రాయడం.

ఫైనల్ గమనికలు:

  • కనీసం రెండు SPD చర్యలు ఈ వంటి రూపాలను సృష్టించేందుకు: "Collect Data From a User" and "Assign To Do Item". Both of these actions’ రకాల మానవీయంగా సవరించబడతాయి.
  • నేను dispform.aspx నా లింక్ ఉత్పత్తి చేయగలిగింది ఎందుకంటే, ఈ సందర్భంలో, the relate item always has its ID embedded in the related item’s URL. I was able to extract it and then build an <ఒక href> based on it to provide the one-click meta data access feature. It’s unlikely that your URL follows this rule. There may be other ways to get the ID of the related item but I have not had to cross that bridge, కాబట్టి నేను అగాధం ఇతర వైపు గెట్స్ తెలియదు.
  • నేను పరిశోధనను కొనసాగించలేదు, లో టెంప్లేట్ ఫైలు యొక్క రకమైన ఉంది కానీ నేను ఆశ్చర్యం కాదు 12 నేను SPD డిఫాల్ట్ రకాల ఉత్పత్తి ఎలా ప్రభావితం సవరించడానికి అని అందులో నివశించే తేనెటీగలు (మేము హెచ్చరికను టెంప్లేట్లు సవరించవచ్చు చాలా వంటి).

</చివర>

నా బ్లాగ్ సబ్స్క్రయిబ్!

పరిష్కారము (విధమైన): SharePoint డిజైనర్ ఉపయోగించి టాస్క్ న ప్రముఖ సెట్

నేను ఈ వంటి ఒక వ్యాపార దృష్టాంతంలో కలిగి:

  • ఒక పత్రం లైబ్రరీ ఒక వినియోగదారు అప్లోడ్లు ఒక పత్రం.
  • ఆమె ఒక కంటెంట్ రకాన్ని ఎంపిక అవసరమైన మెటా డేటా ప్రవేశిస్తుంది. మెటా డేటా ఖాళీలను ఒక జెండా, "Urgent".
  • ఈ ఒక SharePoint డిజైనర్ వర్క్ఫ్లో ఆ ట్రిగ్గర్స్, ఇతర విషయాలు, uses the "Collect Data from a User" క్రియ.

"Collect Data from a User" ఆ పత్రం కోసం ఒక కార్య జాబితాను అభ్యర్థిస్తోంది అనుమతి అంశాన్ని సృష్టిస్తుంది.

నేను అనుమతి కోసం తక్షణ అభ్యర్థనలు చూపించారు కార్య జాబితాను యొక్క కోణాన్ని సృష్టించడానికి అవసరం.

పరిష్కారము: Put the word "URGENT:" into the title of these tasks.

I would have preferred to specify the priority field directly. అయితే, నేను అనేక కారణాల కోసం అలా చేయలేకపోయింది:

  1. సేకరించిన డేటా చర్య టైటిల్ కంటే ఇతర ఏదైనా రంగంలో అప్డేట్ పద్దతిని అందించటానికి లేదు (మరియు ఆ అదనపు ఖాళీలను మీరు సమాచారాన్ని సేకరించేందుకు కోరుకుంటున్న కోసం).
  2. The "assign a to do item" చర్య అదే సమస్య ఉంది.
  3. ఇది ఒక జాబితాలో ఒక అంశం ఇన్సర్ట్ చెయ్యడానికి అవకాశం (ఉదా. నేరుగా పని జాబితాలో ఒక అంశం ఇన్సర్ట్) but this not a blocking action. That means that the workflow will not wait for the user to complete that task.

ముందు కొన్ని విధానాలు భావిస్తారు (అదృష్టవశాత్తూ) realizing we could just put "urgent" టైటిల్ లో.

  1. ఒక కొత్త పని సృష్టించబడుతుంది అందువలన కార్య జాబితాను కూడా ఒక వర్క్ఫ్లో ప్రారంభించండి, ఏదో ఒకవిధంగా అది మొదటి వర్క్ఫ్లో ప్రారంభించారు పత్రం సూచనలు తిరిగి క్రాస్, pull out the urgent flag value and update priority as needed.
  2. Do something similar with an event receiver. On create of the task, సంబంధిత పత్రాన్ని గుర్తించడం మరియు అవసరమైనపుడు ప్రాధాన్యత అప్డేట్.
  3. Use the "create list item" action in conjunction with the "wait for field change" action and an event receiver. If we create a list item, we can specify all the fields we want. Use an event receiver to update the original item when the user completes the task and the "wait for field change" action’s condition would be met and the workflow would proceed. (కొన్ని కారణాల కోసం, ఋష్యశృంగుని కాసేపు వైదొలగాలనుకోవాలని నిర్ణయించే ముందు నేను ఎక్కువ లేదా తక్కువ ఈ విధానాన్ని స్థిరపడిన).

నా పరిష్కారం ఒక లోపం ఉంది (ప్రక్కన టైటిల్ మాత్రమే టెక్స్ట్ ఆవశ్యకత సూచిస్తుంది స్పష్టమైన వాస్తవం నుండి). Since "collect feedback" దానికి కోడ్ టైటిల్ పేర్లు అంగీకరిస్తుంది, I need to use two different collect feedback actions whose only difference is that hard coded title.

కాని, కనీసం ఈవెంట్ రిసీవర్లు లేదా కస్టమ్ SPD చర్యలు అవసరం లేదు ఒక పరిష్కారం ఉంది.

ఎవరైనా మరింత తెలివైన విధంగా ఈ పరిష్కరించుకుంది ఉంటే, నాకు తెలపండి.

</చివర>

త్వరిత మరియు సులువు: SharePoint డిజైనర్ ఇమెయిల్ వరకు స్వయంచాలకంగా ఓపెన్ InfoPath ఫారం

UPDATE: Madjur అహుజా ఒక నుండి ఈ లింక్ ఎత్తి చూపాడు న్యూస్ చర్చ: http://msdn2.microsoft.com/en-us/library/ms772417.aspx. It’s pretty definitive.

===

We often want to embed hyperlinks to InfoPath forms in emails sent from SharePoint Designer workflows. When users receive these emails, వారు ఇమెయిల్ లింకుపై క్లిక్ చేయండి మరియు InfoPath రూపం నేరుగా వెళ్ళవచ్చు.

ఈ రాక్షసుడు URL నిర్మాణం నాకు పనిచేస్తుంది:

http://server/sites/departments/Technical Services/InformationTechnology/HelpDesk/_layouts/FormServer.aspx?XmlLocation=/sites/departments/Technical Services/InformationTechnology/HelpDesk/REC REM RED Forms/REC2007-12-18T11_33_48.xml&Source=http://server.corp.domain.com/sites/departments/Technical%20Services/InformationTechnology/HelpDesk/REC%20REM%20RED%20Forms/Forms/AllItems.aspx&DefaultItemOpen = 1

Replace the bolded red text with the name of the form, as shown in the following screenshot:

ప్రతిమ

Note that there is a lot of hard-coded path in that URL, as well as a URL-encoded component. If this is too hard to translate to your specific situation, try turning on alerts for the form library. Post a form and when you get the email, view the source of the email and you’ll see everything you need to include.

Astute readers may notice that the above email body also shows a link that directly accesses the task via a filtered view. I plan to explain that in greater detail in a future post.

</చివర>

Technorati టాగ్లు:

MOSS చెప్పరు “యాక్సెస్ తిరస్కరించబడింది” ఒక పనిలో టాస్క్ సవరించడానికి, కానీ నేను నిజంగా ప్రాప్యత ఉందా

I’ve implemented a workflow using SharePoint Designer in a site which is mainly read-only to "NT_AUTHORITY\Authenticated Users" (ఉదా. ప్రతి ఒక్క). There is a forms library for an InfoPath form. There is an associated workflow tasks list as well so that when the workflow operates, ఇది ప్రజలకు పనులు కేటాయించవచ్చు.

నేను ఏ అధికారం యూజర్ రూపాలను సృష్టించడానికి మరియు వారి కేటాయించిన పనులు అప్డేట్ విధంగా రూపాలు లైబ్రరీ మరియు కార్య జాబితాను అనుమతి విచ్ఛిన్నం.

I test with my low-privileges test account.

నేను పూర్తి మరియు లైబ్రరీ ఒక రూపం సేవ్ చేయవచ్చు? –> అవును

నేను ఒక ఇమెయిల్ లింక్ నుండి పని యాక్సెస్ చేయవచ్చు? –> అవును

నేను ఒక సంకలనం వర్క్ఫ్లో పని లింక్ చూడగలరు –> అవును

నేను ఆ లింక్ క్లిక్ చెయ్యండి? –> NO … అనుమతి తిరస్కరించబడింది.

నేను క్లిక్ చేసినప్పుడు ఎందుకు నేను అనుమతి తిరస్కరించింది ఒక మార్చు లింక్ చూడగలరు? That’s not how it’s supposed to work…

నేను మళ్ళీ భద్రతా ఆకృతీకరణ ద్వారా వెళ్ళి, very closely. I do it again. నేను ఈ పోస్ట్ను తొలగించడంలో పరిగణలోకి నేను ఖచ్చితంగా భద్రతా గురించి ఏదైనా తెలియదు ఎందుకంటే.

చివరకు, I search the Internets. I find this highly unlikely MSDN forum thread: http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1838253&SiteID=17

పోస్టర్లు డ్రైవ్ పళ్ళెం కు వర్క్ఫ్లో ఎగుమతి సాధారణ చట్టం ఒక MOSS భద్రతా సమస్యను పరిష్కరించడానికి అని సూచిస్తూ కన్పించవచ్చు? I can hardly believe I just typed that. I’m reminded of the South Park episode about the 9/11 స్టాన్ మా Preznit అడుగుతూ ఉన్న కుట్ర, "Really?" over and over again.

ఈ విధంగా, కోల్పోవడం ఏమీ, నేను అగ్ని అప్ SPD, వర్క్ఫ్లో కుడి క్లిక్ చేసి నా సి దానిని సేవ్:\ drive. That would be the c:\ drive on my laptop. I’m looking over my shoulder the whole time so that no one will ask me, "why are you saving that workflow to your laptop?"

నమ్మశక్యం, that solves my problem. I can edit the task.

నేను దీన్ని ఇందుమూలముగా చాలా అసహ్యమైన వర్క్ఫ్లో తాత్కాలిక పరిష్కారాలు అని ఈ నామినేట్ 2007.

</చివర>

Technorati టాగ్లు:

SharePoint డిజైనర్, ప్రస్తుత అంశం యొక్క “ఎన్కోడ్ సంపూర్ణ URL” మరియు HTTPS

We often want to send an email that includes a hyperlink to the item or document that triggered the workflow. We can use current item’s "Encoded Absolute URL" for this purpose. అయితే, it always seems to use "http" for the URL protocol. If your site runs on HTTPS then it will not work for you.

ప్రతిమ

చాలా నేను తెలిసిన, there is no out of the box solution to this problem. If you need to use HTTPS, మీరు బాక్స్ ఎంపికను సంఖ్య తెలుసుకో.

దీనిని పరిష్కరించడంలో, create a custom action that provides a string replace function to use in your workflow. Alternatively, ఇక్కడ అటువంటి అద్భుతమైన ప్యాకేజీ ఒక 3 వ పార్టీ ఉపకరణాన్ని ఉపయోగించడానికి: http://www.codeplex.com/spdwfextensions 🙂

</చివర>

SharePoint డిజైనర్ ఇమెయిల్ పంపుతుంది ???? ఒక ఇమెయిల్ లో

ఫోరం వినియోగదారులు అప్పుడప్పుడు అడగండి: ఎందుకు SharePoint డిజైనర్ చాలు లేదు ???? బదులుగా ఒక రంగంలో విలువ నా ఇమెయిల్ లోకి?

ఇది మీరు చూడండి కు వేరియబుల్ శూన్య ఎందుకంటే ఇది జరిగినప్పుడు ఒక కారణం.

This can happen because you are trying to reference a field from the "current item" కానీ వినియోగదారు రూపం రంగంలో ఒక విలువ ఎంటర్ ఎప్పుడూ.

<ముగింపు />

Technorati టాగ్లు:

సరిపోల్చండి / SharePoint డిజైనర్ వర్క్ఫ్లో లో ఖాళీ తేదీలు పరీక్ష

దృశ్య: ఒక SharePoint డిజైనర్ వర్క్ఫ్లో లో, you need to determine if a date field is blank.

సమస్య: SPD does not provide a direct method for comparing dates to anything other than a date. You cannot create a condition like this: "If [తేదీ ఫీల్డ్] equals blank".

పరిష్కారము: Convert the date to a string. Use string comparison to determine if the date is blank.

స్క్రీన్ షాట్స్:

The following screen shots show how to do this. ఈ సందర్భంలో, ఒక అంశంపై ఒక రంగంలో, "Environmental Permits:First Permit Reminder Date", సమర్పించిన మరియు ప్రతిస్పందనగా వర్క్ఫ్లో మంటలు ఉంది.

ప్రతిమ

ప్రతిమ

గమనికలు:

నేను ఈ ప్రయత్నించినప్పుడు, I was pleasantly surprised to learn that it works. I was worried that SharePoint Designer might disallow the string assignment (అస్థిరమైన:StringReminderDateDate) కానీ అది అనుమతించారు.

నేను కూడా ఇది అనుమతిస్తుంది ఆందోళన ఉంది, విలువ శూన్య మరియు గాని పని WF పేల్చివేయడానికి లేదా ఉండవచ్చు ప్రపంచ ఉష్ణోగ్రతను పెంచడానికి ఉండవచ్చు 1/2 ఒక డిగ్రీ, కానీ ఆ ఆందోళనలు అబద్ధమైన ఉన్నాయి.

</చివర>

Technorati టాగ్లు:

SharePoint డిజైనర్ వర్క్ఫ్లో కస్టమ్ యాక్షన్ — గురించి పరిశీలన <ఫీల్డ్ టై డిజైనర్ పద్ధతి =”StringBuilder” … />

ఈ రెండు నిర్వచనాలు మధ్య చాలా ముఖ్యమైన తేడా ఉందని కేవలం శీఘ్ర పరిశీలన:

<FieldBind Field="InParam1" DesignerType="StringBuilder" Id="2" Text="Input parameter #1"/>

వర్సెస్:

<FieldBind Field="InParam1" Id="2" Text="Input parameter #1"/>

SPD ఈ వంటి మొదటి ప్రదర్శనలు:

ప్రతిమ

రెండో దీన్ని ఇష్టపడుతున్నారు చూపిస్తుంది:

ప్రతిమ

I’m not sure how helpful these screen shots are but I put in the effort to make them so you have to view them 🙂

పరిశీలన ఈ ఉంది: StringBuilder మీరు ఒక స్ట్రింగ్ ను నిర్మించటానికి మీకు అనుమతిస్తుంది (స్పష్టంగా) స్ట్రింగ్ literals మరియు వర్క్ఫ్లో డేటా కలిసి కలపడం ద్వారా (via the "Add Lookup" తక్కువ ఎడమ చేతి మూలలో బటన్). When you use the Add Lookup button, it inserts a token in the form "[%టోకెన్%]". When SharePoint invokes your custom action, (నా విషయంలో సి # కోడ్), SharePoint టోకెన్ కూడా వెళుతుంది, not the value of the token. If you use the default designer type (రెండవ రకం), SharePoint టోకెన్ విస్తరిస్తుంది మరియు మీ చర్య టోకెన్ యొక్క వాస్తవ విలువ వెళుతుంది.

StringBuilder = BAD, డిఫాల్ట్ డిజైనర్ రకం = GOOD.

కోర్సు యొక్క, that’s not what I really mean. Just don’t try and pass a parameter to your custom action when the designer type = StringBuilder. Use the default designer type and chain a StringBuilder to it up front if you need to build complex strings in your workflow (ఇది యాదృచ్ఛికంగా ఒక ఇమెయిల్ చర్య కోసం ఒక డైనమిక్ విషయం సృష్టించడానికి చేస్తుంది ఖచ్చితంగా ఏమిటి, కానీ మరొక బ్లాగ్ ఎంట్రీ కోసం ఒక విషయం యొక్క, ఉంది).

<ముగింపు />