კატეგორია არქივი: SharePoint სიმბოლო

შევიმუშავებთ (SPWeb) მეშვეობით SharePoint Designer სიმბოლო

ამ დღიურში ჩანაწერის უფრო "ამ სფეროში შესაძლო" შესვლის vs. კონკრეტული ინფორმაცია.

We have a technical design that calls for us to create a site in a site collection via a manually launched workflow process. ძირითადად, წევრებს მონაცემთა შეტანა "ახალი მომხმარებელი" 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.

ყველაფერი რაც ჩვენ გვჭირდება ახლა არის მარტივი ინსტრუმენტი SPD-ის სამუშაო ნაკადების ავტომატურად მიგრაციისთვის, რაც შეიძლება მარტივად ვიზუალური სტუდიის სამუშაო პროცესებისთვის და ჩვენ ნამდვილად ვამზადებთ გაზით 🙂 მე მესმის, რომ ზოგიერთი ადამიანი მუშაობს ამ პრობლემაზე და იმედი მაქვს, რომ მათ აქვთ რამდენიმე კარგი წარმატება მას მალე.

</ბოლო>

გამოწერა ჩემი დღიური.

პროგრამები Tags: ,

ინტეგრაცია SharePoint Designer Workflows ვებ სერვისი

მე სათამაშო გარშემო ერთად საბაჟო მოქმედებები SharePoint Designer გარკვეული დროის (აქ ზოგიერთი დეტალური პერსონალი, თუ, რომ ინტერესების თქვენ).

ჩემი მიმდინარე პროექტის, 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.

აი ხელმოწერის:

 საჯარო სიმებიანი Dispatcher(
        ინტრუქცია WebID, // გაიარა runtime გარემოს
        ინტრუქცია SiteID, // გაიარა runtime გარემოს
        სიმებიანი ListID, // გაიარა RTE (არ ვიცი რატომ ეს სიმებიანი, არ guid)
        int ListItemID, // გაიარა RTE.
        სიმებიანი XmlMessage) // გაიარა შესახებ, როგორც დეკლარირებული SPD.

ეს ბერკეტი იმისა, რომ ჩვენ შეგვიძლია მივიღოთ ერთი მნიშვნელოვანი workflow ინფორმაცია, ისევე როგორც საიტი, სიაში 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" ანტი ნიმუში მიწის, but it’s better than hitting a brick wall 🙂

არის თუ არა ანტი ნიმუში თუ ეს მიუხედავად იმისა, რომ თქვენ იცით, ანტი ნიმუში?

I hope to wrap this inside Codeplex in the near future. If you’re interested in me doing so, მომეცი poke (ელ ან დატოვონ კომენტარი) and I’ll be that more enthusiastic about doing it 🙂

</ბოლო>

გამოწერა ჩემი დღიური.

პროგრამები Tags: ,

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, სროლა up 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 ფაილი ხელით.
  • გამოცადეთ იგი (გადაამოწმონ, რომ თქვენი ცვლილებები სათანადოდ შენახული და არ დაარღვიოს არაფერი).
  • გახსენით სამუშაო და დამატება unrelated აქცია (such as "log to history").
  • Save workflow.

შედეგი: ამ შემთხვევაში, 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 <კონფერენცია> 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, ასე რომ მე არ ვიცი, თუ მივა მეორე მხარეს უფსკრული.
  • მე არ გამოიძიებს, მაგრამ მე არ გაგიკვირდებათ, თუ არსებობს გარკვეული შაბლონის in 12 hive, რომ მე ვერ ცვლილებები, რათა გავლენა იქონიოს SPD წარმოშობს სტანდარტულ ფორმები (ჰგავს შეგვიძლია ცვლილებები მზადყოფნაში თარგები).

</ბოლო>

გამოწერა ჩემი დღიური!

პროგრამები Tags: ,

Solution (სახის): უცნობია პრიორიტეტი, რომელიც სამუშაო გამოყენება SharePoint Designer

