Arkivat e Kategorisë: SharePoint Workflow

Krijo Sites (SPWeb) nëpërmjet SharePoint Designer Workflow

This blog entry is more of an "in the realm of the possible" Hyrja vs. info konkrete.

We have a technical design that calls for us to create a site in a site collection via a manually launched workflow process. Në parim, 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.

E tëra që na duhet tani është një mjet i thjeshtë për të migruar automatikisht rrjedhat e punës SPD përreth me aq lehtësisht sa mundemi për rrjedhat e punës në studio vizuale dhe me të vërtetë do të gatuajmë me gaz ... Unë e kuptoj që disa njerëz atje janë duke punuar për këtë problem dhe shpresoj që ata të kenë disa suksese të mira së shpejti.

</fund>

Abonohen në blogun tim.

Technorati Tags: ,

Integrimi SharePoint Designer menu me Web Services

Unë kam qenë duke luajtur rreth me veprimet doganore për SharePoint Designer për disa kohë (shikoni këtu for some detailed stuff, në qoftë se ju interesojnë).

Në projektin tim aktual, we need to do some fairly heavy lifting and we want to use declarative SPD workflow to manage the associated business process.

Long histori e shkurtër, 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.

Here’s the signature:

 publik varg Dispatcher(
        Guid WebID, // Passed by the runtime environment
        Guid SiteID, // Passed by the runtime environment
        varg ListID, // Passed by the RTE (don't know why this is a string, not a GUID)
        int ListItemID, // Passed by the RTE.
        varg XmlMessage) // Passed by the user as declared in SPD.

This leverages the fact that we can get at important workflow information, like the site, list ID, etj. 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!

Mjerisht, this is obviously a one-way ticket down to "Loosey Goosey" anti-pattern land, por është më mirë sesa të godasësh një mur me tulla

Is it an anti-pattern if you do it even though you know it’s an anti-pattern?

I hope to wrap this inside Codeplex in the near future. If you’re interested in me doing so, give me poke (Email or leave a comment) dhe unë do të jem aq më entuziast për ta bërë atë

</fund>

Abonohen në blogun tim.

Technorati Tags: ,

SPD Workflow “Të mbledhë të dhëna nga një përdorues”: Modifikojë formën gjeneruar Task

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" veprim në mënyrë që ne mund të shpejtë përdorues për copa të ndryshme të informacionit, të tilla si nëse ata miratojnë atë që, disa komente dhe ndoshta pyesin se çfarë ata kishin për darkë natën tjetër.

The forms are perfectly functional. They are tied to a task list as a content type. They are 100% system-generated. This is their strength and weakness. If we can live with the default form, then we’re good to go. Megjithatë, we don’t have too much control over how SPD creates the form. If we don’t like that default behavior, ne kemi nevojë të përdorë për truket të ndryshme për të marrë rreth tij (për shembull, vendosjen prioritet në një detyrë).

