ყოველთვიური არქივი: ნოემბერი 2007

თქვენ ვერ სცემეს SharePoint-ის დაფარვა

ბოლო ორი დღის განმავლობაში, I have participated in two meetings during which we presented the results of a SharePoint project. The CIO and his team joined the first meeting. That’s standard and not especially notable. The IT department is obviously involved in an enterprise rollout of any technology project. The second meeting expanded to include a V.P. საწყისი მარკეტინგი, რამდენიმე დირექტორები წარმოადგენს HR, ლოგისტიკის, წარმოება, Capital პროექტები, ხარისხის, შესყიდვები, კორპორატიული განვითარებისა და სხვა უწყებებს (ზოგიერთი მათგანი კი არ ჩართული მიმდინარე ეტაპი). That’s a mighty wide audience.

ჩემი ადრე ცხოვრების, I primarily worked on ERP and CRM projects. They both have a fairly wide solution domain but not as wide as SharePoint. To be fully realized, SharePoint projects legitimately and necessarily reach into every nook and cranny of an organization. How many other enterprise solutions have that kind of reach? Not many.

SharePoint clearly represents an enormous opportunity for those of us fortunate enough to be in this space. It provides a great technical opportunity (რომელიც რატომღაც აღმოჩნდა მისი ხელმძღვანელი აქ under "Technologies You Must Master"). But even better, SharePoint exposes us to an extensive and wide range of business processes through these engagements. How many CRM specialists work with the manufacturing side of the company? How many ERP consultants work with human resources on talent acquisition? SharePoint exceeds them both.

მომწონს არაფერი, ეს არ არის სრულყოფილი, მაგრამ damned კარგი ადგილი უნდა იყოს.

იყიდება სიყვარული [შეავსოთ თქვენი საუკეთესო გვიყვარს ადამიანი / უმაღლესი მყოფი], don’t change the ‘Title’ საიტი სვეტი.

On SharePoint ფორუმებში, someone occasionally asks about "changing the label of Title" or about "removing title from lists".

ქვედა ხაზი: არ გავაკეთებთ!

სამწუხაროდ, ინტერფეისი საშუალებას იძლევა ერთი გზა შეცვლას, რომ სვეტის იარლიყი როგორც ნაჩვენებია:

იმიჯი

Title is a column associated with the "Item" ინფორმაციის ტიპი. ბევრი, ბევრი, ბევრი CT გამოვიყენოთ ეს სვეტი და თუ შეცვლის აქ, it ripples out everywhere. There’s a good chance that you didn’t intend for that to happen. You were probably thinking to yourself, "I have a custom lookup list and ‘Title’ უბრალოდ არ აქვს აზრი, როგორც სვეტი სახელი, so I’m going to change it to ‘Status Code’ and add a description column." But if you follow through on that thought and rename ‘Title’ to ‘Status Code’, ყველა სიაში ტიტულის (მათ შორის დოკუმენტი ბიბლიოთეკების) changes to "Status Code" და ალბათ არ აპირებს რომ რომ მოხდეს.

უბრალოდ, ეს არის ერთი გზა ცვლილება. The UI "knows" that "title" is a reserved word. ასე რომ,, if you try and change "Status Code" back to "Title", ეს ხელს შეუშლის თქვენ და ახლა თქვენ მოხატული თავს შევიდა კუთხეში გამოყენებით საღებავი, რომ არასოდეს dries 🙂

ასე რომ, რა მოხდება, თუ თქვენ უკვე შეიცვალა? I haven’t seen the answer we all want, which is a simple and easy method to change the label back to ‘Title’. Right now, the best advice is to change it to something like "Doc/Item Title". That’s a generic enough label that may not be too jarring for your users.

მე მაქვს რამდენიმე სხვა იდეები, რომლებიც ჩემს დავალებები რამ კვლევის:

  • საკონტაქტო Microsoft.
  • ნუ რაღაც ერთად ობიექტი მოდელი, იქნებ ერთად ფუნქცია.
  • გაერკვნენ მონაცემთა ბაზის schema და ხელით განახლება SQL. (თქვენ უნდა Microsoft ადრე აკეთებენ თუმცა; დიდი შანსია, რომ ცნოს თქვენი მხარდაჭერა ხელშეკრულების).

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