მე მაქვს ბიზნეს სცენარი მსგავსი:

  • მომხმარებლის ატვირთვები დოკუმენტი დოკუმენტის ბიბლიოთეკა.
  • იგი ირჩევს ინფორმაციის ტიპი და შედის მეტა მონაცემები საჭირო. ერთი მეტა მონაცემები სფეროებში დროშა, "სასწრაფო".
  • ეს იწვევს SharePoint Designer workflow, რომ, სხვა საკითხებთან, იყენებს "კოლექციონირება მონაცემთა მომხმარებელი" აქცია.

"Collect Data from a User" ქმნის ნივთის დრო სია თხოვნის თანხმობა, რომ დოკუმენტი.

მე დასჭირდა ხედი დრო სია აჩვენა, გადაუდებელი მოთხოვნების დასამტკიცებლად.

Solution: 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. შესაძლებელია ჩაწეროთ პუნქტის შევიდა სია (i.e. ჩადეთ პუნქტის შევიდა დრო სია პირდაპირ) 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. დაწყება workflow on დრო სია თავად ისე, რომ როდესაც ახალი დავალება იქმნება, ეს როგორღაც გადაკვეთა ცნობას უკან დოკუმენტი, რომელიც დაიწყო პირველი workflow, 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 ქმედებები.

თუ ვინმე მოგვარდება ეს უფრო ჭკვიანი გზა, გთხოვთ ნება მომეცით ვიცი.

</ბოლო>

პროგრამები Tags: ,

სწრაფი და მარტივი: ავტომატურად ღია InfoPath ფორმით SharePoint Designer Email

განახლების: Madjur Ahuja points out this link from a newsgroup discussion: 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 ფორმა.

This monster URL construction works for me:

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.

</ბოლო>

პროგრამები Tags:

Moss მეუბნება “წვდომა აკრძალულია” რედაქტორობდა სიმბოლო სამუშაო, მაგრამ მე ნამდვილად ჰქონდეს

მე განახორციელა workflow გამოყენებით SharePoint Designer რომელიც საიტი რომელიც ძირითადად წაკითხული, მხოლოდ "NT_AUTHORITY დამოწმებული მომხმარებელი" (i.e. ყველას). 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 break permission for the forms library and task list so that any authenticated user can create forms and update their assigned tasks.

I test with my low-privileges test account.

Can I fill out and save a form to the library? –> YES

Can I access the task from an email link? –> YES

Can I see an Edit workflow task link –> YES

Can I click on that link? –> NO … Permission Denied.

Why can I see an edit link that denies me permission when I click on it? That’s not how it’s supposed to work…

I go through the security configuration again, very closely. I do it again. I consider deleting this post because I obviously don’t know anything about security.

და ბოლოს, I search the Internets. I find this highly unlikely MSDN forum thread: http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1838253&SiteID=17

The posters appear to be suggesting that the simple act of exporting the workflow to a drive platter will fix a MOSS security issue? I can hardly believe I just typed that. I’m reminded of the South Park episode about the 9/11 conspiracy where Stan is asking our Preznit, "Really?" over and over again.

ასე რომ,, nothing to lose, I fire up SPD, right-click on the workflow and save it to my c:\ 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.

I hereby nominate this to be the Most Bizarre Workflow Workaround of 2007.

</ბოლო>

პროგრამები Tags:

SharePoint Designer, აქტუალური Item ს “კოდირებით აბსოლუტური 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. თუმცა, ის ყოველთვის ჩანს გამოიყენოს "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, you have no out of the box option.

To solve it, create a custom action that provides a string replace function to use in your workflow. Alternatively, use a 3rd party tool such as the excellent package here: http://www.codeplex.com/spdwfextensions 🙂

</ბოლო>

პროგრამები Tags: ,

SharePoint Designer ელ აგზავნის ???? ამ Email

