Nyaraka za kila mwezi: Novemba 2007

MOSS Inaeleza Me Column Jina langu ni zimehifadhiwa au Katika Matumizi … Lakini Siyo

UPDATE 12/04/07: Kuona hii Microsoft KB (http://support.microsoft.com/kb/923589) kwa habari kuhusiana.

Kweli, zinageuka ni, lakini tricksy MOSS alikuwa na kufanya ni vigumu.

My customer does some development work on his MOSS site over the weekend. It’s a bit of a jumble as to what he actually did, lakini matokeo ya mwisho ni hii:

  • He tries to add a site column called "Quantity" na MOSS majibu: "The column name that you entered is already in use or reserved. Choose another name."
  • He attempts to add it to another environment and that works. Kwa hiyo, "Quantity" si jina zimehifadhiwa.
  • He tries to find an existing site column named "Quantity" in that site collection. He cannot find it.

Mimi alifanya baadhi ya utafiti, and even some coding, akaongezeka falsafa na hatimaye kupatikana kwamba safu aitwaye Kiasi gani, kwa kweli, exist. It was in the "_Hidden" group. Hence, sisi hakuweza kupata hiyo kupitia interface user SharePoint.

Jinsi gani kufika huko? I do not know, lakini nina nadharia (au kama mke wangu bila kuiita, "blah blah blah"). Mahali fulani kwenye mstari, a Fabulous arobaini template was added and probably activated at a site in the site collection. It was then deactivated (au tovuti kuondolewa). The site column, hata hivyo, remained but in the "_Hidden" group. If someone knows better, tafadhali napenda kujua kupitia email au baada ya maoni katika.

SharePoint was telling the truth. It’s hardly worth pointing out that that message is not as helpful as it could be. It would be nice to see that message fork into two different messages in the future: 1) Kusema kwamba jina safu ni akiba au sio. 2) Kama siyo zimehifadhiwa, kuonyesha tovuti, au angalau kundi, ambapo jina safu tayari kutumika.

</mwisho>

Sasa Takwimu Via Orodha OM Desturi (au, Lakini nyingine OM Takwimu Displayor [kama YACC, lakini tofauti])

Leo, I spent a handful of hours tracking down the root cause behind the message "The column name that you entered is already in use or reserved. Choose another name."

safu katika swali inaweza kuundwa, ilifutwa na re-umba katika mazingira ya mwingine, so I knew it wasn’t a reserved name. Hata hivyo, I simply couldn’t find the column anywhere via the standard SharePoint user interface at any site in the site collection.

I posted to MSDN forums here and the indomitable Andrew Woodward pointed me in the direction of the underlying object model data.

I went off to codeplex to find some tools that would help me peer into the underlying OM data and help me locate the trouble.

I tried several tools and they were very cool and interesting but in the end, the UI wasn’t good enough for my purpose. I’m not criticizing them by any means, but clearly the tool-makers didn’t have my problem in mind when they created their UI :). Most people seem to be investing a fair amount of time and effort in creating workstation / client applications that provide tree views, right-click context menus and so forth. These are nice and all, but it’s a lot of work to create a top-of-the-line user experience that is also very flexible.

I really needed an answer to this problem. It occurred to me that if I could get all of the site columns in the site collection into a custom list, I could filter, sort and create views that would help me find this supposedly existing column (which it did, BTW). I went ahead and did that and an hour or two later, alikuwa tovuti yangu kila nguzo kubeba katika orodha ya desturi na kambi, sorting and so forth. I found my answer five minutes later.

Kama na wakati mimi mafanikio kuchukua juu ya dunia, I think I will decree that all SharePoint tools providers must seriously consider surfacing their object model data in a custom list. That way, Nina uwezo kutafuta njia yoyote nataka (unakabiliwa, bila shaka, kwa kiwango SharePoint makala).

SharePoint Designer Workflow Desturi Action — Kuhusu uchunguzi <Shamba Tie Designer Aina =”StringBuilder” … />

Tu uchunguzi wa haraka kwamba kuna tofauti muhimu sana kati ya ufafanuzi hizi mbili:

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

dhidi ya:

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

inaonyesha ya kwanza kama hii katika SPD:

picha

wakati mwisho inaonyesha kama hii:

picha

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 🙂