Unë e nevojshme për të siguruar një lidhje në këto forma task që hapën Shiko Pronat (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:

imazh

Fatmirësisht, we can do that and it’s not very hard. Broadly speaking, zjarr deri 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, kërko ose skenarë të tjerë XSL, this will be easy for you. Në të vërtetë, Kam gjetur atë të jetë përgjithësisht e lehtë që gjeneruar forma është disi më e lehtë për të ndjekur, në krahasim me pjesën bërthamë Search Results web (ose CWQP ankthi).

Sigurisht, 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" hap.

Provë 1:

  • Modifikojë file aspx me dorë.
  • Provuar atë (të verifikojë se ndryshimet tuaja janë ruajtur siç duhet dhe nuk e thyejnë asgjë).
  • Hapur deri rrjedhën e punës dhe të shtoni një veprim të palidhur (such as "log to history").
  • Ruaj punës.

Pasojë: Në këtë rast, SPD nuk ri-krijoni forma.

Provë 2:

  • A njëjtë si #1 except directly modify the "collect data from a user" veprim.

Pasojë: Ky ri-krijon formën nga zeroja, mbi-shkrim ndryshimet tuaja.

Shënime përfundimtare:

  • Së paku dy veprime SPD krijojnë forma si kjo: "Collect Data From a User" and "Assign To Do Item". Both of these actions’ Formularët mund të modifikohen me dorë.
  • Unë kam qenë në gjendje të gjenerojnë lidhjen time për shkak dispform.aspx, në këtë rast, the relate item always has its ID embedded in the related item’s URL. I was able to extract it and then build an <a 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, kështu që unë nuk e di nëse merr në anën tjetër të humnerë.
  • Unë nuk e kam hetuar, por unë nuk do të jetë i habitur në qoftë se nuk është një lloj i file template në 12 hive që unë mund të modifikoj të ndikojë se sa SPD gjeneron format e parazgjedhura (ashtu si ne mund të modifikoj templates vigjilent).

</fund>

Abonohen në blogun tim!

Technorati Tags: ,

Zgjidhje (lloj nga): Vendosur përparësi në një Task duke përdorur SharePoint Designer

Unë kam një skenar të biznesit si kjo:

  • Një Ngarkimet më të përdoruesve një dokument në një bibliotekë dokument.
  • Ajo zgjedh një lloj të përmbajtjes dhe hyn në të dhënat meta si të nevojshme. Një nga fushat e të dhënave meta eshte nje flamur, "Urgent".
  • Kjo shkakton një SharePoint Designer punës se, ndër të tjera, uses the "Collect Data from a User" veprim.

"Collect Data from a User" krijon një objekt në një miratim lista detyrë kërkues për atë dokument.

Unë e nevojshme për të krijuar një pamje të listës detyrë që tregoi kërkesa urgjente për miratim.

Zgjidhje: Put the word "URGENT:" into the title of these tasks.

I would have preferred to specify the priority field directly. Megjithatë, Unë kam qenë në gjendje ta bëjnë këtë për disa arsye:

  1. Mbledhin të dhënat veprimi nuk ofron një mekanizëm për të rinovuar çdo fushë tjetër përveç titullit (dhe ato fusha të tjera për të cilën ju doni të mbledhur të dhëna).
  2. The "assign a to do item" veprim ka të njëjtin problem.
  3. Është e mundur për të futur një objekt në një listë (i.e. futur një artikull në listën e detyrave direkt) but this not a blocking action. That means that the workflow will not wait for the user to complete that task.

I konsideruar si një qasje pak më parë (Fatmirësisht) realizing we could just put "urgent" në titullin.

  1. Fillo një punës në listën detyrë vetë në mënyrë që kur një detyrë e re është krijuar, ajo disi kalojnë referenca përsëri në dokumentin që filloi të punës parë, pull out the urgent flag value and update priority as needed.
  2. Do something similar with an event receiver. On create of the task, gjetur dokumentin e shoqëruar dhe përditësimin prioritet sipas nevojës.
  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. (Për disa arsye, Unë kam më shumë ose më pak të vendosur në këtë qasje përpara me mençuri të vendosë për të dalë për një kohë).

Nuk është një pengesë për zgjidhjen time (përveç faktit të qartë se vetëm teksti i titullit tregon urgjencën). Since "collect feedback" pranon vetëm emrat e koduar të vështirë titullin, I need to use two different collect feedback actions whose only difference is that hard coded title.

Por, të paktën ka një zgjidhje që nuk do të kërkojë Përfituesit ngjarje ose veprimet doganore SPD.

Nëse dikush ka zgjidhur këtë në një mënyrë më të zgjuar, please let me know.

</fund>

Quick dhe Easy: Formulari Automatikisht Open InfoPath Nga Email SharePoint Designer

UPDATE: Madjur Ahuja vë në dukje këtë lidhje nga një Diskutimi newsgroup: 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, ata mund të klikoni mbi linkun nga e-mail dhe të shkoni direkt në formën InfoPath.

Kjo URL përbindësh ndërtimit punon për mua:

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

Zëvendëso tekstin bolded kuqe me emrin e formularit, siç tregohet në screenshot e mëposhtme:

imazh

Vini re se nuk është shumë e vështirë-koduar rrugën në atë 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, shikoni burimin e emailit dhe ju do të shihni gjithçka që ju duhet të përfshijë.

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.

</fund>

Technorati Tags:

Moss tregon mua “Refuzohet hyrja” Edit për një detyrë Workflow, Por unë vërtetë nuk kanë qasje

I’ve implemented a workflow using SharePoint Designer in a site which is mainly read-only to "NT_AUTHORITY\Authenticated Users" (i.e. gjithkush). There is a forms library for an InfoPath form. There is an associated workflow tasks list as well so that when the workflow operates, ajo mund të caktojë detyrat për njerëzit.

Unë thyej leje për bibliotekën formave dhe lista detyrë në mënyrë që çdo përdorues mund të krijojnë forma të legalizuar dhe përditësimin detyrat e tyre caktohen.

I test with my low-privileges test account.

Mund të plotësoni një formular dhe për të shpëtuar në bibliotekë? –> YES

Mund të hyj në detyrë nga një lidhje email? –> YES

Mund të shoh një detyrë workflow linkun Edit –> YES

Unë mund të klikoni në këtë link? –> JO … Leja mohuar.

Pse mund të shoh një lidhje redakto që do të më mohojë leje kur unë klikoni mbi të? That’s not how it’s supposed to work…

Unë shkoj nëpër konfigurimit të sigurisë përsëri, very closely. I do it again. Unë e konsideroj fshirjes këtë post sepse unë natyrisht që nuk di asgjë në lidhje me sigurinë.

Më në fund, I search the Internets. I find this highly unlikely MSDN forum thread: http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1838253&SiteID=17

Posterat duket të jetë duke sugjeruar se akti i thjeshtë i eksportimin e punës për një pjatë makinë do të rregullojmë një çështje sigurie Moss? I can hardly believe I just typed that. I’m reminded of the South Park episode about the 9/11 Stan komploti ku është kërkuar Preznit tonë, "Really?" over and over again.

Kështu, asgjë për të humbur, Unë zjarrit deri SPD, right-click mbi workflow dhe ruajeni në c ime:\ 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?"

Incredibly, that solves my problem. I can edit the task.

Unë këtë emërojë që kjo të jetë Workaround Shumica Bizarre Rrjedha e 2007.

</fund>

Technorati Tags:

SharePoint Designer, Item aktual të “URL koduar Absolute” dhe 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. Megjithatë, it always seems to use "http" for the URL protocol. If your site runs on HTTPS then it will not work for you.

imazh

Me aq sa unë e di, there is no out of the box solution to this problem. If you need to use HTTPS, ju keni asnjë nga opsionet kuti.

Për të zgjidhur atë, create a custom action that provides a string replace function to use in your workflow. Alternatively, përdorin një mjet 3 parti të tilla si paketë të shkëlqyer këtu: http://www.codeplex.com/spdwfextensions 🙂

</fund>

Technorati Tags: ,

Email SharePoint Designer Dërgon ???? në një email

Përdoruesit Forum here pas here pyet: Pse nuk SharePoint Designer vënë ???? në email tim në vend të një vlerë në terren?

Një arsye kjo ndodh për shkak se është e ndryshueshme për të cilën ju i referoheni është null.

This can happen because you are trying to reference a field from the "current item" por kurrë përdoruesi ka hyrë një vlerë në atë fushë formë.

<Fundi />

Technorati Tags:

Krahasoj / Test për datat Blank në SharePoint Designer Workflow

Skenar: In a SharePoint Designer workflow, you need to determine if a date field is blank.

Problem: SPD does not provide a direct method for comparing dates to anything other than a date. You cannot create a condition like this: "If [DateField] equals blank".

Zgjidhje: Convert the date to a string. Use string comparison to determine if the date is blank.

Screen Shots:

The following screen shots show how to do this. Në këtë skenar, a field on an item, "Environmental Permits:First Permit Reminder Date", is submitted and the workflow fires in response.

imazh

imazh

Shënimet:

When I tried this, I was pleasantly surprised to learn that it works. I was worried that SharePoint Designer might disallow the string assignment (Variabël:StringReminderDateDate) but it did allow it.

I was also concerned that allowing it, the value might be null and either blow up the WF at runtime or maybe raise the global temperature 1/2 a degree, but those concerns were unfounded.

</fund>

Technorati Tags:

SharePoint Designer Workflow Veprimit Custom — Vëzhgimi Rreth <Tie fushë Designer Type =”StringBuilder” … />

Vetëm një vëzhgimi të shpejtë se ka një dallim shumë i rëndësishëm në mes të këtyre dy përkufizimeve:

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

përballë:

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

Tregon parë si kjo në SPD:

imazh

ndërsa kjo e fundit tregon si kjo:

imazh

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 🙂

Vëzhgimi është kjo: StringBuilder ju lejon për të ndërtuar një varg (qartë) nga përzierja së bashku literals varg dhe të dhënat workflow (via the "Add Lookup" button në këndin e poshtëm të majtë). When you use the Add Lookup button, it inserts a token in the form "[%% token]". When SharePoint invokes your custom action, (C # Kodi në rastin tim), SharePoint kalon shenjë vetë, not the value of the token. If you use the default designer type (Lloji i dytë), SharePoint zgjeron shenjë dhe kalon vlerën aktuale të shenjë për veprimin tuaj.

StringBuilder = KEQ, projektuesi default lloji = mirë.

Sigurisht, 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 (e cila rastësisht është pikërisht ajo që ai bën për të krijuar një subjekt dinamik për veprim email, por kjo është një temë për një tjetër hyrje blog, ka).

<Fundi />