განახლების ნაშუადღევს, 11/15: აღმოვაჩინე ეს კავშირი, რომელიც ასახავს მეთოდს შესაქმნელად ტიპის სიაში რომ არ გააჩნია სათაური სვეტი: http://www.venkat.org/index.php/2007/09/03/how-to-remove-title-column-from-a-custom-list/

BDC ADF და თქვენი მეგობარი, CDATA

მე შენიშნა რაღაც უხერხულ და არასაჭირო ხელით კოდირებით გამოჩნდება RdbCommandText ზოგიერთ მაგალითები (მათ შორის MSDN დოკუმენტაცია).

I wanted to point out to newcomers to BDC that commands can be wrapped inside a CDATA tag in their "natural" form. ასე რომ,, ამ უხერხულ მშენებლობა:

<ქონების სახელი="RdbCommandText" გაცნობის="System.String">
SELECT dbo.MCRS_SETTLEMENT.id, dbo.MCRS_SETTLEMENT.settlement from dbo.MCRS_SETTLEMENT
WHERE (id &gt;= @MinId) და (id &ლ;= @ MaxId)
</ქონების>

can be better represented this way:

<ქონების სახელი="RdbCommandText" გაცნობის="System.String">
<![CDATA[
SELECT dbo.MCRS_SETTLEMENT.id, dbo.MCRS_SETTLEMENT.settlement from dbo.MCRS_SETTLEMENT
WHERE (id >= @MinId) და (id <= @MaxId)
]]>
</ქონების>

</ბოლო>

BDC Primer

Intro to BDC

ფუნქციური მაგალითი: BDC ADF რომ უკავშირდება SQL ბაზას, ჩართული მომხმარებლის ID და პაროლი

I needed to wire up MOSS to a SQL database via BDC. For testing/POC purposes, I wanted to embed the SQL account user id and password in the ADF. Starting with ეს თარგი (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), მე შეიქმნა ADF რომ აკავშირებს კონკრეტულ SQL სერვერზე მაგალითად და ჟურნალები in with კონკრეტული მომხმარებლის ID და პაროლი და უჩვენა ამ snippet:

  <LobSystemInstances>
    <LobSystemInstance სახელი="ClaimsInstance">
      <უძრავი ქონება>
        <ქონების სახელი="AuthenticationMode" გაცნობის="System.String"></ქონების>
        <ქონების სახელი="DatabaseAccessProvider" გაცნობის="System.String">SqlServer</ქონების>
        <ქონების სახელი="RdbConnection მონაცემთა წყარო" გაცნობის="System.String">ფაქტობრივი სერვერზე  ფაქტობრივი მაგალითად</ქონების>
        <ქონების სახელი="RdbConnection პირველადი კატალოგი" გაცნობის="System.String">ფაქტობრივი საწყის კატალოგი</ქონების>
        <ქონების სახელი="RdbConnection ინტეგრირებული უსაფრთხოების" გაცნობის="System.String">SSPI</ქონების>
        <ქონების სახელი="RdbConnection გაზიარება" გაცნობის="System.String">ყალბი</ქონების>

        <!-- ეს არის ძირითად ღირებულებებზე: -->
        <ქონების სახელი="RdbConnection მომხმარებლის ID" გაცნობის="System.String">actual მომხმარებლის ID</ქონების>
        <ქონების სახელი="RdbConnection პაროლი" გაცნობის="System.String">ფაქტობრივი პაროლი</ქონების>
        <ქონების სახელი="RdbConnection Trusted_Connection" გაცნობის="System.String">ყალბი</ქონების>

      </უძრავი ქონება>
    </LobSystemInstance>
  </LobSystemInstances>

ეს არ არის საუკეთესო პრაქტიკა, but it’s useful for a quick and simple configuration for testing. This was surprisingly difficult to figure out. I never found a functional example with search keywords:

  • adf ჩაშენებულ userid და პაროლი
  • იგივე მომხმარებლის ID და პაროლი adf
  • იგივე მომხმარებლის ID და პაროლი adf BDC
  • SharePoint BDC პრემიერის
  • SharePoint embed მომხმარებლის ID და პაროლი adf