The observation is this: StringBuilder allows you to build a string (wazi) by mixing together string literals and workflow data (via the "Add Lookup" button in the lower left-hand corner). When you use the Add Lookup button, it inserts a token in the form "[%token%]". When SharePoint invokes your custom action, (C# code in my case), SharePoint passes the token itself, not the value of the token. If you use the default designer type (the second type), SharePoint expands the token and passes actual value of the token to your action.

StringBuilder = BAD, default designer type = GOOD.

Bila shaka, 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 (which incidentally is exactly what one does to create a dynamic subject for the email action, but that’s a subject for another blog entry, har har).

<mwisho />

Mapema Uamilisho Workflow — Solution zisizo za matibabu

UPDATE: Kuona huu mjadala MSDN, hasa kuingia mwisho: http://forums.microsoft.com/MSDN/showpost.aspx?postid=2631057&siteid=1. It describes a condition that may short circuit this whole thing. Kwa kifupi, inaweza kuwa rahisi kama kufanya angalau moja ya mashamba ya lazima.

Nina maktaba hati kwamba inasaidia bidhaa za aina nane.

I have a SharePoint Designer workflow that wants to calculate and assign a "reminder date" by simply subtracting 30 days from another column, "due date". This should only happen for one of the content types, "Insurance". The business objective is to produce a KPI that shows two categories of insurance documents: "about to expire" and "expired." (You can read more about this kind of KPI and more substantial drill-down hapa).

I have configured the workflow to fire when a new item is created and when an item is modified. The idea is that when an insurance document is uploaded, we calculate a "warning date" based on the expiration date. A pair of views work in connection with a KPI List to highlight these conditions when users hit their home page.

This strategy does not work when I upload a document.

I upload the document and I am presented with the meta data entry screen. Katika hatua hii, I’m already in trouble. SharePoint has already, prematurely from my perspective, fired the workflow. I haven’t had a chance to pick the correct content type nor assign a due date. Wakati huo huo, the workflow does not fire when I hit the submit button at this time. There’s some built-in logic that "believes" that first submit is part of the "create" event. Hivyo … my workflow has fired and when it executed, it was passed default meta data values.

The best work-around I know of is to insert a "pause until" activity in the workflow. I have the workflow pause for 1 minute. While it’s pausing, I select the correct content type, enter the meta data and submit. The pause completes and the workflow proceeds as needed. (Note that in my environment, timer workflow activities from SPD do not work out of the box. You may have the same trouble. Kuona hapa for more details).

I don’t like "magic delay" work-around. What happens if the user uploads a document and the phone rings and the ensuing conversation outlasts the pause? I can make the pause longer, but I still don’t like it.

I wrote about this on the MSDN forums here: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2430725&SiteID=1

SharePoint Usalama misingi ya Kwanza / Kuepuka Pitfalls Kawaida

UPDATE 12/18/07: Angalia makala Paulo Liebrand kwa ajili ya madhara ya baadhi ya kiufundi ya kuondoa au kubadilisha majina kundi default (kuona maoni yake hapa chini pamoja na).

Overview:

SharePoint security is easy to configure and manage. Hata hivyo, it has proven to be difficult for some first-time administrators to really wrap their hands around it. Not only that, I have seen some administrators come to a perfect understanding on Monday only to have lost it by Friday because they didn’t have to do any configuration in the intervening time. (Mimi kukubali kwa kuwa tatizo hili mimi mwenyewe). This blog entry hopefully provides a useful SharePoint security primer and points towards some security configuration best practices.

Muhimu Kumbuka:

This description is based on out of the box SharePoint security. My personal experience is oriented around MOSS so there may be some MOSS specific stuff here, but I believe it’s accurate for WSS. I hope that anyone seeing any errors or omissions will point that out in comments or email yangu. I’ll make corrections post haste.

Misingi:

Kwa madhumuni ya muhtasari huu, kuna nne kimsingi masuala ya usalama: watumiaji / vikundi, securable vitu, ruhusa ngazi na urithi.

Watumiaji na Vikundi kuvunja chini kwa:

  • Mtu binafsi watumiaji: Vunjwa kutoka saraka ya kazi au kuundwa moja kwa moja katika SharePoint.
  • Vikundi: Mapped directly from active directory or created in SharePoint. Groups are a collection of users. Groups are global in a site collection. They are never "tied" na kitu maalum securable.

Securable vitu kuvunja kwa angalau:

  • Maeneo ya
  • Kudhibiti maktaba
  • Mtu binafsi vitu katika orodha na maktaba hati
  • Folders
  • Mbalimbali BDC mazingira.

Kuna wengine securable vitu, lakini unaweza kupata picha.

Ruhusa ngazi: mzigo wa punjepunje / low level access rights that include such things as create/read/delete entries in lists.

Urithi: By default entities inherit security settings from their containing object. Sub-sites inherit permission from their parent. Document libraries inherit from their site. So on and so forth.

Watumiaji na vikundi yanahusiana na vitu securable kupitia ngazi ruhusa na urithi.

Muhimu Usalama Rules Kuelewa, Ever 🙂 :

  1. Vikundi ni tu makusanyo ya watumiaji.
  2. Vikundi ni wa kimataifa ndani ya ukusanyaji tovuti (i.e. hakuna kitu kama kundi maalum katika ngazi ya tovuti).
  3. Kundi jina bila kuzingatia, vikundi hawana, katika na wenyewe, have any particular level of security.
  4. Groups have security in the context of a specific securable object.
  5. Unaweza hawawajui ngazi mbalimbali ruhusa kwa kikundi kimoja kwa kila kitu securable.
  6. Mtandao maombi ya sera mbiu ya yote haya (angalia hapa chini).

Usalama watendaji waliopotea katika bahari ya kundi na nyimbo mtumiaji anaweza daima kutegemea imani za hawa kusimamia na kuelewa usalama wao Configuration.

Kawaida Pitfalls:

  • Kundi majina ya uongo kuashiria ruhusa: Nje ya boksi, SharePoint defines a set of groups whose names imply an inherent level of security. Consider the group "Contributor". One unfamiliar with SharePoint security may well look at that name and assume that any member of that group can "contribute" to any site/list/library in the portal. That may be true but not because the group’s name happens to be "contributor". This is only true out of the box because the group has been provided a permission level that enables them to add/edit/delete content at the root site. Through inheritance, the "contributors" group may also add/edit/delete content at every sub-site. One can "break" the inheritance chain and change the permission level of a sub-site such that members of the so-called "Contributor" kundi hawawezi kuchangia wakati wote, lakini tu kusoma (kwa mfano). This would not be a good idea, wazi, tangu itakuwa utata sana.
  • Vikundi si hufafanuliwa katika ngazi ya tovuti. It’s easy to be confused by the user interface. Microsoft provides a convenient link to user/group management via every site’s "People and Groups" kiungo. It’s easy to believe that when I’m at site "xyzzy" and I create a group through xyzzy’s People and Groups link that I’ve just created a group that only exists at xyzzy. That is not the case. I’ve actually created a group for the whole site collection.
  • Vikundi vya jumla haina kutofautiana na tovuti (i.e. ni sawa kila mahali kundi ni kutumika): Consider the group "Owner" na maeneo mawili, "HR" and "Logistics". It would be normal to think that two separate individuals would own those sites — an HR owner and a Logistics owner. The user interface makes it easy for a security administrator to mishandle this scenario. If I didn’t know better, Mimi ili kupata Watu na viungo Vikundi kupitia tovuti ya Utumishi, select the "Owners" group and add my HR owner to that group. A month later, Logistics comes on line. I access People and Groups from the Logistics site, add pull up the "Owners" group. I see the HR owner there and remove her, thinking that I’m removing her from Owners at the Logistics site. Kwa kweli, I’m removing her from the global Owners group. Hilarity ensues.
  • Kushindwa kwa jina makundi ya msingi ya jukumu maalum: The "Approvers" group is a perfect example. What can members of this group approve? Where can they approve it? Do I really want people Logistics department to be able to approve HR documents? Of course not. Always name groups based on their role within the organization. This will reduce the risk that the group is assigned an inappropriate permission level for a particular securable object. Name groups based on their intended role. In the previous HR/Logistics scenario, Mimi lazima tumemuumba makundi mawili mpya: "HR Owners" and "Logistics Owners" na kuwapa ruhusa ngazi busara kwa kila mmoja na kiasi cha chini zinazohitajika kwa watumiaji hao kufanya kazi zao.

Nyingine muhimu Marejeo:

Kama wameweza kuifanya hii mbali:

Please let me know your thoughts via the comments or email me. If you know other good references, tafadhali kufanya hivyo!

Tags technorati:

Haraka na Easy: Kujenga Data Mtandao View Sehemu ya (DVWP)

Kuna utajiri wa habari kubwa kwenye WSS 3.0 Takwimu View Mtandao Sehemu ya (DVWP) on the web from several sources. Hata hivyo, I found it to be surprisingly difficult to find information on this first very basic step. Here is another article in the "quick and easy" mfululizo kulishughulikia.

Fuata hatua hizi ili kujenga data mtandao mtazamo sehemu (DVWP). They are based on an "Announcements" mtandao sehemu, lakini kuomba orodha ya wengi.

  1. Kujenga mtandao Matangazo sehemu na kuongeza kwa tovuti.
  2. Kufungua tovuti katika SharePoint Designer.
  3. Kufungua default.aspx tovuti.
  4. Select the Announcements web part and right-click.
  5. Kutoka orodha ya mazingira, select "Convert to XSLT Data View".

SharePoint Designer notifies kwamba tovuti hii sasa umeboreshwa kutoka tovuti ufafanuzi wake. Hiyo si lazima mbaya, lakini kuna athari muhimu (utendaji, kuboresha, wengine) which are beyond the scope of this little "Quick and Easy" kuingia. To get more information on this subject, Mimi kupendekeza vitabu vyote viwili hapa kama vile Internet yako tafuta favorite.

Kuthibitisha kwamba alifanya kwa usahihi:

  1. Karibu na re-kufungua kivinjari (to avoid accidentally re-posting the original "add a new web part").
  2. Select the web part’s arrow drop-down and choose "Modify Shared Web Part" kutoka orodha ya.
  3. jopo chombo kuufungua na haki.
  4. jopo imebadilika kutoka kawaida yake kuweka chaguzi hii:
picha

“Hawawezi kupata schema orodha safu mali kutoka orodha SharePoint” — maelezo / kazi-arounds

Wiki hii, sisi hatimaye kuzalishwa tatizo kwamba alikuwa kuripotiwa kwa mtumiaji kijijini: Alipojaribu kuuza nje yaliyomo ya orodha ya kuutumia, mambo ingekuwa wanaonekana kuanza kufanya kazi, lakini basi Excel ingekuwa pop up kosa: "Cannot get the list schema column property from the SharePoint list". She was running office 2003, windows XP and connecting to MOSS.

I searched Internets na kuona baadhi ya uvumi lakini hakuna 100% definitive. Hence, hii post.

tatizo: Kusafirisha maoni kuutumia kwamba ina tarehe (tarehe = data aina ya safu).

Nini kazi kwa ajili yetu: Convert the date to a "single line of text". Kisha, kubadilisha nyuma ya tarehe.

That solved it. It was nice to see that the conversion worked, kweli. It was quite nervous that converting things this way would fail, but it did not.

Mdudu hii ina kutupwa kivuli kubwa zaidi ya aina tarehe data katika akili ya mteja, hivyo sisi ni kwenda kutafuta jibu slutgiltig kutoka Microsoft na hopefully mimi itabidi baada na update hapa katika kipindi cha pili cha muda mfupi na jibu yao rasmi na taarifa hotfix.

Rejea nyingine:

http://www.kevincornwell.com/blog/index.php/cannot-get-the-list-schema-column-property-from-the-sharepoint-list/

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2383611&SiteID=1

<mwisho>

Kujiunga na blog yangu.

Tags technorati: ,

Haraka na rahisi: Kutuma barua pepe na hyperlink iliyoingia kutoka SharePoint workflow Designer

Mara moja au mara mbili kwa mwezi, mtu posts swali jukwaa: "How do I include hyperlinks to URL’s that are clickable from a SharePoint Designer email?"

Kuwasilishwa bila maoni zaidi: (vizuri, kweli kuna zaidi maoni baada ya picha):

picha

Becky Isserman ifuatavyo na maelezo muhimu ya jinsi ya embed kiungo kwa bidhaa katika barua pepe: http://www.sharepointblogs.com/mosslover/archive/2007/11/20/addition-to-paul-galvin-s-post-about-sending-an-e-mail-with-hyperlinks-in-spd.aspx

Mpya kutolewa: SharePoint Designer Workflow upanuzi (kamba kudanganywa kazi)

UPDATE: Kuona hapa kwa mawazo yangu juu ya kibiashara ya mradi huu: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

Nimekuwa busy kazi katika mradi wangu Codeplex ambayo kwa sasa kulenga kutoa upanuzi kudanganywa kamba workflows kuundwa kupitia Designer SharePoint.

Angalia hapa kwa maelezo:

Mradi wa nyumbani: http://www.codeplex.com/spdwfextensions

Kutolewa: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

Toleo 1.0 ni pamoja na zifuatazo makala mpya:

Kazi Description (kama si sawa kama Net kazi.)
Num-entries() Returns the number "entries" in a string as per a specified delimiter.

Kwa mfano: Num-entries in a string "a,b,c" with delimiter "," = 3.

Kuingia() Returns the nth token in a string as per a specified delimiter.
Urefu String.Length
Nafasi() String.Replace()
Ina() String.Contains()
Returns the word "true" or the word "false".
Substring(kuanza) String.Substring(kuanza)
Substring(kuanza,urefu) String.Substring(kuanza,urefu)
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".

BDC Runtime kosa alielezea

Mimi unasababishwa kosa BDC wiki hii kuwa wazi yenyewe juu ya interface user na katika 12 mzinga logi katika Runtime.

Kwanza, hii alionekana katika interface user:

Hakuweza kupata mashamba ya kuingiza Maadili kila kitambulisho kwa usahihi nitafanya MethodInstance SpecificFinder na Jina … Kuhakikisha kuwa pembejeo Vigezo TypeDescriptors kuhusishwa na kila Kitambulisho defined kwa Entity hii.

Hapa ni risasi screen:

clip_image001

Mimi naweza pia kusababisha ujumbe huu kuonekana katika 12 mzinga logi katika mapenzi (using my patented high-tech-don’t-try-this-at-home "mysterious errors" njia):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C SharePoint Portal Server Business Data 6q4x High Exception in BusinessDataWebPart.OnPreRender: System.InvalidOperationException: Thamani Kitambulisho ”, Aina ya ”, ni batili. Expected Identifier value of Type ‘System.String’. saa Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Kitu[] subIdentifierValues, LobSystemInstance lobSystemInstance) saa Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Chombo chombo, Kitu[] userValues, LobSystemInstance lobSystemInstance) saa Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(View desiredView) saa Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() saa Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