ფორუმის წევრებს ზოგჯერ ვთხოვ: რატომ SharePoint Designer დააყენა ???? ჩემს ელ ნაცვლად სფეროში ღირებულება?

ერთი მიზეზი ეს არის, რადგან ცვლადი, რომელიც თქვენ ეხება არის null.

ეს შეიძლება მოხდეს, რადგან თქვენ ცდილობთ მითითებას იმ სფეროში, რომელიც "მიმდინარე ელემენტის" მაგრამ შესახებ არ შესულა მნიშვნელობა შევიდა, რომ ფორმა სფეროში.

<ბოლოს />

პროგრამები Tags:

შეადარეთ / ტესტი Blank თარიღის SharePoint Designer სიმბოლო

სცენარი: ამ SharePoint Designer workflow, 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: "თუ [DateField] ტოლია ცარიელი ".

Solution: 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", წარედგინება და workflow ხანძარი საპასუხოდ.

იმიჯი

იმიჯი

შენიშვნები:

როდესაც მე შევეცადე ამ, I was pleasantly surprised to learn that it works. I was worried that SharePoint Designer might disallow the string assignment (Variable:StringReminderDateDate) მაგრამ ეს საშუალებას იძლევა.

მე ასევე შეშფოთებულია, რომ საშუალებას აძლევს მას, ღირებულება შეიძლება იყოს ბათილად და არც აფეთქების WF at runtime ან იქნებ დააყენებს გლობალური ტემპერატურის 1/2 ხარისხი, მაგრამ ეს შეშფოთება იყო უსაფუძვლო.

</ბოლო>

პროგრამები Tags:

SharePoint Designer სიმბოლო Custom მოქმედება — სადამკვირვებლო შესახებ <საველე ჰალსტუხს დიზაინერი ტიპი =”StringBuilder” … />

უბრალოდ სწრაფი დაკვირვების რომ არის ძალიან მნიშვნელოვანი განსხვავება ამ ორ განმარტებები:

<FieldBind საველე = "InParam1" დიზაინერი ტიპი = "სიმებიანი აღმაშენებელი" Id = "2" ტექსტი = "შეყვანის პარამეტრი # 1" />

წინააღმდეგ:

<FieldBind საველე = "InParam1" Id = "2" ტექსტი = "შეყვანის პარამეტრი # 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 და სამუშაო პროცესის მონაცემები (მეშვეობით "დამატება Lookup" ღილაკს ქვედა მარცხენა კუთხეში). როდესაც თქვენ იყენებთ Add Lookup ღილაკს, ეს ჩანართები ნიშნად სახით "[%ნიშნად%]". როდესაც SharePoint აღვიძებს თქვენი საბაჟო აქცია, (C # კოდი ჩემს შემთხვევაში), SharePoint გადის ნიშნად თავად, არ ღირებულება ნიშნად. თუ თქვენ იყენებთ ძირითადად დიზაინერი ტიპი (მეორე ტიპის), SharePoint აფართოებს ნიშნად და გადის ფაქტობრივი ღირებულება ნიშნად თქვენს აქცია.

StringBuilder = BAD, სტანდარტულ დიზაინერი ივერიის GOOD.

რა თქმა უნდა, ეს არ არის ის, რაც მე ნამდვილად ნიშნავს. უბრალოდ არ ცდილობენ და გაივლის პარამეტრი თქვენი საბაჟო ქმედება, როდესაც დიზაინერი type = StringBuilder. გამოიყენეთ ძირითადად დიზაინერი ტიპის და ჯაჭვის StringBuilder მას up წინ თუ თქვენ უნდა ავაშენოთ კომპლექსი strings თქვენი workflow (რაც სხვათა შორის, სწორედ ის ერთი ჯერ, რომ შევქმნათ დინამიური საგანი ელ აქცია, მაგრამ ეს საგანი კიდევ წაკითხვა შესვლის, აქვს).

<ბოლოს />

პროგრამები Tags: , ,