</ბოლო>

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

SPD საბაჟო workflow ქმედებები — სიმებიანი მანიპულირება დამატებები

დაახლოებით ერთი კვირის წინ, I started up a codeplex project that provides a simple and reasonably generic method for adding custom action functions to SharePoit Designer workflow. It’s described here: http://www.codeplex.com/spdwfextensions. Beyond simply providing a framework, it also aims to provide a set of useful functions that will make SPD more useful/flexible/powerful.

აქ არის მიმდინარე დაგეგმილი თვისებები მობილური 1.0: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

თუ ვინმეს აქვს რაიმე ინტერესი ამ პროექტში, გთხოვთ დატოვოთ კომენტარი ან დაიწყება / დამატება განხილვას აქ: http://www.codeplex.com/spdwfextensions/Thread/List.aspx

აქ არის მიმდინარე ფუნქციათა რიგი, რომლებიც კოდირებულია (თუმცა არა სრულად ტესტირება, როგორც 11/08/07):

ფუნქცია აღწერა (თუ არ იგივე როგორც. წმინდა ფუნქცია)
რაოდენობის მასალა() Returns the number "entries" in a string as per a specified delimiter.

მაგალითად: Num-entries in a string "a,ბ,გ" with delimiter "," = 3.

შემოსვლასთან() Returns the nth token in a string as per a specified delimiter.
სიგრძე String.Length
ჩანაცვლება() String.Replace()
შეიცავს() String.Contains()
Returns the word "true" or the word "false".
Substring(დაიწყოს) String.Substring(დაიწყოს)
Substring(დაიწყოს,ბოლო) String.Substring(დაიწყოს,ბოლო)
ToUpper() String.ToUpper()
ToLower() String.ToLower()
StartsWith() String.StartsWith()
Returns the word "true" or the word "false".
EndsWith() String.EndsWith()
Returns the word "true" or the word "false".

სწრაფი & ადვილი url კოდირება desktop კომუნალური

I’ve been needing to url-encode some strings this week and slapped together a a little utility that I thought I’d put up on SkyDrive for the community.

მიიღეთ ორობითი აქ: http://cid-1cc1edb3daa9b8aa.skydrive.live.com/self.aspx/SharePoint/WinUrlEncode.zip

მიიღეთ ვიზუალური სტუდიის გამოსავალი აქ: http://cid-1cc1edb3daa9b8aa.skydrive.live.com/self.aspx/SharePoint/WinUrlEncodeVS2005.zip

აქ ეკრანზე დარტყმას:

იმიჯი

სწრაფი და მარტივი: Embed ჰიპერბმულის შევიდა მონაცემთა ხედი ვებგვერდი ნაწილი XSLT

განახლების (01/17/08): ეს ბლოგი შესვლის საუბრობს უფრო ჰიპერბმულის XSL სიკეთე: http://www.sharepointsecurity.com/blog/sharepoint/sharepoint-2007-development/rewriting-links-in-search-results-xslt.

მიმოხილვა და მიზანი: I had created a simple bar chart to serve as component on a dashboard. I’ll save the details on building charts for another post, მაგრამ მე არ გამოგონება, რომ ტექნიკურად (არც კითხვის ნიშნის, თუ საქმე). It turned out there was a bug in the chart and while I fixed that, I took the opportunity to convert some labels into hyperlinks that pointed at the underlying list behind the graph. მაგალითად, there is a label with value "Hold". I wanted to turn the label into a hyperlink so that the user could click on it and drill down to the specific entries in the list whose status value is "Hold".

ნაბიჯი:

  1. გამოყენება ვიზუალური სტუდია SharePoint იცის Intellisense.
  2. ასლი DVWP ნახვა XSLT შევიდა ვიზუალური სტუდიაში (შექმნა ცარიელი პროექტი, დავამატებთ XSL ფაილი პროექტი).
  3. ასლი რგოლი გსურთ გამოიყენოთ შევიდა ბუფერში.
  4. ჩასვით უფლება მდებარეობა XSL.
  5. Convert URL argument separators on the query string from "&" to "&amp;"
  6. Url-encode ინდივიდუალური არგუმენტები.
  7. ძებნა რომ შიგნით <კონფერენცია…> </a>