I searched karibu na kupatikana inaongoza katika baadhi ya MSDN jukwaa, but they weren’t enough for me to understand what I was doing wrong. I watched a webcast by Ted Pattison kwamba yangu kampuni ina squirreled mbali juu ya server na alikuja kutambua tatizo langu.

Katika ADF yangu, Mimi kuunganisha na database SQL kama inavyoonekana:

            <Mali Jina="RdbCommandText" Aina="System.String">
              <![CDATA[
                CHAGUA
                      , CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      NCHI, ADDRESS1, ADDRESS2, ADDRESS3, ADDRESS4, CITY, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      COUNTY, HALI, Postal, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, SIMU, UTVIDGNING, Faksi, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG
                 (nolock)
                WAPI
                  (LEAs <> 'SHARE') na
                  (kupunguza(CARRIER_ID) >= Chini(@ MinID)) na
                  (kupunguza(CARRIER_ID) <= Chini(@ MaxId)) na
                  (kupunguza(DESCR) KAMA chini(@ InputDescr))
                ]]>
            </Mali>

Mimi nilikuwa zinazotolewa kwamba SQL kutoka mtu DBA na mimi nina aliyopewa kuelewa kwamba ni maalum view they created just for me. The unique key there is CARRIER_ID.

Hapa ni mdudu Mimi ilianzisha:

      <Vitambulisho>
        <Kutambua Jina="CARRIER_ID" TypeName="System.String" />
        <Kutambua Jina="DESCR" TypeName="System.String" /> 
</Vitambulisho>

Mahali fulani kwenye mstari, Mimi alikuwa imeweza kuwachanganya mwenyewe juu ya maana ya <Vitambulisho> and added DESCR even though it’s not actually an identifier. I took DESCR out of the identifiers set and presto! Ni wote kazi.

I hope this saves someone some grief 🙂

Tags technorati: , , ,