მაგალითი:

მე მაქვს URL:

http://[სერვერზე]/[საიტი]/სიების / ღია% 20Positions/AllItems.aspx?ნახვა ={84EEA2F5-121B-40B7-946F-0FA704A1DAA1}&FilterField1 = recruiter&FilterValue1 = გამართავენ

I გარდაქმნას იგი შევიდა:

     <a კონფერენცია="სიების / ღია% 20Positions/AllItems.aspx?ნახვა =% 7b84EEA2F5-121B-40B7-946F-
0FA704A1DAA1% 7d&amp;FilterField1 = recruiter&amp;FilterValue1 = გამართავენ"> გამართავს: </a>

მე ხელით გარდაიქმნება პირველი არგუმენტი:

{84EEA2F5-121B-40B7-946F-0FA704A1DAA1}

to:

%7b84EEA2F5-121B-40B7-946F-0FA704A1DAA1% 7d

(ამ, ღია მუდმივი წინააღმდეგობა გაუწიოს გარდაქმნას აქ% 7 ბ და დახურვის მუდმივი წინააღმდეგობა გაუწიოს გარდაქმნას აქ% 7d)

მეორე და მესამე არგუმენტები’ პარამეტრების ("FilterField1=Recruiter" and "FilterValue1=გამართავს" შესაბამისად) არ საჭიროებს url-კოდირებით, რადგან არ შეიცავს რაიმე სახიფათო გმირები.

შენიშვნები:

ეს ტექნიკა უნდა ზოგადად მუშაობა სადმე გსურთ ხმა ჰიპერბმულებს XSLT სადაც ჰიპერბმულის მოიცავს პარამეტრების URL როგორიცაა:

http://[სერვერზე]/[საიტი]/სიების / ღია% 20Positions/AllItems.aspx?ნახვა ={84EEA2F5-121B-40B7-946F-0FA704A1DAA1}&FilterField1 = recruiter&FilterValue1 = გამართავენ

მე მივიღე URL თავად წვდომის საბაჟო სიაში და ხელით ფილტრაცია სტატუსის შესახებ სვეტი (labeled "Recruiter" ზემოთ).

სწრაფი და მარტივი: ჩართვა SharePoint დიზაინერი workflow განახლება InfoPath ფორმა

სცენარი: I have an InfoPath form that front-ends a workflow process implemented using SharePoint Designer. At one point, a manager must approve the form. მას შემდეგ, რაც მე არ შემიძლია იმედი workflow ისტორიის შეხვდება ჩემს აუდიტის მოთხოვნებს, I გადაწყვეტენ შესანახად საკუთარი აუდიტის გაგზავნა პირდაპირ ფორმით თავად.

მიმოხილვა:

დიზაინი ფორმა და აქვეყნებს მას, როგორც ინფორმაციის ტიპი and the form itself to a document library. Mark desired form fields as being updateable from MOSS. The form is tied to the content type and the content type is "attached" to ფორმები ბიბლიოთეკა (ან, თუ გსურთ). Write a workflow that updates the field.

კონკრეტული ნაბიჯები:

  1. Create a document library. This will hold your InfoPath template.
  2. Create a forms library.
  3. Create the InfoPath form. Include a text field, "Audit Message".
  4. გამოქვეყნების სახით, როგორც ინფორმაციის ტიპი (არც ამის დოკუმენტი).
  5. მიუხედავად იმისა, რომ შევსების საგამომცემლო დიალოგის:
    a) შენახვა. Xsn ფაილი დოკუმენტის ბიბლიოთეკა (დახევას #1).
    ბ) Publish the "Audit Message" საველე და ნიშნის ჭეშმარიტი: "Allow users to edit data in this field by using a datasheet or properties page".
    გ) შექმნა ახალი შინაარსით ტიპის და მისთვის შესაბამისი სახელი.
  6. ხელმისაწვდომობა ფორმები ბიბლიოთეკა.
    a) გადასვლა მოწინავე პარამეტრები და საშუალებას ფორმები ბიბლიოთეკა მართოს შინაარსი ტიპის.
    ბ) გსურთ ახლად შექმნილი ინფორმაციის ტიპი (5გ ზემოთ). It will be grouped under "Microsoft InfoPath" (ან მსგავსი).
    გ) Remove the default "Form" შინაარსი ტიპის იურიდიული ბიბლიოთეკა.
    დ) Mark the library to "show as web page" ისე, რომ ფორმა დაიწყება SharePoint და არა InfoPath სამუშაო კლიენტს.
  7. Go back to the forms library proper and click "New" უბრალოდ დარწმუნდით რომ ფორმით იქნება დამატებული სწორად და მოქმედებს როგორც გინდათ.
  8. სროლა up SharePoint დიზაინერი და ნავიგაცია საიტზე რომ მასპინძლობს თქვენს ფორმას ბიბლიოთეკა (საწყისი ნაბიჯი 2).
  9. შექმენით ახალი სამუშაო პროცესის ერთვის ფორმები ბიბლიოთეკა.
  10. Add a single action "Set Field in Current Item". You should expect SharePoint Designer to list your your field, "Audit Message". Assign it a value.
  11. დაწკაპეთ დასრულდება და დაბრუნდეს ფორმის ბიბლიოთეკა.
  12. Create a new form and put some test value into the "Audit Message" სფეროში.
  13. შენახვა და დაბრუნდეს ფორმის ბიბლიოთეკა.
  14. მარჯვენა click, select "Workflow" და დავიწყოთ თქვენი workflow.
  15. It should run almost immediately. Pull up the form (საწყისი ნაბიჯი 12) და თუ ყველა წავიდა დაგეგმვა, "Audit Message" უკვე დაავალა რაც არ უნდა მნიშვნელობა გათვალისწინებული ნაბიჯი 10.

შენიშვნები:

Not all controls may configured for this bi-directional communication. მაგალითად, it does not seem to implement an SPD workflow that modifies text fields wrapped inside repeating sections.

One of the key take-away’s here is that we’ve really created a content type with an associated template. This also enables us to store multiple InfoPath form templates in the same form library.

This requires forms server. It’s most certainly not going to work in a WSS 3.0 გარემოს და ალბათ კი მოითხოვს საწარმო SharePoint გარემო.

Beagle არ დაეშვა (ოქტომბერი 2007 საკითხი)

(ეს არის რეალურად ცოტა ძველი ამბების, მაგრამ, როგორც ჩემი საყვარელი სახანძრო დევიზით აცხადებს, "Better late than never").

შეამოწმეთ იგი out აქ: http://www.sharepointbeagle.com/

თუ თქვენ არა გაქვთ უკვე, be sure to sign up.

რა თქმა უნდა, be sure to read my article about a real-world SharePoint project (მათ შორის მოთხოვნების განმარტება, KPI-ს, შინაარსი ტიპის, dashboards and more) as well as my colleague’s article about the content query web part.

There’s lot of other good stuff too.

როგორ ამოიღონ “ყველა საიტი შინაარსი” ბმული

მე ვთხოვე ამ კითხვაზე თითქმის ყოველ კვირას, ჩვეულებრივ კონტექსტში უსაფრთხოების დისკუსია. An administrator/site creator has provisioned a site, კონფიგურაცია უსაფრთხოების, arranged web parts and customized the quick launch to provide that oh-so-perfect set of options to the end user. მაგრამ, იმ ყუთში, you can’t remove the "view all site content" ბმული.

Mark ვაგნერი უზრუნველყოფს პასუხი აქ (http://www.crsw.com/mark/Lists/Posts/Post.aspx?ID=36). მისი ჩაწერის-up არის შესანიშნავი ორ დონეზე. იგი იძლევა პასუხს კითხვაზე, "How do I remove the View All Site Content" ბმული? მაშინ, ეს შეესაბამება დაუყოვნებლივ შემდგომი on კითხვა: როგორ შემიძლია ადვილად საშუალებას ყველა საიტი შინაარსი ბმული საიტი-by-საიტი საფუძველზე?

პრემიის სახით: მისი მიდგომა მუშაობს WSS, არა მხოლოდ MOSS.

</ბოლო>

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